Active-Directory

IIS 如何知道要為 kerberos 使用哪個 AD 伺服器/域?

  • October 16, 2020

我目前正在設置一個 IIS Web 應用程序。對於身份驗證,我使用帶有 Kerberos 的集成 Windows 身份驗證。但我對所有 AD、Windows 身份驗證和 Kerberos 的東西有點陌生。我讓我的應用程序按我的意願執行,但有一件事我不明白。

IIS 如何知道在驗證 Kerberos 票證時使用哪個 Active Directory Server?在我的開發環境中,它很清楚:它可能使用我登錄的域的 AD。但是當我將軟體部署給客戶時,沒有人會登錄,電腦將啟動並且 IIS 啟動 Web 應用程序。它如何知道在哪裡驗證 Kerberos 票證?沒有人在伺服器電腦上登錄,因此沒有帳戶域。

客戶端是否傳輸其域資訊?IIS 是否有自己的域帳戶?伺服器機器在沒有使用者登錄的情況下也知道它的域嗎?

somehow the server has to know whether the presented ticket from the client is valid.

不必要。

在 Kerberos 的 Microsoft Active Directory 實現中,特權和角色(組成員資格)儲存在稱為特權屬性證書 (PAC) 的 Kerberos 令牌的一部分中。當一個令牌呈現給另一個系統或程序時,PAC 會被評估以確定它們是否具有訪問權限,通常通過組成員身份進行。

Windows 可以驗證 PAC。這通常作為完整性檢查來執行,以確保它不是偽造的。但是,PAC 驗證旨在在特定情況下發生,例如,當受委託進行委派的應用程序嘗試重用已在本地記憶體的模擬或委派使用者的 Kerberos 票證時。

如果執行了 PAC 驗證,Windows Netlogon 服務只需將 PAC 驗證請求發送到本地域控制器,如下所述:

4.2 Kerberos PAC 驗證

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-apds/1d1f2b0c-8e8a-4d2a-8665-508d04976f84

PAC 驗證

但是,如果程序具有充當作業系統的一部分權限,則可能不會進行 PAC 驗證。請注意,如果 IIS 使用集成身份驗證並對已驗證的使用者執行委派級別的模擬,則可能需要具有作為作業系統的一部分的權限。

此外,如果您只是對使用者進行身份驗證並使用他們的令牌組授予訪問權限而不是模擬他們的令牌,則可能不會發生 PAC 驗證。

更多資訊:

https://techcommunity.microsoft.com/t5/azure-active-directory-identity/why-won-t-pac-validation-turn-off/ba-p/243144

https://web.archive.org/web/20081201072315/http://blogs.technet.com/ad/archive/2008/01/21/dude-where-s-my-pac.aspx

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