Compartilhar via


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 PossessPropertye 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 de Identity, 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 digital ClaimType, um Right de PossessProperty e um Resource que é uma matriz de bytes que contém a impressão digital do certificado

    • Declaraçõ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 objetos ClaimSet resultantes das credenciais do cliente contiver uma declaração com um Right de Identity,, a propriedade IsAnonymous retornará true. Se uma ou mais dessas declarações estiverem presentes, a propriedade IsAnonymous retornará false.

Confira também