2014-02-19 79 views
0

我遇到了一個讓我發瘋的問題。我試圖在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名稱組合,但都有相同的結果。是否有一些我錯過的命名約定或者其他可能的錯誤?

+0

可能與此問題無關,但在多森林環境中,請不要忘記KFSO。我寫了我的解決方案[這裏](http://stackoverflow.com/a/36625744/594137)。 –

回答

0

我已經這樣做了,但是與我們的AD管理員合作。他們從來沒有真正清楚AD方面需要什麼黑魔法,但是需要某種'域名信任'。這種信任是爲了讓Web客戶端首先發送 GSSAPI證書。我們花了幾個星期才弄明白這一點。

我們的配置和你之間的一個區別是

KrbMethodK5Passwd關

你也應該知道你的AD結構之外的Windows客戶端,得到這個工作幾乎是不可能的。如果他們有外部IP地址,我使用mod_rewrite指導他們到基於表單的登錄。對於初始GSSAPI版本失敗的客戶端使用類似的重定向。

您可能會在此網頁上找到一些其他提示。

https://weblogin.stanford.edu/config.html

+0

可以肯定 - 域名信任必須位於web服務器(apache)和AD服務器之間?任何想法如何使這種信任? – Bjarke

+0

是的,在AD服務器端有一些強制客戶端首先發送GSSAPI而不是NTLM的魔術配置。我不知道它是什麼。也許在Apache服務器的SPN上有一些神奇的配置? –

2

我發現的DNS是問題。我將網絡服務器添加到AD服務器上的DNS上,然後在打開筆記本電腦頁面時轉移了kerberos票據。