-
Notifications
You must be signed in to change notification settings - Fork 315
Git for Windows and NTLM authentication #171
Comments
I have to admit that my point of view was a little biased.
So far.. is there a way to force git to use WWW-Authenticate == NTLM ? |
Have you tried with Vagrant? If it works with Vagrant, it is not a Windows-specific issue, and I'd like to ask you to take the issue to [email protected], i.e. the Git mailing list (non-Windows). |
I've not yet installed Vagrant, but on a linux system I'm getting a similar behavior. |
I have encountered the same problem in my setup (git hosted in IIS via WebGitNet, only Windows Authentication enabled in IIS). I don't remember exactly, but I believe it started happening with Git for Windows 1.8.3 (1.8.1.2 did not exhibit that problem), when libcurl was updated to 7.3.0. I used a server side workaround - in IIS Windows authentication settings, I removed all authentication providers except NTLM. Since the server was not part of a domain, forcing NTLM did not lower security, as Kerberos would not have been available anyway. |
It would be really helpful if we could create a test case to reproduce the problem. Although I guess the number of publically accessible NTLM capable servers is limited ;) |
me to :( |
the problem is curl, a call with --anyauth, from git, will check for the safest method to communicate. if the server provides more then on, in my example negotiate and basic, curl tooks negotiate. but negotiate (kerb5) is not always possible and so the request fails. in thise case, curl should take next mechanism to authenticate. |
Just to clarify, Negotiate != Kerberos. "Negotiate" should automatically pick the most secure protocol supported by both client and server, Kerberos in a domain (Active Directory) environment, NTLM outside of a domain. That's why it's called Negotiate :) |
All these comments would make excellent additions to the report... upstream... |
yes, the fail in my example is ntlm negotiate, curl does not implemented it... http.c of curl if(data->state.negotiate.state == GSS_AUTHSENT) { |
Again, please add your comments to the upstream-discussion, not here. |
I think that an extra comment could be useful in this thread: I have been able to use git for windows to authenticate against a HTTP How? Using the git-credentials-winstore ( This gives implicitly the answer to the thread, and solves the problem on I'm not aware of a equivalent solution for Linux. On Fri, Apr 25, 2014 at 3:37 PM, Erik Faye-Lund [email protected]:
|
I've got a problem with git and NTLM authentication:
libcurl detects an
Authentication problem
and it doesn't continue the authentication process.More in detail:
I type my command line:
git push origin master
url
url
url
url
, NTLMSSP_NEGOTIATEIf I type a command line like the following
curl -u domain\user:password url --ntlm
I get the desired content.
In the network traces, I see that the exchanges looks like
url
, NTLMSSP_NEGOTIATEurl
, NTLMSSP_AUTH, user: domain\userI'm not behind a proxy.
I'm using git for windows, 1.9.2-msysgit.
I'm typing exactly the same credentials, thus this should not constitue a problem.
What am I doing wrong? Is Git supposing something wrong?
The text was updated successfully, but these errors were encountered: