2012-09-13 33 views
0

我有一個場景,其中託管在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都能正常工作。

+0

您是否在wireshark中檢查Safari是否發送可委託/可轉發票證? –

+0

Safari確實發送了令牌,但它是基於NTLM的令牌。是否需要對Safari執行任何配置才能使其正常工作?順便說一句,Firefox和Chrome的作品。 – communista

+0

如果Safari在Windows上使用SSPI併發送NTLM令牌,則Kerberos設置將中斷。我已經在Stackoverflow上多次回答過這類問題。請搜索,您會找到解決方案。 –

回答

0
  1. 簽入Wireshark是否Safari發送可委託/可轉發票證。
  2. 你能夠直接訪問後端服務嗎?憑證委託,我猜這張票不可委託? Safari必須要求這一點。 Firefox和IE做的。傳遞的NTLM令牌是來自服務器的令牌。 NTLM沒有代表團的支持。目標主機有問題。
0

看着Wireshark的蹤跡,似乎Safari正在請求一個不可轉發的Kerberos票證。由於此標誌,Kerberos票證不會轉發/委派給下一個躍點,導致身份驗證回退到NTLM並失敗。

將它與IE,Firefox和Chrome請求的TGS請求進行比較,它們都具有可轉發標誌集。

我也嘗試在Mac OS X中執行klist -F來檢索可轉發的票證,但Safari仍會請求單獨的不具有可轉發標記的票證。

這使我得出的結論是,Safari上的Mac 支持代表團不支持

+0

感謝您的更新。你應該向蘋果提交一個bug。在Firefox中,您可以控制是否需要授權。假設您的目標主機有資格進行委派。您可能會讚揚我的意見。 –

+0

我似乎無法註釋評論,當我將鼠標懸停在您的評論上時,我看不到箭頭。是因爲我的代表嗎? – communista

+0

這可能是原因。我已經把主要部分的答案。我的第一個評論已經假定了錯誤。 –