我遇到了一個讓我發瘋的問題。我試圖在Windows Server 2012作爲活動目錄服務器,Ubuntu 12.04以apache作爲web服務器和Windows 7筆記本電腦作爲客戶端(所有3個在同一本地網絡上)的組合上實現單點登錄。我想我已經成立了一切正確的:瀏覽器發送NTLM票證而不是Kerberos票據
我做了AD-服務器上的密鑰表文件,並在Web服務器上使用從kinit命令這個時候我沒有得到任何錯誤,我可以證實,之後使用klist接收kerberos票。
我已經在web服務器上的krb5.conf文件中設置了AD-realm,並且由於kinit的工作原理,我認爲這是正確的。
受保護目錄我測試的是設定在apache2.conf如下:
的Kerberos進行AuthType
KrbMethodNegotiate在
KrbMethodK5Passwd在
KrbAuthRealms ADREALM.LOCAL
Krb5KeyTab的/ etc/apache2的/測試。密鑰表
KrbServiceName NameOfSPNInKeyTabFile
需要有效的用戶筆記本電腦已經被添加到AD服務器,登錄後有3個KerbTickets在執行klist時列出。
我已經將Web服務器的IP地址添加到IE 11(包括http和https)中的可信站點列表中。
不過,當我嘗試訪問Web服務器上的受保護站點時,我不斷收到一個要求登錄名和密碼的框。當我輸入這些信息時,我會通過身份驗證並訪問該網站。
使用WireShark我可以認爲,當客戶端詢問身份驗證時,客戶端首先發送NTLM票據。由於Web服務器期望kerberos票證失敗,並且瀏覽器回退到簡單的身份驗證請求登錄名和密碼。收到這些信息後,Web服務器會聯繫AD服務器並驗證憑據。所以身份驗證的作品 - 只是單一登錄失敗。
所以最大的問題是:爲什麼瀏覽器在這種情況下發送NTLM票據?我已經用ie,firefox和chrome測試過了,它們都返回一張NTLM票據。我嘗試過不同的SPN名稱組合,但都有相同的結果。是否有一些我錯過的命名約定或者其他可能的錯誤?
可能與此問題無關,但在多森林環境中,請不要忘記KFSO。我寫了我的解決方案[這裏](http://stackoverflow.com/a/36625744/594137)。 –