Date: Mon, 16 May 2011 14:37:39 +0100
From: David Woodhouse <dw...@infradead.org>
To: Daniel Stenberg <dan...@haxx.se>
Cc: libcurl development <curl-library@cool.haxx.se>,    Ibraheem
    <ibraheempi...@yahoo.com>
Subject: Re: problems using negotiate with sspi in 7.21.6
Message-ID: <1305553061.8008.23.ca...@i7.infradead.org>
Content-Type: text/plain; charset="UTF-8"

On Fri, 2011-05-13 at 00:05 +0200, Daniel Stenberg wrote:
>> > 3) If Negotiate fails using kerberos, then it should fallback to ntlm, 
>> > which 
>> > is not working at all here
>> 
>> libcurl actually doesn't fall back to another auth. It picks the one auth 
>> type 
>> it thinks is best out of the ones the server offers and if that fails, the 
>> request fails. Why would it fall back and do another try?

>In Windows environments it seems quite common for Kerberos support to be
>*claimed* but not actually functional. We need to fall back to NTLM in
>that case.

>IE and Firefox get this right, I believe, but Chrome does not:
>http://code.google.com/p/chromium/issues/detail?id=82646


But as far as i understood this fall back scenario. In negotiate protocol the 
API's(SSPI) for generating the context will choose of falling to NTLM token or 
Kerberos token  automatically(of course it may depend on what client 
capabilities are, it has access to sspn or not...), and that token will go 
under the same Negotiate Header. As in our case the IIS server is using 
Negotiate protocol and we are setting to use any Auth method in libcurl. Now if 
the client computer is outside the domain, it will not be able to access 
sspn(server principle name) and hense can't generate kerberos token. So the 
token that SSPI will generate will be an NTLM token and it will be sent under 
the header of Negotiate, and the server will respond accordingly as in NTLM 
auth, but the libcurl Negotiate implementation treats the negotiate protocol as 
one cycle and if that fails it will fail, but in this case of it's an NTLM two 
cycle authentication, so that fails in libcurl.
 So the problem mainly is not that of falling back to NTLM protocol if 
negotiate fails, but working of negotiate protocol in libcurl with ntlm type 
token is lacking. If i'm wrong here kindly explain.......
Thanks and anxiously waiting for the comments....
-regards
Ibraheem
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to