2016-12-27 121 views
0

在我们的Kerberos设置中,当我们的应用程序URL使用IE 11访问时,Kerberos票证不与请求一起发送。 但是,当兼容模式(在兼容性视图中显示Intranet站点)打开时,Kerberos票证将被发送并且身份验证正常工作。我们正在使用IE 11. 使用开发人员工具时,用户代理字符串从默认更改为Internet Explorer 10,然后也可以使用。Kerberos票证仅在IE中的兼容模式打开时发送

身份验证在Chrome上始终正常工作。

更新: 我们在wireshark上观察到流量,发现当兼容模式为OFF时,服务器不会对客户端进行协商提出挑战。 但是,当兼容性打开时,服务器通过发送401响应来挑战客户端。

任何指针,非常感谢。

+0

嗨。您如何知道在IE兼容模式下Kerberos票据未发送到Web服务器?在客户端上,您是否使用网络监视工具或使用命令_klist tickets_进行了验证? –

+0

是的。我通过调试服务器端验证了这一点。当兼容模式打开时,只有在这种情况下票证才会在服务器端收到。 –

+0

也使用klists和kinit命令验证。 –

回答

0

最后我们确定了确切的根本原因以及解决方案。

根本原因:
我们使用CAS 3.5.3实施的Kerberos。该库维护用户代理列表;确切地说是User-Agent字符串的子字符串。 此列表用于检查浏览器是否兼容Kerberos身份验证。

有在用户改变IE 11的代理字符串参见由IE 11发送(在非兼容模式)没有得到支持此Link

的用户代理字符串由CAS执行3.5.3我们是使用。

从两个请求(IE 11兼容模式ON和OFF)用户代理字符串之间的区别如下:
随着ON
的Mozilla/4.0(兼容的兼容性; MSIE 7.0; Windows NT的10.0; WOW64 ;三叉戟/ 8.0; .NET4.0C; .NET4.0E)

随着兼容性OFF
的Mozilla/5.0(Windows NT的10.0; WOW64;三叉戟/ 7.0; RV:11.0)等壁虎

第一个用户代理由库处理(它搜索支持的用户代理列表中的'MSIE'),而另一个则由于它不包含单词'MSIE'而被丢弃。 IE 9/10没有发生这个问题,因为它们相应的用户代理包含字符串'MSIE'。

解决方案:
由cas3.5.3维护的用户代理的列表被覆盖并且对应于IE11的用户代理的条目被添加到它。 现在请求获得处理的属性并且Kerberos登录正常工作。

我希望这将有助于其他开发人员在cas库上工作。