André Warnier wrote:
Rainer Jung wrote:
On 11.06.2010 23:21, Savoy, Melinda wrote:
I am working in my local Eclipse development environment on a Windows XP box. (As stated in a previous post, I was able to get authentication working in the Windows 2003 environment after talking to a MS IIS engineer)

I just got off of a phone call with another IIS engineer at Microsoft regarding the authentication issue again that I am getting Windows XP and we spotted something interesting in the ISAPI log and wanted to run it by you guys.

I've now setup my IIS and browser in Windows XP to FORCE NTLM authentication and I am getting in the request, per the ISAPI log, the credentials that it passes from IIS to Tomcat.

What is interesting is that it would appear that from the ISAPI log that the AJP is returning a 401 code to the browser and therefore executing a Windows Login prompt. Please see bolded/red type below.


This kind of "graphic highlighting" does not usually work on mailing lists, which tend to be "pure text". If you want to highlight something, it is better to insert some blank lines and a comment.

Below is a copy of the entries in my ISAPI log and wanted to get any input on WHY it would appear that the redirector is returning a 401 status back to my IE or Firefox browser(?):

Because it receives a 401 response form your web application in Tomcat and forwards the response as is to the client. So why is your web application sending a 401?

By "application", understand the complete webapp stack, including any servlet filters which may be configured there.

A 401 is not an error. It is the normal response of the server, in the NTLM protocol, when trying to access a protected resource. My guess in this case and at this point, is that it is the "legacy filter" (jCIFS-based) which sits on top of the webapp, and which does not check if the request is already authenticated, but returns a 401 right away. Is that a possibility ?

As an addendum, here is a link to a document which explains the NTLM authentication handshake :
http://www.innovation.ch/personal/ronald/ntlm.html
The "NTLM Handshake" section at the beginning summarises what must happen. As you can see, there are 2 consecutive server responses containing a 401 "HTTP status" (not an error per se, they are a normal part of the protocol).

However, if I follow correctly, in your case, this handshake has already taken place once before, between the browser and IIS. Then IIS is satisfied, and forwards the request to Tomcat, via mod_jk, including a user-id.

If there is a further NTLM authentication layer at the Tomcat level, it should recognise that the request is already authenticated, and not start yet another handshake. But apparently it doesn't, and does start another NTLM handshake sequence (with the first 401 response of the sequence). That probably confuses the browser, because it has already gone through the sequence, and is already sending an "Authorization:" header with its request. And that is probably why the browser now pops up its "Basic authentication" login dialog. Basically what the browser is thinking is : "oh, my NTLM authentication doesn't work ! Let's try a Basic authentication then."

Just another note : mod_jk (or the isapi_redirector) knows *nothing* of NTLM, nor of any authentication protocols. It just passes information back and forth between IIS (or Apache) and Tomcat. It does not add or subtract any HTTP headers, and does not modify the request nor the response content. The only thing it does in terms of authentication, is that if the webserver has a user-id for a request, it forwards this user-id from the webserver to Tomcat.




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to