SPN 和 Kerberos 委派
我想檢查一下我的理解。這是一個完全假設的場景,因為我目前正在學習認證。
我有一個帶有基本網站的 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 的網站/程序可以幫助您將這些東西映射出來。
*不完全正確;有很多解決方案。