Windows-Server-2008-R2

SPN、Kerberos 和 IIS

  • June 7, 2012

我有一個 MyWebServer 的 dns 別名,它指向執行 iis 7.5 的 win 2008 r2 機器的 ip。我為域使用者設置了正確的 HTTP spn,該使用者有權使用 kerberos 委託給指定的 HTTP Web 服務。

IIS 在頂層配置為使用核心模式身份驗證和使用 AppPoolCredentials。

iis 框上的主應用程序在具有我的域使用者身份的應用程序池下執行。該應用程序按預期工作,發出正確的 kerberos 票證,並且該應用程序能夠完美地委派 Windows 使用者身份。

然而,還有其他應用程序使用相同的 IIS 網站,但使用作為網路服務執行的不同應用程序池。所有應用程序都設置為僅使用 Windows 身份驗證(匿名關閉)。

每當我在 IE 中點擊這些應用程序之一時,都會提示我登錄。輸入正確的域憑據會在 3 次登錄嘗試後導致 401 錯誤。Web 伺服器被 IE 辨識為在本地 Intranet 區域中,並且 IE 被配置為自動登錄到該區域中的伺服器。在點擊這些應用程序時,我也會收到一張有效的 kerberos 票,即使它們自己永遠不需要這張票。

現在,當我將應用程序池標識設置為其他應用程序的域使用者並執行 IISreset 時…應用程序按預期工作。

現在,我的問題是……這是預期/預期的嗎?

我是否無法在 IIS 網站中執行混合應用程序,該網站已使用使用域使用者帳戶的 SPN 進行設置?我以前使用 HTTP/alias Machine spn 混合了類似這樣的網站,但到目前為止,我一直在努力使用 HTTP/alias 域/使用者設置。


編輯:布倫特的答案是正確的。我發現了這篇微軟文章,它稍微詳細說明了。 http://support.microsoft.com/kb/871179

服務的 SPN 只能與一個帳戶關聯。因此,如果您使用此建議的解決方案,則在不同域使用者帳戶下執行的任何其他應用程序池都不能僅用於集成 Windows 身份驗證。


如果您有多個在不同域使用者帳戶下執行的應用程序池,要解決此問題,如果您只想使用集成 Windows 身份驗證,則必須強制 IIS 使用 NTLM 作為您的身份驗證機制。

聽起來不錯,網路服務帳戶對您的域沒有權限,因此它無法進行身份驗證……至少聽起來像它正在做的事情。

一旦您彈出域憑據,應用程序池現在在對 AD 進行呼叫時擁有使用者的權限,在這種情況下最終會進行身份驗證。

引用自:https://serverfault.com/questions/396428