同盟案例

此案例描述夥伴員工嘗試從另一個夥伴網域存取資源時的單一登入體驗。 同盟案例中有三個主要的角色,分別是身分識別提供者、宣告提供者和信賴憑證者。Windows® Identity Foundation (WIF) 提供 API 來建立這三種角色。

在下圖介紹的典型同盟案例中,Fabrikam.com 員工想要在不需要重新登入的情況下存取 Contoso.com 的資源;也就是使用單一登入。

89a58a75-d05f-4424-ab28-c7ca1fd20ede

與這個案例有關的虛構使用者列出如下:

  • Frank:他是 Fabrikam 的員工,想要存取 Contoso 資源。

  • Daniel:他是 Contoso 的應用程式開發人員,負責為應用程式實作必要的變更。

  • Adam:Contoso 的 IT 系統管理員。

與這個案例有關的元件列出如下:

  • web1:使用 ASP.NET 建立的零件訂購 Web 應用程式,可控制相關零件的存取。

  • sts1:擔任 Contoso.com 中宣告提供者角色的 STS,而且會發出應用程式 (web1) 所預期的宣告。 它已經與 Fabrikam.com 建立信任關係,並且設定為允許 Fabrikam 員工進行存取。

  • sts2:擔任 Fabrikam.com 中身分識別提供者角色的 STS,而且會提供驗證 Fabrikam 員工的端點。 它已經與 Contoso.com 建立信任關係,因此允許 Fabrikam 員工存取 Contoso.com 資源。

依據上圖所示,這個案例的流程將為:

  1. Contoso 系統管理員 Adam 在應用程式 (RP) 和 sts1 之間設定信任關係。

  2. Contoso 系統管理員 Adam 將設定與身分識別提供者 sts2 之間的信任關係。

  3. Fabrikam 系統管理員 Frank 將設定與宣告提供者 sts1 之間的信任關係,然後存取應用程式。

與這個案例相關的基本步驟

請注意,這個範例案例的內容只是為了方便說明。 在生產環境中成功執行這個案例的實際步驟可能有所不同。

設定宣告提供者

Contoso.com 系統管理員 Adam 有三個選項:

  1. 安裝 STS 產品,例如 Active Directory® Federation Services (AD FS) 2.0。

  2. 訂購像是 LiveID STS 等定域機組 STS 產品。

  3. 建立使用 WIF 的自訂 STS。

他會根據數個因素選擇選項,例如業務需要、時間表、技術資源的可用性、指定的預算等。 在這個範例案例中,我們假設 Adam 選取了第 1 個選項,並且使用 AD FS 2.0 產品文件安裝 AD FS 2.0 成為 RP-STS。

使應用程式具備宣告感知特性

為了使 web1 成為宣告感知應用程式,Daniel 安裝了 WIF,然後新增下列程式碼來列舉宣告。 如需相關資訊,請參閱 FedUtil - 用於建立 RP 和 STS 之間信任的同盟公用程式Visual Studio 範本以及建立信賴憑證者應用程式

// 取得 IClaimsIdentity 的存取權限 IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

foreach ( Claim claim in claimsIdentity.Claims ) { // 使用宣告之前,先驗證其是否為所需的宣告。 // 如果其不在所需的宣告清單中,則略過該宣告。if ( ExpectedClaims.Contains( claim.ClaimType ) ) { // 視應用程式邏輯的需求,寫出或使用該宣告 WriteClaim( claim, table ); } }

建立信賴憑證者應用程式與 STS 之間的信任關係

Daniel 使用 FedUtil - 用於建立 RP 和 STS 之間信任的同盟公用程式工具建立 RP 應用程式和 STS 之間的信任關係。 此工具還會產生 RP 應用程式的中繼資料,並且將 xml 檔案 (metadata.xml) 放入 RP 應用程式的資料夾中。 RP 應用程式的 web.config 檔會以 STS (sts1) 的相關資訊自動更新。

於宣告提供者上設定信賴憑證者應用程式

Adam 藉由參閱 AD FS 2.0 產品文件建立了與 RP 應用程式的信任關係。

於 Fabrikam 設定身分識別提供者 (IP)

Fabrikam.com 系統管理員 Frank 可以執行三種選項:

  1. 購買並安裝像是 AD FS 2.0 等 STS 產品。

  2. 訂購像是 LiveID STS 等定域機組 STS 產品。

  3. 建立使用 WIF 的自訂 STS。

在這個範例案例中,我們假設 Frank 選取了第 1 個選項,並安裝 AD FS 2.0 成為 IP-STS。 Frank 藉由參考 AD FS 2.0 產品文件,同樣建立了與身為宣告提供者的 Contoso.com 之間的信任關係。

存取 Web 應用程式

Frank 以 Fabrikam 網域使用者的身分登入 Fabrikam 系統。 然後開啟瀏覽器並存取 Contoso.com RP 應用程式頁面。 由於 Fabrikam 和 Contoso 之間已建立同盟信任關係,因此 Frank 現在可以存取 Contoso 的資源,而不需要重新驗證。

範例資源

如需完整的端對端案例範例,請參閱以下範例:

  • End-to-end\Federation for web services (主動案例)。

  • End-to-end\Federation for web app (被動案例)。

請注意,這兩個範例是設計成搭配自訂 STS 和 RP 運作於單一系統上。