2012-12-18 32 views
1

我試圖在我們正在開發的Intranet應用程序上實現SSO。我正在使用SPNEGO。現在我在配置SSO時遇到了一些麻煩,希望這裏有人能夠幫助我。SSO身份驗證,響應總是NTLM

的設置是這樣的:

  1. Linux服務器與Tomcat來服務於內聯網應用
  2. Windows Server 2008作爲域控制器(Active Directory)
  3. Windows 7客戶端與IE9和Firefox

當我打開Intranet應用程序時,我看到從客戶端到Tomcat服務器的GET請求。 Tomcat服務器和SpnegoFilter的第一個響應是401未授權,這是正確的,因爲客戶端需要進行身份驗證。

806 6.117724 192.168.65.50 192.168.65.50 HTTP 284 HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Negotiate\r\n 

然後客戶端的響應是一個帶有標誌NTLMSSP_NEGOTIATE的GET請求。在這裏它打破了。我不期待NTLM的迴應,而是一個kerberos/spnego迴應。不知何故,我只是不知道如何發送正確的響應到tomcat服務器。

808 6.123277 192.168.65.50 192.168.65.50 HTTP 637 GET/HTTP/1.1 , NTLMSSP_NEGOTIATE 

默認NTLM不支持SPNEGO,所以我讓我的日誌以下條目:

java.lang.UnsupportedOperationException:指定NTLM。降級爲基本身份驗證(和/或SSL),但不支持降級。

所以我做錯了什麼,但是在我花了一天的時間擺弄配置和策略之後,我無法弄清楚它是什麼。

希望得到一些迴應。

回答

0

Kerberos不適用於IP,請使用完全限定的域名。

+0

將其更改爲FQDN,但問題仍然存在。謝謝你的幫助! – pderaaij

+0

您的反向記錄是否正確?你把服務器領域放到了可信區域嗎?你用Wireshark分析了流量嗎? –

+0

我正在使用Wireshark進行掃描,但我認爲我沒有足夠的知識直接查看問題所在。 可以肯定,我們有相同的解釋。你有什麼意思與反向記錄? – pderaaij

1

您是否註冊過SPN並且是加入的客戶端域? WWW-Authenticate:Negotiate會告訴網絡瀏覽器嘗試kerberos。瀏覽器根據地址欄中的URL將該請求提交給操作系統(SSPI)。 AD中必須有一個SPN用於URL。正如其他人指出的那樣,在您的URL中使用IP更復雜,但可以完成。如果您的客戶端未加入域,則需要額外的配置才能使其與您的AD KDC聯繫。 Firefox也需要額外的設置。用IE解決這個問題,消除這個問題,當問題解決後他們回到FF。