Hi!

Last two days I have been learning and debugging NTLM on the latest
version of wget from cvs (1.10-alpha2+cvs-dev). Mainly I have debugged
on linux, but noticed same problems occurs on win32 too. During testing
I found four bugs, that needs to be fixed. 

On previous threads I noticed that you had problem to find test server
for NTLM-testing. If you need, I can provide IIS-6.0 server for testing
NTLM. Just let me know, so I will set it up.

1:NTLM Domain is not written right
in http-ntlm.c line ~420

usr = strchr(user, '\\');
if (!usr) usr = strchr(user, '/');

if (usr) {
  domain = usr; // Sets pointer to '\' or '/'. Should be: domain = user;
  domlen = usr - domain;
  usr++;
}

2: NTLM auth stops to early.
in http.c there is variable auth_tried_already and test

        if (auth_tried_already || !(user && passwd)) ...

Now when trying, wget tries first basic auth and gets back

        WWW-Authenticate: NTLM

in response header. wget send first phase of authentication fine on next
request and gets result 401 and

        WWW-Authenticate: NTLM TlRMT...

in response header. Now wget should send next request with NTLM type-3
message, which contains final authentication information. I made an
dirty-hack-hack-fix to get ahead on testing. Then I found next problem.

3: NTLM type-3 message might be invalid, because server sends 401 and

        WWW-Authenticate: NTLM

if response header. My testserver is Microsoft-IIS/6.0. 


4: Error on response header handling
Microsoft-IIS/6.0 sends actually 2 WWW-Authenticate rows in header

        ...
        WWW-Authenticate: Negotiate
        WWW-Authenticate: NTLM
        ...

This causes that authentication scheme is never recognized.

        resp_header_strdup (resp, "WWW-Authenticate")

gives returns first 'WWW-Authenticate'-value and it is 'Negotiate'.
Problem do not occur on all IIS-server.




I'm newbie on taking part in open source projects, so hope these
descriptions of the problems was clear enough.

Thanks before

Sami

Reply via email to