我試圖在我們正在開發的Intranet應用程序上實現SSO。我正在使用SPNEGO。現在我在配置SSO時遇到了一些麻煩,希望這裏有人能夠幫助我。SSO身份驗證,響應總是NTLM
的設置是這樣的:
- Linux服務器與Tomcat來服務於內聯網應用
- Windows Server 2008作爲域控制器(Active Directory)
- 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),但不支持降級。
所以我做錯了什麼,但是在我花了一天的時間擺弄配置和策略之後,我無法弄清楚它是什麼。
希望得到一些迴應。
將其更改爲FQDN,但問題仍然存在。謝謝你的幫助! – pderaaij
您的反向記錄是否正確?你把服務器領域放到了可信區域嗎?你用Wireshark分析了流量嗎? –
我正在使用Wireshark進行掃描,但我認爲我沒有足夠的知識直接查看問題所在。 可以肯定,我們有相同的解釋。你有什麼意思與反向記錄? – pderaaij