Windows

有人可以在不過度簡化的情況下解釋 Windows 服務主體名稱 (SPN) 嗎?

  • January 13, 2020

我現在已經與服務原則名稱進行了幾次角力,而微軟的解釋還不夠。我正在配置一個 IIS 應用程序以在我們的域上工作,看起來我的一些問題與我需要在執行託管我的站點的應用程序池的 Windows 服務帳戶上配置 http 特定 SPN 有關。

所有這一切讓我意識到我只是沒有完全了解服務類型(MSSQL、http、主機、termsrv、wsman 等)、Kerberos 身份驗證、活動目錄電腦帳戶 (PCName$)、Windows 服務帳戶、SPN 之間的關係,以及我用來嘗試訪問服務的使用者帳戶。

有人可以在不過度簡化解釋的情況下解釋 Windows 服務主體名稱 (SPN) 嗎?

創造性類比的獎勵積分會與經驗豐富的系統管理員/開發人員產生共鳴。

服務主體名稱是來自Kerberos. 它是身份驗證域中特定主機提供的特定服務的標識符。SPN 的常用形式是service class/ fqdn@ REALM(例如IMAP/mail.example.com@EXAMPLE.COM)。還有一些使用者主體名稱user以@ REALM(或user1/ user2@ REALM,它標識代言關係)的形式標識使用者。可以鬆散地認為是服務的service class協議。Microsoft 的這篇文章中列出了Windows 內置的服務類列表。

每個 SPN 都必須在密鑰分發中心 (KDC) 中註冊REALM頒發服務密鑰。該setspn.exe實用程序\Support\Tools位於 Windows 安裝媒體的文件夾中或作為資源工具包下載,用於將 SPN 分配給電腦或 AD 中的其他帳戶。

當使用者訪問使用 Kerberos 進行身份驗證的服務(“Kerberized”服務)時,他們會出示從 KDC(在 Windows 環境中為 Active Directory 域控制器)獲得的加密票證。票證使用服務密鑰加密。通過解密票證,服務證明它擁有給定 SPN 的密鑰。在 Windows 主機上執行的服務使用與 AD 電腦帳戶關聯的密鑰,但要符合 Kerberos 協議,必須為主機上執行的每個使用 Kerberos 的服務將 SPN 添加到 Active Directory 中——除了上面提到的那些內置 SPN。在 Active Directory 中,SPN 儲存在servicePrincipalName主機電腦對象的屬性中。

有關詳細資訊,請參閱:關於 SPN 的 Microsoft TechNet 文章Ken Hornstein 的 Kerberos 常見問題解答

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