我可以向客户表明支持SPNEGO但NTLM不支持HTTP请求吗?

Sco*_*ell 6 ntlm kerberos spnego www-authenticate negotiate

微软利用我目前所知的两个WWW-Authenticate新增功能

  • NTLM
  • 谈判

如果从服务器发送Negotiate,则基于一组条件将使用Kerberos

  • 内联网区域
  • 使用主机名而不是IP访问服务器
  • IE中的集成Windows身份验证已启用,主机在Firefox中受信任
  • 服务器不是浏览器的本地服务器
  • 客户端的Kerberos系统通过域控制器进行身份验证

然后将在服务器和客户端之间尝试Kerberos,如果不满足上述条件,则将尝试NTLM.

我的问题是,是否有一些方法让服务器指示不应该发送NTLM?我目前通过跟踪会话中的请求来处理这个问题,如果收到NTLM消息,它会在其余的会话生命周期中禁用Kerberos和WWW-Authenticate.

dav*_*pcj 3

初始WWW-Authenticate标头仅指定negotiate. 它不能再说什么,例如“no NTLM”

我认为可以使用第二个标头响应客户端发送的第一个 Authenticate: {Base64 NTLMSSP} 标头,401 unauthorized第二个Negotiate标头可以包含响应令牌,可能包括SupportedMechanisms指定仅 Kerberos 的令牌。

但我怀疑这只会让你失望"unauthorized",因为它首先又回到了 NTLM。