我有一個場景,其中託管在IIS 7/Windows 2008中的ASP.NET MVC 3 Web應用程序正在從另一個服務器訪問WCF Web服務,在IIS/Windows 2008中.KCD在兩臺服務器之間建立,我也設置了必要的SPN。無法通過Web應用程序通過使用Kerberos約束委派通過Safari訪問後端WCF服務
我已經證實在IE中工作。使用NetMon,我也證實KCD正在後端工作。我的網絡應用程序正在計算機帳戶(網絡服務)下運行,並且爲該計算機帳戶相應地設置了SPN。問題是,當我在我的兩個Windows和Mac OS X(獅子)的機器,我得到一個401錯誤未經授權使用Safari瀏覽器:
HTTP請求是未經授權的客戶端身份驗證方案「協商」。從服務器收到的驗證頭是'Negotiate,NTLM'。
看着NetMon,它失敗了,因爲對WCF Web服務的請求正在回落到NTLM。
請注意,Windows和Mac機器都是我們域的一部分,並且我在兩臺機器上都使用了相同的Windows憑據。
我知道Safari支持Kerberos身份驗證,但在從我的Web應用程序委派給WCF服務時似乎存在問題。這是Safari還是WCF的問題?
在此先感謝!
更新:
在Mac上的Safari,當我第一次訪問Web應用程序,我可以在Wireshark的和的NetMon看到有一個有效的Kerberos令牌沿HTTP請求傳遞(我沒有得到401未經授權的錯誤)。但是當我的Web應用程序嘗試訪問後端Web服務時,我可以在特定的HTTP請求中看到傳遞的令牌現在是NTLM令牌。
我使用basicHttpBinding和TransportCredentialOnly作爲安全模式 - 我還在web.config中指定了後端Web服務的端點(後端Web服務服務器的HTTP/FQDN)的SPN標識。 Windows身份驗證當然在兩個IIS站點上啓用,並且「啓用內核模式」處於打開狀態,並且在兩個站點的appHost.config上將useAppPoolCredentials設置爲true。再次,這僅僅是在Mac上的Safari瀏覽器,Firefox和Chrome都能正常工作。
您是否在wireshark中檢查Safari是否發送可委託/可轉發票證? –
Safari確實發送了令牌,但它是基於NTLM的令牌。是否需要對Safari執行任何配置才能使其正常工作?順便說一句,Firefox和Chrome的作品。 – communista
如果Safari在Windows上使用SSPI併發送NTLM令牌,則Kerberos設置將中斷。我已經在Stackoverflow上多次回答過這類問題。請搜索,您會找到解決方案。 –