我正在尝试访问受密码保护的网站。它没有使用基本身份验证(即使在 Firefox 中弹出相同的用户/密码框),因为响应标头是WWW-Authenticate: Negotiate
.
我想通过发送正确的标题来自动化登录过程。
基本上你会使用类似的东西:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
我会用什么来谈判?
我正在尝试访问受密码保护的网站。它没有使用基本身份验证(即使在 Firefox 中弹出相同的用户/密码框),因为响应标头是WWW-Authenticate: Negotiate
.
我想通过发送正确的标题来自动化登录过程。
基本上你会使用类似的东西:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
我会用什么来谈判?
将这些信息放在这里是为了将来读者的利益。
WWW-Authenticate
响应头。(完整列表位于 IANA:HTTP 身份验证方案。)WWW-Authenticate: Basic
-> 授权:基本 + 令牌 - 用于基本身份验证WWW-Authenticate: NTLM
-> 授权:NTLM + 令牌(2 个挑战)WWW-Authenticate: Negotiate
-> 授权:协商 + 令牌 - 用于 Kerberos 身份验证
Negotiate
:这种身份验证方案违反了 HTTP 语义(面向连接)和语法(使用与 WWW-Authenticate 和 Authorization 标头字段语法不兼容的语法)。只有在您的 401 质询中Authorization: Basic
也有标头时,您才能设置标头。WWW-Authenticate: Basic
但是既然你有WWW-Authenticate: Negotiate
这应该是基于 Kerberos 的身份验证的情况。
Web 服务器提示您输入 SPNEGO(简单且受保护的 GSSAPI 协商机制)令牌。
这是 Microsoft 的一项发明,用于协商一种用于 Web SSO(单点登录)的身份验证:
看: