與 IIdentity 和 IPrincipal 進行整合

IIdentity 和 IPrincipal

ASP.NET 和 Windows Communication Foundation (WCF) 開發人員一般會使用 IIdentityIPrincipal 介面處理使用者的身分識別資訊。WIF 擴充了這兩個介面,如下圖所示:

f602ca2a-2c34-4e0a-9009-f97dca70f278

開發人員可以如以往般存取使用者的名稱。 此外還可以存取其他對使用者進行的宣告,例如電子郵件地址、年齡、郵寄地址等。

WIF 是透過現有的方法提供此功能,例如 Thread.CurrentPrincipal。 您可以呼叫 Thread.CurrentPrincipal 並且將傳回的 IPrincipal 轉型為 IClaimsPrincipal。 如上圖所示,IClaimsPrincipal 會公開身分識別的集合,其中每一個身分識別都有關於主體的宣告集合,該主體通常是目前的使用者。

宣告是由 Claim 類別表示。 此類別具有下列重要屬性:

  • ClaimType 表示宣告的類型,通常是 URI。 例如,電子郵件地址宣告會表示為 https://schemas.microsoft.com/ws/2008/06/identity/claims/email

  • Value 包含宣告值,並且會以字串表示。 例如,電子郵件地址可以表示為 "someone@contoso.com"。

  • ValueType 表示宣告值的類型,通常是 URI。 例如,字串類型會表示為 http://www.w3.org/2001/XMLSchema#string

  • 值的類型必須是依據 XML 結構描述的 QName。 此值的格式應該是 namespace#format,WIF 才能輸出有效的 QName 值。

  • 如果命名空間不是正確定義的命名空間,則產生的 XML 可能不會經過結構描述驗證,因為該命名空間不會有已發行的 XSD 檔。

  • 預設的值類型為 http://www.w3.org/2001/XMLSchema#string

  • 如需您可以安心使用的已知值類型,請參閱 http://www.w3.org/2001/XMLSchema (英文)。

  • Issuer 是發行宣告之安全性權杖服務 (STS) 的識別碼。 此識別碼可以表示為 STS 的 URL,或是代表 STS 的名稱,例如 https://sts1.contoso.com/sts。 如需相關資訊,請參閱IssuerNameRegistry

  • OriginalIssuer 是原始發行宣告之 STS 的識別碼 (無論鏈結中有多少 STS)。 此識別碼的表示方式就像 Issuer

  • Subject 是要檢查其身分識別的主體。 它包含 IClaimsIdentity

  • Properties 是字典,可讓開發人員提供要在網路上與其他屬性一併傳輸的應用程式專屬資料,並且可以用於自訂驗證。

身分識別委派

IClaimsIdentity 有一項重要屬性為 Actor。 此屬性可啟用多層系統中的認證委派,其中的中介層可充當用戶端來向後端服務提出要求。 如需相關資訊,請參閱身分識別委派案例