Active-Directory

SPN 和 Kerberos 委派

  • May 27, 2013

我想檢查一下我的理解。這是一個完全假設的場景,因為我目前正在學習認證。

我有一個帶有基本網站的 IIS 應用程序池,它從 SQL 後端訪問數據。我想設置 Kerberos 身份驗證並因此設置委派。

執行該站點的 AppPool 的身份是IISApp01並且將 SPN 設置為HTTP/IISSRV01.serverfault.local

現在,這一切都很好,但是我在 Active Directory 中的哪個位置設置委派選項,在託管 IIS 應用程序池的電腦對像或IISApp01作為 AppPool 身份的使用者帳戶上。誰會將憑據委託給我的 SQL Box?那麼 - 我如何將服務添加到我允許委託的受限服務列表中?

謝謝!

短版:您在 AD 使用者和電腦中該主體的委派選項卡上為剛剛配置 SPN 的安全主體(即使用者或電腦)設置委派選項。

加長版:不,不,不!

您不想設置 Kerberos 身份驗證並因此設置委派。這些是獨立的概念,彼此獨立。

您可以使用 Kerberos 進行身份驗證,而無需委託任何內容。事實上,開箱即用,Windows 2008 的 IIS 7 及更高版本附帶預設配置,這意味著任何使用其真實主機名的單個域成員框都將能夠執行 Curb 身份驗證。請參閱“核心模式身份驗證”,以及劇透!您需要將其關閉才能使您的方案按照您所描述的那樣工作*。

遏制委派要求使用一個主體來終止一個經過 Kerberos 身份驗證的躍點,然後代表原始請求安全主體(使用者)執行另一個。

回到解決方案:

因此,對於 PC -> IIS -> SQL,您需要確定每個程序的執行對象:

PC(使用者)-> IIS(應用程序池帳戶(IISApp01))-> SQL(服務帳戶(“SQLService”))

在這種情況下,每個帳戶都必須是域使用者帳戶,並且為簡單起見,您需要在相關網站的 Windows 集成身份驗證選項中禁用核心模式身份驗證。

然後,您需要辨識每個躍點使用的 SPN,並確保它已向每個躍點註冊:

PC(使用者)無關緊要

IIS 層:SETSPN -S IISApp01 http/name.used.by.client(這不是自動的)

SQL 層:SETSPN -S SQLService mssql/name.used.by.iis.app:1433(這可能是自動的)

然後,您應該有一個可用於 IISApp01 的委派選項卡,您可以在該選項卡上指定 IISApp01 受信任以進行約束委派(搜尋,選擇 SqlService,然後選擇針對 SqlService 註冊的適當 SPN)。

有一個名為 DelegConfig 的網站/程序可以幫助您將這些東西映射出來。

*不完全正確;有很多解決方案。

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