Claims to Windows Token Service (c2WTS) 概觀

是 Windows® Identity Foundation (WIF) 的功能,會從非 Windows 安全性權杖 (例如 SAML 和 X.509 權杖) 中擷取 UPN 宣告,並且產生模擬層 Windows 安全性權杖。 如此即可讓信賴憑證者 (RP) 應用程式模擬使用者。 當存取 RP 應用程式執行所在電腦外部的後端資源 (如 SQL Server) 時,可能會需要這項功能。

是 Windows 服務,會安裝為 WIF 的一部分。 不過,基於安全性的理由, 會限於以選擇加入為基礎執行。 它必須手動啟動,並且以本機系統帳戶執行。 除此之外,系統管理員必須手動設定 中允許的呼叫者清單。 根據預設,此清單是空的。 如需相關資訊,請參閱 HOW TO:從 c2WTS 要求權杖。WIF 會使用 IPC 叫用 ,而 不會開啟任何網路連接埠。

如果您的 RP 應用程式是以本機系統帳戶執行,則不需要使用 。 不過,如果您的 RP 應用程式是以網路服務帳戶執行,或者是例如 ASP.NET 應用程式,則可能需要使用 存取另一部電腦上的資源。

假設您的 Web 伺服器陣列包含執行 ASP.NET 應用程式的伺服器,而該應用程式會存取位於後端伺服器上的 SQL 資料庫。 您想讓此應用程式具備宣告感知特性。 不過,應用程式無法使用接收自 STS 的宣告存取 SQL 資料庫, 而是使用 將 UPN 宣告轉換成 Windows 安全性權杖。 如此即可讓它如以往般存取 SQL 資料庫

(請注意,為了允許應用程式存取其他伺服器上的資源,網域管理員必須將 Active Directory 設定為啟用限制委派。 如需如何啟用限制委派的相關資訊,請參閱 HOW TO:在 ASP.NET 2.0 中使用通訊協定轉換和限制委派 (英文))。

注意

如果已啟用 ,且繫結為 Cookie 模式的安全交談,則 將用來再次從已序列化至安全交談 Cookie 內的 UPN 生成 Windows 身分識別。 這表示,如果 已啟用但未正確設定,則驗證可能在切換 Cookie 模式和工作階段模式安全交談時失敗。

如何使用 c2WTS 取得 Windows 安全性權杖

使用 的方式有兩種:mapToWindows 或 UpnLogon 方法的隨選呼叫。 如果您的應用程式一定需要模擬層 Windows 安全性權杖,您可以選擇啟用 <securityTokenHandlers> 元素的 samlSecurityTokenRequirement 上的 mapToWindows 屬性。 另一方面來說,如果您的應用程式只有在特定情況下才需要模擬層 Windows 安全性權杖,則您可以選擇在需要時,以程式設計方式呼叫 UpnLogon 方法。 請注意,useWindowsTokenService 屬性必須設為 true 且 設定中必須加入適當的呼叫者清單,才能成功叫用此方法。

WIF 提供了 UpnLogon 方法,RP 應用程式可以呼叫這個方法,以傳入從 STS 接收到的 UPN 宣告。接著 WIF 會使用 IPC 叫用本機 。UpnLogon 會傳回代表使用者的 WindowsIdentity。 下圖顯示其運作方式:

e6a9def2-c55f-427c-a30f-1a4d8d299191

  1. 用戶端要求送抵 RP 應用程式。 這個要求會要求 RP 應用程式存取外部資源。 為了執行這項工作,RP 應用程式必須模擬該使用者。

  2. RP 應用程式會將用戶端重新導向到 IP-STS 以進行驗證。

  3. IP-STS 會驗證該使用者並簽發 SAML 權杖,其中包含了 UPN 宣告 (也就是 https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn 類型的宣告)。 請注意, 需要 UPN 字串才能執行其作業。

  4. 用戶端將 SAML 權杖提交到 RP 應用程式。

  5. RP 應用程式驗證該 SAML 權杖,並擷取該 UPN 宣告。

  6. RP 應用程式會將 UPN 宣告傳遞到 UpnLogon 方法做為參數,並取回 Windows 安全性權杖。 當 Saml 1.1 和 Saml 2 SecurityTokenHandler 中 SamlSecurityTokenRequirement 上的 mapToWindows 屬性設定為 true,而且 <microsoft.IdentityModel> 中 <windowsClaimsIdentity> 元素上的 useWindowsTokenService 值是設定為 true 時,這個方法呼叫就會由這些 SecurityTokenHandler 自動完成。

  7. RP 應用程式會使用 Windows 身分識別來模擬該使用者和存取資源。