声明和令牌
本主题描述 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 属性,以表示 Issuer 的 ClaimSet。
Windows 帐户
在客户端凭据映射到 Windows 用户帐户的情况下,生成的 ClaimSet 具有以下值:
- Issuer 是 ClaimSet 类的静态 Windows 属性返回的值。
- 集合中的声明包括:
- ClaimType 值为安全标识符 (SID)、Right 属性值为 Identity 以及返回实际 SID 值的 Resource 的 Claim。SID 是域控制器颁发给每个用户的一个唯一值。SID 用于在与 Windows 安全交互时标识用户。
- ClaimType 值为 SID、Right 为 PossessProperty 以及 Resource 为 SID 值的 Claim。
- ClaimType 为 Name、Right 为 PossessProperty 以及 Resource 为包含用户名的字符串(如“MYMACHINE\Bob”)的 Claim。
- 用户所属的各个组的 PossessProperty 的附加 SID 声明。
证书
在客户端凭据为证书的情况下,生成的 ClaimSet 具有以下各值:
- 对于自行颁发的证书,Issuer 为 ClaimSet 本身。ClaimSet 返回 Thumbprint 的 ClaimType、Identity 的 Right 以及 Resource 值,该值是一个包含证书指纹的 Byte 数组。
- 对于证书颁发机构颁发的证书,颁发者为表示证书颁发机构的证书的 ClaimSet。
- 集合中的 Claims 包括:
- ClaimType 为 Thumbprint、Right 为 PossessProperty 以及 Resource 为包含证书指纹的字节数组的 Claim
- 各种类型的其他 PossessProperty 声明,包括表示各种证书属性的 X500DistinguishedName、Dns、Name、Upn 和 Rsa。Rsa 声明的资源是与证书关联的公钥。**注意,**如果客户端凭据类型是服务映射到 Windows 帐户的证书,则会生成两个 ClaimSet 对象。第一个对象包含与 Windows 帐户相关的所有声明,第二个对象包含与证书相关的所有声明。
用户名/密码
在客户端凭据是未映射到 Windows 帐户的用户名/密码(或等效项)的情况下,生成的 ClaimSet 由 ClaimSet 类的静态 System 属性颁发。ClaimSet 包含类型为 Name、资源为客户端提供的用户名的 Identity 声明。对应声明的 Right 为 PossessProperty。
RSA 密钥
在使用与证书无关联的 RSA 密钥的情况下,生成的 ClaimSet 是自行颁发的,并且包含类型为 ****Rsa、资源为 RSA 密钥的 Identity 声明。对应声明的 Right 为 PossessProperty。
SAML
在客户端使用安全断言标记语言 (SAML) 令牌进行身份验证的情况下,生成的 ClaimSet 由已对 SAML 令牌进行签名的实体来颁发,通常为颁发了 SAML 令牌的安全令牌服务 (STS) 的证书。ClaimSet 中包含 SAML 令牌中的各种声明。如果 SAML 令牌包含非 空 名称的 SamlSubject,则会创建一个类型为 NameIdentifier、资源类型为 SamlNameIdentifierClaimResource 的 Identity 声明。
标识声明和 ServiceSecurityContext.IsAnonymous
如果从客户端凭据生成的任何 ClaimSet 对象都不包含 Right 为 Identity 的声明,则 IsAnonymous 属性将返回 true。如果存在一个或多个此类声明,则 IsAnonymous 属性将返回 false。
另请参见
参考
ClaimSet
Claim
Rights
ClaimTypes