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

fir*_*ire 34 authentication header http-authentication http-headers

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

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

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

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Run Code Online (Sandbox Code Playgroud)

我会用什么来进行谈判?

Cha*_*ith 40

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

  • 401(未授权)响应标头 - >请求认证标头

  • 这是几个WWW-Authenticate响应标头.(完整列表位于IANA:HTTP身份验证方案.)

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

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

但是,因为WWW-Authenticate: Negotiate基于Kerberos的身份验证应该是这种情况.


小智 31

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

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

  • NTLM
  • 或Kerberos.

看到:

  • 在我正在使用的其中一个应用程序中,ADFS服务器在响应中响应两个WWW-Authenticate头字段,其值为WWW-Authenticate:Negotiate WWW-Authenticate:NTLM第一个带"Negotiate"的头是什么意思?从提琴手那里可以找出最终使用的身份验证协议? (2认同)
  • 太旧的评论了。为未来的读者回复。您可以检查 fiddler 以验证正在使用哪种身份验证机制。我认为您的服务器启用了 Kerberos 和 NTLM 身份验证。从 fiddler 中,您可以轻松验证正在使用哪种身份验证。检查浏览器对 401 质询的响应标头(这是请求标头)。如果其中包含 Authorization: NTLM + token,则它是 NTLM 身份验证。如果是授权:协商+令牌,则应该是 kerberos。注意 NTLM 有多个 401 挑战。 (2认同)