2016-12-27 68 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庫上工作。