Internet explorer Internet explorer随每个请求发送kerberos票证,即使启用了持久身份验证

Internet explorer Internet explorer随每个请求发送kerberos票证,即使启用了持久身份验证,internet-explorer,iis,iis-7,kerberos,Internet Explorer,Iis,Iis 7,Kerberos,我有一个内部网站点,托管了具有windows身份验证的IIS 7,配置为接受协商。我还将配置设置设置为使用每连接Kerberos非NTLM身份验证: <system.webServer> <security> <authentication> <windowsAuthentication authPersistNonNTLM="true" /> </authentication> <

我有一个内部网站点,托管了具有windows身份验证的IIS 7,配置为接受协商。我还将配置设置设置为使用每连接Kerberos非NTLM身份验证:

 <system.webServer>
   <security>
     <authentication>
       <windowsAuthentication authPersistNonNTLM="true" />
     </authentication>
   </security>
 </system.webServer>
现在,Chrome使用Kerberos票证正确地进行一次身份验证,然后在后续请求中不发送任何授权头

但是,Internet Explorer确实会在每个请求中发送一个大的Kerberos票证。服务器正在发回正确的Persist Auth:true头。所以IE应该知道不要麻烦预先验证。在64位Windows 7上,至少可以在IE9和IE10中观察到这种行为

这种行为还有其他原因吗?有办法解决吗

另外请注意,我在IIS7上使用内核模式,没有虚拟目录安全性

如果我有IE9/IE10与NTLM连接,它不会预先验证哪一种行为是正确的


我希望有一些神奇的头,我可以手动添加到我的服务器响应,使IE将正常运行

好吧,看来问题出在小提琴手身上。也许fiddler和我们内部网的一些奇怪的东西结合在一起?我不知道这里的全部情况

但是,当Fiddler捕获流量时,每个IE请求都具有如上所述的Kerberos票证。在Fiddler未运行的情况下,IE的行为是Chrome,并且每次连接到web服务器时只发送一次票据

我发现这一点是通过在Fiddler运行和不运行的情况下运行netsh跟踪实现的


也许在检查Kerberos身份验证时,最好不要使用Fiddler。如果有人知道更多这方面的情况,我会很感激你的教育。

好吧,看来问题出在小提琴手身上。也许fiddler和我们内部网的一些奇怪的东西结合在一起?我不知道这里的全部情况

但是,当Fiddler捕获流量时,每个IE请求都具有如上所述的Kerberos票证。在Fiddler未运行的情况下,IE的行为是Chrome,并且每次连接到web服务器时只发送一次票据

我发现这一点是通过在Fiddler运行和不运行的情况下运行netsh跟踪实现的


也许在检查Kerberos身份验证时,最好不要使用Fiddler。如果有人知道更多这方面的信息,我将非常感谢您的教育。

您没有提到您正在为intranet站点使用哪种URL-您是否使用了主机名或DNS别名?它是一个简短的netbios名称还是完全限定的名称?在使用这些不同类型的URL时,您是否注意到相同的行为?您是否检查了fiddler中那些额外的头文件是否真的是Kerberos,或者SPNEGO是否正在退回到NTLM

Fiddler实际上是一个代理服务器;它只能拦截您的流量,因为它以代理身份向WinInet注册。CNAMEs和代理以一种复杂的方式与Kerberos交互,这使得很难看到真正发生了什么。使用CNAME,IE实际上会为主机名创建一个Kerberos票证请求。在混合中添加代理将进一步更改此行为。 如果这是您遇到的问题,那么它是特定于Microsoft产品的,这就是您发现现代浏览器工作正常的原因

通过执行连线跟踪,您做了正确的事情,因为使用代理对Kerberos进行故障排除不是一个好主意

旧bug,但可能相关 因为.Net也有这个问题。
您没有提到您正在为intranet站点使用哪种URL—您使用的是主机名还是DNS别名?它是一个简短的netbios名称还是完全限定的名称?在使用这些不同类型的URL时,您是否注意到相同的行为?您是否检查了fiddler中那些额外的头文件是否真的是Kerberos,或者SPNEGO是否正在退回到NTLM

Fiddler实际上是一个代理服务器;它只能拦截您的流量,因为它以代理身份向WinInet注册。CNAMEs和代理以一种复杂的方式与Kerberos交互,这使得很难看到真正发生了什么。使用CNAME,IE实际上会为主机名创建一个Kerberos票证请求。在混合中添加代理将进一步更改此行为。 如果这是您遇到的问题,那么它是特定于Microsoft产品的,这就是您发现现代浏览器工作正常的原因

通过执行连线跟踪,您做了正确的事情,因为使用代理对Kerberos进行故障排除不是一个好主意

旧bug,但可能相关 因为.Net也有这个问题。
我不记得使用CNAME/ANAME/FQDN/IP地址时的不同行为。。。我知道我测试了所有这些,但最终需要Kerberos为最终用户使用CNAME。在我看来,特别奇怪的是Kerberos确实与CNAME一起工作,它没有退回到NTLM,但IE没有使用持久身份验证行为。。。但是,我相信很多事情在中间的代理中不太好,教训,谢谢。 请记住,如果我使用CNAME/ANAME/FQDN/IP地址,则会出现不同的行为。。。我知道我测试了所有这些,但最终需要Kerberos为最终用户使用CNAME。在我看来,特别奇怪的是Kerberos确实与CNAME一起工作,它没有退回到NTLM,但IE没有使用持久身份验证行为。。。但我确信很多事情在中间的代理中不太好,教训,谢谢。