2009-01-28 150 views
6

两个WWW身份验证添加微软利用了,我目前知道的是我可以向客户指出支持SPNEGO但NTLM不支持HTTP请求吗?

  • NTLM
  • 协商

如果协商从服务器下发的基础上,一组条件的Kerberos将用于

  • Intranet区域
  • 访问使用主机名的服务器而不是IP
  • 集成Windows身份验证在IE浏览器中启用,主机是可信的Firefox
  • 服务器是不是本地的浏览器
  • 客户端的Kerberos系统验证到域控制器

然后Kerberos将尝试在服务器和客户端之间,如果上面的东西不满足,那么将尝试NTLM。

我的问题是,有没有办法让服务器指出NTLM不应该发送?我目前通过跟踪会话中的请求来处理此事,并且如果收到NTLM消息,则会在该会话的其余时间禁用Kerberos和WWW-Authenticate。

+0

由于授权问题,您是否禁用NTLM? – 2009-03-03 03:48:04

+0

不,这只是我目前不支持的Tomcat JAAS插件。它仅支持Kerberos/SPNEGO。 – 2009-03-05 19:13:52

回答

2

最初的WWW-Authenticate标题只指定negotiate。它不能再多说什么了,比如“no NTLM”

我认为这是可能的,以所述第一身份验证响应:由客户端与401 unauthorized和第二Negotiate头中发送的Base64 {NTLMSSP}头,其可以包括一个响应令牌,可能包括一个SupportedMechanisms仅指定的Kerberos。

但我怀疑只会让你"unauthorized",因为它首先倒退到NTLM。

+0

我会研究这个。 Kerberos/SPNEGO降级的大多数情况都是因为Kerberos在Windows桌面上出现故障或环境配置错误导致的。有一些非常任意的,没有记录的要求IE必须通过NTLM来完成Kerberos。 – 2009-06-11 18:00:09

+0

@ScottMarkwell我已经注意到了这一点,但它会很高兴让IE提示凭据,甚至可能直接获得服务票据而不是降低NTLM后备路线。 – davenpcj 2013-07-21 21:26:27

1

你可以这样做,(至少在理论上)是的。 IE可能会做很奇怪的事情,比如发送Kerberos令牌没有适当的SPNEGO ASN.1封装,但是,这是一个不同的主题。在符合SPNEGO(http://tools.ietf.org/html/rfc4178#section-4.1)的实施中,您可以做到这一点。

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

3

是的,你可以。查看SPNEGO HTTP Servlet Filter项目的reference docs