我正在尝试访问Windows身份验证背后的服务。我以为我可以通过HTTP基本身份验证凭据传递的方式传递凭据,但它不起作用。当我执行以下操作时,出现401错误,我完全确定密码是否正确。
curl --user username:password http://example.com
为什么这不起作用?
答案 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:”。
答案 2 :(得分:1)
我只是想补充一点,授权可能包含多个重定向,第二个或后续请求可能需要NTLM身份验证,但不是第一个。在这种情况下,这里的答案将不起作用。
问题是,CURL仅使用第一个请求发送凭据,而您可能需要它们作为第二个请求。要传递包含所有请求的凭据,请使用IDisposable
选项。
来自CURL文档(-L
option):
使用身份验证时,curl仅将其凭据发送到初始主机。如果重定向将curl转移到其他主机,则它将无法拦截用户+密码。另请参阅--location-trusted有关如何更改此内容。
这个重要的说明帮助我在我的公司网站上进行了授权。希望能帮到别人。
答案 3 :(得分:0)
我遇到了同样的问题,但我通过调整iis服务器配置进行身份验证,启用HTTP基本身份验证或摘要身份验证,完成后,您可以使用最简单的身份验证,抱歉我的英文不好