WWW-Authenticate的身份验证问题:协商

时间:2010-11-24 10:55:16

标签: authentication header http-headers http-authentication

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

我希望通过发送正确的标头来自动执行登录过程。

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

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

我会用什么来进行谈判?

2 个答案:

答案 0 :(得分:37)

将此信息放在此处以供将来读者使用。

  • 401 (Unauthorized) response header - >请求身份验证标题

  • 以下是几个WWW-Authenticate response headers。 (完整列表位于IANA:HTTP Authentication Schemes。)

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

只有在401挑战中还有Authorization: Basic标题时,您才可以设置WWW-Authenticate: Basic标题。

但是,由于您有WWW-Authenticate: Negotiate,因此基于Kerberos的身份验证应该是这种情况。

答案 1 :(得分:28)

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

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

  • NTLM
  • 或Kerberos。

请参阅: