English 中文(简体)
我可以向客户表示SPNEGO支持HTTP请求,但NTLM不支持吗?
原标题:
  • 时间:2009-01-28 23:53:21
  •  标签:

我目前了解到的微软使用的两个WWW-Authenticate添加是:

  • NTLM
  • Negotiate

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

  • Intranet Zone
  • Accessing the server using a Hostname rather then IP
  • Integrated Windows Authentication in IE is enabled, the host is trusted in Firefox
  • The Server is not local to the browser
  • The client s Kerberos system is authenticated to a domain controller

如果上面的条件不符合,那么服务器和客户端之间将尝试使用Kerberos,否则将尝试使用NTLM。

我的问题是,服务器是否有一种方式指示不应发送NTLM?我目前通过在会话中跟踪请求来处理此问题,如果接收到NTLM消息,则禁用Kerberos和WWW-Authenticate,直到该会话结束。

最佳回答

最初的WWW-Authenticate标头仅指定negotiate。它不能说更多的话,比如"没有NTLM"

我认为可以对客户端发送的第一个Authenticate: {Base64 NTLMSSP}标题作出回应,回应为401未授权和第二个Negotiate标题,其中可能包括一个响应令牌,可能包括指定仅使用Kerberos的SupportedMechanisms

但我怀疑这只会给你“未授权”的消息,因为一开始就是降级到NTLM的。

问题回答

是的,你可以。请查看SPNEGO HTTP Servlet Filter项目的参考文档

你可以做到这一点,(至少在理论上)是的。IE可能会做出完全奇怪的事情,比如发送Kerberos Tokens而没有适当的SPNEGO ASN.1封装,但好吧,那是另一个话题。在符合SPNEGO(https://www.rfc-editor.org/rfc/rfc4178#section-4.1)实现中,您可以做到这一点。

如果您可以操纵NegTokenInit的mechTypes成员,仅包含Kerberos,则会强制客户端发送Kerberos或无法进行身份验证。





相关问题
热门标签