我目前知道的Microsoft使用的两个WWW-Authenticate添加项是
如果从服务器向下发送协商,则将基于一组条件使用Kerberos
然后,将在服务器和客户端之间尝试使用Kerberos,如果不满足上述要求,则将尝试使用NTLM。
我的问题是,服务器是否可以通过某种方式表明不应发送NTLM?我目前通过跟踪 session 中的请求来处理此问题,如果收到了NTLM消息,它将在该 session 的剩余时间内禁用Kerberos和WWW-Authenticate。
最佳答案
初始WWW-Authenticate
header 仅指定negotiate
。它不能说更多,例如“no NTLM”。
我认为可以用401 unauthorized
和第二个Negotiate
header 响应客户端发送的第一个Authenticate:{Base64 NTLMSSP} header ,该 header 可以包含响应 token ,可能还包括指定Kerberos Only的SupportedMechanisms
。
但是我怀疑那只会给你"unauthorized"
,因为它最初是回到NTLM的。
关于kerberos - 我可以向客户端指示支持SPNEGO但NTLM不支持HTTP请求吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/489950/