同盟
同盟允許授權授權單位委派給相互關聯的成員。 例如,請考慮下列商務問題:自動元件製造公司 Contoso Ltd 想要允許其客戶 Fabrikam Inc 的授權員工安全地存取 Contoso 的元件訂單 Web 服務。 此案例的其中一個安全性解決方案是讓 Contoso 使用 Fabrikam 設定信任機制,以將存取授權決策委派給 Fabrikam。 此程式的運作方式如下:
- Fabrikam 成為 Contoso 的合作夥伴時,會設定與 Contoso 的信任協定。 此步驟的目標是同意代表 Fabrikam 授權的安全性權杖類型和內容,而且 Contoso 可接受。 例如,可能會決定信任的 X.509 憑證,其主體名稱為 「CN=Fabrikam Inc Supplier STS」 應該簽署 SAML 權杖,讓 Contoso Web 服務接受該 SAML 權杖。 此外,可能會決定所核發 SAML 權杖中的安全性宣告應該是元件查閱授權) 的 ' https://schemas.contoso.com/claims/lookup ' (,或針對部分排序授權) 的 ' https://schemas.contoso.com/claims/order ' (。
- 當 Fabrikam 員工使用內部元件訂購應用程式時,會先連絡安全性權杖服務, (Fabrikam 內的 STS) 。 該員工會使用內部 Fabrikam 安全性 (機制進行驗證,例如,Windows 網域使用者名稱/密碼) 、已驗證訂單元件的授權,併發出短期 SAML 權杖,其中包含適當的宣告,並由上面決定的 X.509 憑證簽署。 接著,訂購應用程式的元件會連絡 Contoso 服務,呈現已核發的 SAML 權杖,以驗證並執行排序工作。
在這裡,Fabrikam STS 會作為「發行者」,而 Contoso 元件服務會作為「信賴憑證者」。
以下是同盟案例中涉及之合作物件或角色的支援安全性功能:
- 用戶端:若要從 STS 取得安全性權杖,可以使用 WsRequestSecurityToken 函式。 或者,您可以使用用戶端安全性權杖提供者程式庫,例如 CardSpace 或 LiveID,然後使用其輸出,使用 WsCreateXmlSecurityToken在本機建立安全性權杖。 任一方式,一旦用戶端具有安全性權杖,就可以建立通道給服務,指定 WS_XML_TOKEN_MESSAGE_SECURITY_BINDING 來呈現權杖,以及傳輸安全性系結,例如 WS_SSL_TRANSPORT_SECURITY_BINDING 來保護通道。
- 伺服器端:在發出 SAML 權杖的安全性權杖服務同盟案例中,伺服器可以使用 WS_SAML_MESSAGE_SECURITY_BINDING,以及傳輸安全性系結,例如 WS_SSL_TRANSPORT_SECURITY_BINDING 來保護通道。
- STS 端:請注意,STS 是 Web 服務應用程式,而且可以使用接聽程式建立時的安全性描述結構,指定從中要求 安全性 權杖的安全性需求,就像任何其他安全 Web 服務一樣。 然後,它可能會剖析傳入的要求訊息承載,以驗證權杖要求,並將發行的權杖傳回為回復訊息承載。 目前未提供任何功能來協助這些剖析和發行步驟。
請注意,用戶端可以一般以 XML 安全性權杖的形式處理已發行的安全性權杖,而不需要知道權杖類型,或執行權杖類型特定的處理。 不過,伺服器必須瞭解特定的安全性權杖類型,才能瞭解和處理它。 安全性權杖要求和回應步驟會使用WS-Trust規格中定義的建構。
同盟案例可能涉及構成同盟鏈結的多個 STS。 請考慮下列範例:
- 用戶端會使用 LiveID 使用者名稱/密碼向 LiveID STS 進行驗證,並取得安全性權杖 T1。
- 用戶端會使用 T1 向 STS1 進行驗證,並取得安全性權杖 T2。
- 用戶端會使用 T2 向 STS2 進行驗證,並取得安全性權杖 T3。
- 用戶端會使用 T3 向目標服務 S 進行驗證。
在這裡,LiveID STS、STS1、STS2 和 S 形成同盟鏈結。 同盟鏈結中的 STS 可能會針對整體應用程式案例執行各種角色。 這類 STS 功能角色的範例包括識別提供者、授權決策者、匿名化程式和資源管理員。
若要讓用戶端成功呼叫 WsRequestSecurityToken ,它必須知道該呼叫的參數 (,例如所需的權杖類型和宣告類型) 、要求通道對 STS 的安全性描述 需求,以及 STS 的 端點位址 。 用戶端應用程式可以使用下列任何技術來判斷此資訊:
- 將應用程式中的資訊硬式編碼為設計階段決策的一部分。
- 從本機應用程式部署者所設定的應用程式層級組態檔讀取這項資訊。
- 使用 中繼資料匯 入功能搭配 WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT 結構,在執行時間動態探索這項資訊。
為了說明如何搭配同盟使用動態 MEX,請考慮上述 3 個 STS 範例。 用戶端會先使用 S 執行動態 MEX,以取得 T3 (的相關資訊,亦即,要從 STS2) 以及 STS2 動態 MEX 位址 (,也就是尋找 STS2) 的位置。 然後,它會使用該資訊搭配 STS2 執行動態 MEX,以探索 T2 和 STS1 的相關資訊等等。
因此,動態 MEX 步驟會在訂單 4、3、2、1 中建立同盟鏈結,以及權杖要求和呈現步驟會在順序 1、2、3、4 中執行,以回溯同盟鏈結。
注意
Windows 7 和 Windows Server 2008 R2:WWSAPI 僅支援由輕量型 Web 服務安全性設定檔所定義的 Ws-Trust 和 Ws-SecureConversation (LWSSP) 。 如需 Microsoft 實作的詳細資訊,請參閱 LWSSP 的 MESSAGE 語法 一節。