为什么cURL不能在IIS7上使用Windows身份验证?

时间:2012-08-23 14:55:57

标签: curl windows-authentication

我正在尝试访问Windows身份验证背后的服务。我以为我可以通过HTTP基本身份验证凭据传递的方式传递凭据,但它不起作用。当我执行以下操作时,出现401错误,我完全确定密码是否正确。

curl --user username:password http://example.com

为什么这不起作用?

4 个答案:

答案 0 :(得分:40)

如果您使用的是Windows身份验证,则需要使用NTLM:

curl --ntlm --user username:password http://example.com

答案 1 :(得分:23)

您也可以将用户名和密码字段留空(-u :),curl将使用您环境中的当前凭据:

curl --ntlm -u : http://example.com

根据docs-u, --user下)

  

如果您使用启用Windows SSPI的curl二进制文件并执行Kerberos V5,   谈判,NTLM或摘要认证,然后你可以告诉curl   通过指定从您的环境中选择用户名和密码   带有此选项的单个冒号:“ - u:”。

     

Kerberos-Enabled Binaries

答案 2 :(得分:1)

我只是想补充一点,授权可能包含多个重定向,第二个或后续请求可能需要NTLM身份验证,但不是第一个。在这种情况下,这里的答案将不起作用。

问题是,CURL仅使用第一个请求发送凭据,而您可能需要它们作为第二个请求。要传递包含所有请求的凭据,请使用IDisposable选项。

来自CURL文档(-L option):

  

使用身份验证时,curl仅将其凭据发送到初始主机。如果重定向将curl转移到其他主机,则它将无法拦截用户+密码。另请参阅--location-trusted有关如何更改此内容。

这个重要的说明帮助我在我的公司网站上进行了授权。希望能帮到别人。

答案 3 :(得分:0)

我遇到了同样的问题,但我通过调整iis服务器配置进行身份验证,启用HTTP基本身份验证或摘要身份验证,完成后,您可以使用最简单的身份验证,抱歉我的英文不好