40

我正在尝试访问受密码保护的网站。它没有使用基本身份验证(即使在 Firefox 中弹出相同的用户/密码框),因为响应标头是WWW-Authenticate: Negotiate.

我想通过发送正确的标题来自动化登录过程。

基本上你会使用类似的东西:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

我会用什么来谈判?

4

2 回答 2

56

将这些信息放在这里是为了将来读者的利益。

  • WWW-Authenticate: Basic-> 授权:基本 + 令牌 - 用于基本身份验证
  • WWW-Authenticate: NTLM-> 授权:NTLM + 令牌(2 个挑战)
  • WWW-Authenticate: Negotiate-> 授权:协商 + 令牌 - 用于 Kerberos 身份验证
    • 顺便说一句:IANA 有这样一个愤怒的评论Negotiate这种身份验证方案违反了 HTTP 语义(面向连接)和语法(使用与 WWW-Authenticate 和 Authorization 标头字段语法不兼容的语法)。

只有在您的 401 质询中Authorization: Basic也有标头时,您才能设置标头。WWW-Authenticate: Basic

但是既然你有WWW-Authenticate: Negotiate这应该是基于 Kerberos 的身份验证的情况。

于 2014-11-06T03:27:25.250 回答
35

Web 服务器提示您输入 SPNEGO(简单且受保护的 GSSAPI 协商机制)令牌。

这是 Microsoft 的一项发明,用于协商一种用于 Web SSO(单点登录)的身份验证:

  • NTLM
  • 或 Kerberos。

看:

于 2010-12-23T00:20:49.463 回答