宣告與權杖
本主題描述 Windows Communication Foundation (WCF) 從支援的預設權杖中建立的各種宣告類型。
您可以使用 ClaimSet 和 Claim 類別來檢查用戶端認證的宣告。 ClaimSet
包含 Claim
物件的集合。 每個 Claim
都具有下列重要的成員:
ClaimType 屬性會傳回指定所要建立之宣告類型的統一資源識別元 (URI)。 例如,宣告類型可能是憑證的指紋,在此情況下,URI 為
http://schemas.microsoft.com/ws/20005/05/identity/claims/thumprint
。Right 屬性會傳回指定宣告權限的 URI。 預先定義的權限可以在 Rights 類別中找到 (Identity、PossessProperty)。
Resource 屬性會傳回與宣告相關聯的資源。
每個 ClaimSet 也都有 Issuer 屬性,此屬性表示 ClaimSet 的 Issuer
。
Windows 帳戶
當用戶端認證對應至 Windows 使用者帳戶時,產生的 ClaimSet 具有下列值:
Issuer
是 ClaimSet 類別的靜態 Windows 屬性所傳回的值。此集合中的宣告為:
具有安全識別項 (SID) 之 Claim 值的 ClaimType、Right 的
Identity
屬性值,以及傳回實際 SID 值的 Resource。 SID 是網域控制站發出至每個使用者的唯一值。 SID 可用來識別與 Windows 安全性互動的使用者。具有 SID 之 Claim 值的 ClaimType、Right 的
PossessProperty
,以及 SID 值的 Resource。具有 Claim 之 ClaimType 的 Name、Right 的
PossessProperty
,以及包含使用者名稱之字串 (例如,"MYMACHINE\Bob") 的 Resource。其他 SID 宣告,這些宣告具有使用者所屬之各種群組的 PossessProperty。
憑證
當用戶端認證是憑證時,產生的 ClaimSet 具有下列值:
如果是自動發行的憑證,
Issuer
就是 ClaimSet 本身。 ClaimSet 會傳回 ClaimType 的 Thumbprint、Right 的Identity
,以及 Resource 值,此值表示包含憑證指紋的 Byte 陣列。如果是由憑證授權單位發出的憑證,簽發者就是
ClaimSet
,表示憑證授權單位的憑證。此集合中的
Claims
包括:具有 Thumbprint 之
Claim
的ClaimType
、PossessProperty 的Right
,以及Resource
,表示包含憑證指紋的位元組陣列。各種類型的其他 PossessProperty 宣告,包括 X500DistinguishedName、Dns、Name、Upn 和 Rsa,表示憑證的各種屬性。 Rsa 宣告的資源是與憑證相關聯的公開金鑰。注意 當用戶端認證類型是服務用來對應至 Windows 帳戶的憑證時,會產生兩個
ClaimSet
物件。 第一個包含與 Windows 帳戶相關的所有宣告,第二個則包含與憑證相關的所有宣告。
使用者名稱/密碼
當用戶端認證是未對應至 Windows 帳戶的使用者名稱/密碼 (或對等用法) 時,產生的 ClaimSet
會由 System 類別的靜態 ClaimSet
屬性發出。 ClaimSet
包含 Name 型別的 Identity
宣告,此宣告的資源是用戶端提供的使用者名稱。 對應的宣告具有 Right
的PossessProperty
。
RSA 金鑰
當使用未與憑證相關聯的 RSA 金鑰時,產生的 ClaimSet
會自動發行,並且包含 Rsa 型別的 Identity
宣告,此宣告的資源是 RSA 金鑰。 對應的宣告具有 Right
的PossessProperty
。
SAML
當用戶端使用安全性判斷提示標記語言 (SAML) 權杖進行驗證時,產生的 ClaimSet
會由簽署 SAML 權杖的實體發出,通常是所發出 SAML 權杖之安全性權杖服務 (STS) 的憑證。 ClaimSet
包含 SAML 權杖中的各種宣告。 如果 SAML 權杖包含具有非 SamlSubject
名稱的 null
,則會建立具有 Identity
型別的 NameIdentifier 宣告和 SamlNameIdentifierClaimResource 的資源型別。
身分識別宣告和 ServiceSecurityContext.IsAnonymous
如果客戶端認證所產生的物件都沒有 ClaimSet
包含 具有 Right
的 Identity
宣告,則 IsAnonymous 屬性會傳 true
回 。 如果出現一或多個這類的宣告,則 IsAnonymous
屬性會傳回 false
。