我正在尝试访问 Windows 身份验证背后的服务。我以为我可以像传递 HTTP 基本身份验证凭据一样传递凭据,但它不起作用。当我执行以下操作时,我收到 401 错误,我绝对确定密码是正确的。
curl --user username:password http://example.com
为什么这不起作用?
我正在尝试访问 Windows 身份验证背后的服务。我以为我可以像传递 HTTP 基本身份验证凭据一样传递凭据,但它不起作用。当我执行以下操作时,我收到 401 错误,我绝对确定密码是正确的。
curl --user username:password http://example.com
为什么这不起作用?
如果您使用的是 Windows 身份验证,则需要使用 NTLM:
curl --ntlm --user username:password http://example.com
您还可以将用户名和密码字段留空 ( -u :
),curl 将使用您当前环境中的凭据:
curl --ntlm -u : http://example.com
根据文档(下-u, --user
)
如果您使用启用了 Windows SSPI 的 curl 二进制文件并执行 Kerberos V5、Negotiate、NTLM 或 Digest 身份验证,那么您可以通过使用此选项指定单个冒号来告诉 curl 从您的环境中选择用户名和密码:“-u :” .
我只想补充一点,授权可能包括几个重定向,并且第二个或后续请求可能需要 NTLM 身份验证,但不是第一个。在这种情况下,这里的答案将不起作用。
问题是,CURL仅使用第一个请求发送凭据,而您可能需要它们用于第二个请求。要通过所有请求传递凭据,请使用该--location-trusted
选项。
来自 CURL 文档(-L
选项):
使用身份验证时,curl 仅将其凭据发送到初始主机。如果重定向需要 curl 到不同的主机,它将无法拦截用户+密码。另请参阅 --location-trusted 以了解如何更改此设置。
这份重要说明帮助我在公司网站上进行了授权。希望对其他人有所帮助。
我和你有同样的问题,但是我通过调整 iis 服务器配置来进行身份验证,启用 HTTP 基本或摘要身份验证,完成后,你可以使用最简单的身份验证,对不起我的英语不好