Declarações e tokens
Este tópico descreve os vários tipos de declaração que o WCF (Windows Communication Foundation) cria com base nos tokens padrão aos quais dá suporte.
Você pode examinar as declarações de uma credencial de cliente usando as classes ClaimSet e Claim. O ClaimSet
contém uma coleção de objetos Claim
. Cada Claim
um tem os seguintes membros importantes:
A propriedade ClaimType retorna um URI (Uniform Resource Identifier) que especifica o tipo de declaração que está sendo feita. Por exemplo, um tipo de declaração pode ser uma impressão digital de um certificado, nesse caso o URI é
http://schemas.microsoft.com/ws/20005/05/identity/claims/thumprint
.A propriedade Right retorna um URI que especifica o direito da declaração. Os direitos predefinidos são encontrados na classe Rights (Identity, PossessProperty).
A propriedade Resource retorna o recurso associado à declaração.
Cada ClaimSet também tem uma propriedade Issuer, que representa o ClaimSet do Issuer
.
Contas do Windows
Quando uma credencial de cliente é mapeada para uma conta de usuário do Windows, o ClaimSet resultante tem os seguintes valores:
O valor
Issuer
é retornado pela propriedade estática do Windows da classe ClaimSet.As declarações na coleção são:
Um Claim com um valor ClaimType de SID (identificador de segurança), um valor Right de propriedade de
Identity
e um Resource que retorna o valor real do SID. Um SID é um valor exclusivo que o controlador de domínio emite para cada usuário. O SID é usado para identificar o usuário em interações com a segurança do Windows.Um Claim com um valor ClaimType do SID, um Right de
PossessProperty
e um Resource do valor do SID.Um Claim com um ClaimType de Name, um Right de
PossessProperty
e um Resource de cadeia de caracteres contendo o nome de usuário (por exemplo, "MYMACHINE\Bob").Declarações adicionais do SID com PossessProperty os vários grupos aos quais o usuário pertence.
Certificados
Quando a credencial do cliente é um certificado, o ClaimSet resultante tem os seguintes valores:
Para certificados auto-emitidos, o
Issuer
é o próprio ClaimSet. O ClaimSet retorna um ClaimType de Thumbprint, um Right deIdentity
, e um valor Resource que é uma matriz Byte que contém a impressão digital do certificado.Para um certificado emitido por uma autoridade de certificação, o emissor é o
ClaimSet
que representa o certificado da autoridade de certificação.Os
Claims
na coleção incluem:Um
Claim
com uma impressão digitalClaimType
, umRight
de PossessProperty e umResource
que é uma matriz de bytes que contém a impressão digital do certificadoDeclarações adicionais do PossessProperty de vários tipos, incluindo X500DistinguishedName, Dns, Name, Upn e Rsa, representam várias propriedades do certificado. O recurso para a declaração Rsa é a chave pública associada ao certificado. Nota. Quando o tipo de credencial do cliente é um certificado que o serviço mapeia para uma conta do Windows, dois objetos
ClaimSet
são gerados. A primeira contém todas as declarações relacionadas à conta do Windows e a segunda contém todas as declarações relacionadas ao certificado.
Nome de usuário/senha
Quando a credencial do cliente é um nome de usuário/senha (ou equivalente) que não seja mapeado para uma conta do Windows, o ClaimSet
resultante é emitido pela propriedade estática System da classe ClaimSet
. O ClaimSet
contém uma declaração Identity
de tipo Name cujo recurso é o nome de usuário que o cliente fornece. Uma declaração correspondente tem um Right
de PossessProperty
.
Chaves RSA
Quando uma chave RSA não associada a um certificado é usada, o ClaimSet
resultante é auto-emitido e contém uma declaração Identity
de tipo Rsa cujo recurso é a chave RSA. Uma declaração correspondente tem um Right
de PossessProperty
.
SAML
Quando o cliente se autentica com um token SAML (Security Assertion Markup Language), o ClaimSet
resultante é emitido pela entidade que assinou o token SAML, muitas vezes o certificado do STS (serviço de token de segurança) que emitiu o token SAML. O ClaimSet
contém várias declarações, conforme encontrado no token SAML. Se o token SAML contiver um SamlSubject
com um nome que não seja null
, uma declaração Identity
com um tipo de NameIdentifier e um tipo de recurso de SamlNameIdentifierClaimResource será criada.
Declarações de Identidade e ServiceSecurityContext.IsAnonymous
Se nenhum dos ClaimSet
objetos resultantes das credenciais do cliente contiver uma declaração com um Right
de Identity
, a IsAnonymous propriedade retornará true
. Se uma ou mais dessas declarações estiverem presentes, a propriedade IsAnonymous
retornará false
.