Compartilhar via


Formatos de token com suporte no ACS

Atualizado em: 19 de junho de 2015

Aplica-se ao Azure

Quando seus aplicativos Web e serviços lidam com a autenticação com Microsoft Azure Active Directory Controle de Acesso (também conhecido como serviço de Controle de Acesso ou ACS), o cliente deve obter um token de segurança emitido pelo ACS para fazer logon em seu aplicativo ou serviço. O ACS pode emitir tokens de segurança nos seguintes formatos:

  • Security Assertion Markup Language (SAML) 1.1 e 2.0

  • SWT (Token Web Simples)

  • JSON Web token (JWT)

Observação

O ACS pode emitir tokens de segurança em qualquer um dos seguintes formatos. O formato de token que o ACS usa para um aplicativo Web ou serviço é determinado pela configuração do aplicativo de terceira parte confiável. Para obter informações sobre como configurar aplicativos de terceira parte confiável, consulte Aplicativos de Terceira Parte Confiável.

Security Assertion Markup Language (SAML) 1.1 e 2.0

O Security Assertion Markup Language (SAML) é o formato de tokens mais antigo e mais comum em uso hoje em dia para logon único (SSO) e identidade baseada em declarações. O SAML especifica um formato XML, para tokens como também para protocolos, para executar o SSO de um aplicativo web ou de um serviço web usando os tokens SAML. Para obter mais informações sobre tokens SAML, consulte Especificações de SAML (https://go.microsoft.com/fwlink/?LinkID=213719).

Observação

Os tokens SAML 1.1 e SAML 2.0 são amplamente suportados por várias plataformas de desenvolvimento, incluindo Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).

Segue abaixo um exemplo de um token SAML.

<assertion id="_4fe09cda-cad9-49dd-b493-93494e1ae4f9" issueinstant="2012-09-18T20:42:11.626Z"
    version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<issuer>https://test05.accesscontrol.windows.net/</issuer>
<ds:signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:signedinfo>
        <ds:canonicalizationmethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        <ds:signaturemethod algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
        <ds:reference uri="#_4fe09cda-cad9-49dd-b493-93494e1ae4f9">
            <ds:transforms>
                <ds:transform algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                <ds:transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            </ds:transforms>
            <ds:digestmethod algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <ds:digestvalue>8qmfRKuATFuo4M96xuci7HCLUGUeO3eBxHOi9/HaFNU=</ds:digestvalue>
        </ds:reference>
    </ds:signedinfo>
<ds:signaturevalue>UWcXJElfrP8hfdNi8ipzSjfxCYGYzoylkn5HdSa8IhphvyZBvbZl1OFEbMSygoo8xNgnywUNPuzZP8nV7CwZNuSWVZZSrF2pHAswBKQoJoodpzrGRR0ruT+A2sjXfnLQqN+X/xanXqqg4ViUOR9xHvn8vzaRwYxPPsjI4OXq0hzLlyuBzhw42XHzZk1qknQr1wp/lZTMwrFnY38gziUZ+Ci1Duen5Xt9k+0ZFujtSBqJKIran1V263o8CkvoahNcNKT//OcXc3va7zeJf67V9/lwY34MkFoqqfeuTSzEuZfk7pYRNqwhOZGhokpR+1qHjEbJr3p6dOOPkuQp9p6zsQ==</ds:signaturevalue>
    <keyinfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>       <X509Certificate>MIIDCDCCAfCgAwIBAgIQRmI8p7P/aphMv5Kr9vQpqTANBgkqhkiG9w0BAQUFADAtMSswKQYDVQQDEyJBQVJPTkJPT0subnRkZXYuY29ycC5taWNyb3NvZnQuY29tMB4XDTEyMDUyMTIzMjMxMFoXDTEzMDUyMTAwMDAwMFowLTErMCkGA1UEAxMiQUFST05CT09LLm50ZGV2LmNvcnAubWljcm9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI79l6EOSWswJn3d9i4yfZh9Cwo2XNhb4tOWvmljCKFlrWoz/Drch5aOzdmI/yFaqkyX7BXc/zoSmX1n3VkqHIeJkGECcZX2bD4jPuICVmKBcXo0SeQ+2vF6DoqjVKaegWrPsqmDrlCscnlMLb11Fg1Ffqkm8wyyWwbQvC5VnVf0i9DPE0n+i3NJi9cT57obrNRkQzwfBZy08I2JlpxLfaUUDhHlF99C1MtBduzn3au+S20gom1cHAcSvHBormXbjPZ5F6RJUz7kO/U+M5rYkiS+vtANtnBlUAK8fRmEUrYFRMr1tyiOXcRid/7UJP3e0EmAsneMnuD9WO/mK6MuzIECAwEAAaMkMCIwCwYDVR0PBAQDAgQwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBCRM9maY5ZE+wIxefxjT0IAqp7H6l062PKOGdld5MapOJUWbng2CrfUV3YI5OSD9yhevgDne3jf2DUBv5QndHdms+FL260ydDmwet4A5kJi3ZBO4sR/PZTz3FdeeOwdTeUS2wAMJuphAZ1+PUVk25bbEu/DKmgeYzRn64CHWqk5sPKzH9jAszvX2EeoClI+8Sp/bXHTwzEUOFYcicPOO+tuFTqHOYBDT5bE42rAp/SaC1wXbmTCGS12gfCZCrlml6LZNTsKQWBF2szXOPGcFcInGkauZDUUtZd+921uy0E/sYwgNfi8phU1aGZjIESVFQ70LpfvIMwF6++BRX12icW</X509Certificate>
        </X509Data>
    </keyinfo>
</ds:signature>
<subject>
    <NameID>abc1def2ghi3jkl4mno5pqr6stu7vwx8yza9bcd0efg=</NameID>
    <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</subject>
    <conditions notbefore="2012-09-18T20:42:11.610Z" notonorafter="2012-09-18T21:42:11.610Z">
        <AudienceRestriction>
            <Audience>https://localhost:63000/</Audience>
        </AudienceRestriction>
    </conditions>
    <attributestatement>
        <Attribute Name="https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider">
            <AttributeValue>uri:WindowsLiveID</AttributeValue>
        </Attribute>
    </attributestatement>
</assertion>

SWT (Token Web Simples)

Os tokens Simple Web Token (SWT) estão em conformidade com a especificação SimpleWebToken. Os tokens SWT são expressados como pares de chave/valor de formato codificado assinados com uma chave criptográfica. A especificação comanda a presença de alguns pares de chave/valor, mas deixa espaço para pares de chave/valor específicos do aplicativo. As chaves que estão sempre presentes em um token SWT emitido pelo ACS são mostradas na tabela a seguir.

Chave Descrição

Emissor

Uma representação do namespace do serviço ACS que emitiu o token. O padrão para esse valor é https://< servicenamespace.accesscontrol.windows.net/>.

Público

O valor do applies_to usado para solicitar o token. Esse valor é URI HTTP ou HTTPS.

ExpiresOn

O tempo no qual o token expira.

HMACSHA256

A assinatura HMACSHA256 de todos os outros pares de chave/valor. Este par de chave/valor sempre é o último par de chave/valor no token. A representação do formato codificado dos outros pares de chave/valor (incluindo as declarações específicas de aplicativos) é assinado.

Além desses pares chave/valor, o ACS adiciona uma ou mais declarações a um token antes da emissão. Essas declarações são controladas pela configuração de regra presente no ACS no momento da solicitação de token. Todas essas declarações têm um tipo e um ou mais valores, onde os tipos e os valores são cadeias de caracteres. Quando uma declaração contém mais de um valor, os valores são separados pelo caractere da vírgula (","). As declarações são codificadas como pares de chave/valores, exatamente como os pares de chave/valores descritos na tabela anterior.

Veja a seguir um exemplo de um token ACS que contém declarações representadas como pares chave/valor.

Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255913549Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&role=Admin%2cUser&role=Admin%2cUser&&HMACSHA256=sT7Hr9z%2b3t1oDFLpq5GOToVsu6Dyxpq7hHsSAznmwnI%3d

Com a exceção do par de valor/chave HMACSHA256, estes pares podem estar em qualquer ordem. O token ACS a seguir é equivalente ao token ACS anterior, exceto para as assinaturas que são diferentes.

role=Admin%2cUser&customerName=Contoso%20Corporation&Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255912922&HMACSHA256=yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d

A seguinte tabela mostra os conteúdos do token com valores decodificados em URL.

Fonte Chave Calor codificado em URL Valor decodificado em URL

Declarações definidas pelo usuário

função

Admin%2cUser

Admin,User

customerName

Contoso%20Corporation

Contoso Corporation

Declarações definidas pelo sistema

Emissor

https%3a%2f%2fmyservice.accesscontrol.windows.net%2f

https://myservice.accesscontrol.windows.net/

Público

http%3a%2f%2flocalhost%2fmyservice

https://localhost/myservice

ExpiresOn

1255912922

1255912922

HMACSHA256

yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d

yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64=

JSON Web token (JWT)

O suporte do JSON Web token (JWT) esta sendo adicionado em beta, isto significa que podem haver alterações recentes sem aviso prévio.

A implementação do ACS do formato de token JWT segue o rascunho 9 da especificação JWT. Para obter mais informações, consulte https://go.microsoft.com/fwlink/?LinkID=253666. Similares aos tokens SWT, o JWT é um formato de token compacto que é apropriado para serviços web REST. Ao contrário do formato SWT, o JWT dá suporte a uma variedade de opções de assinatura. O ACS dá suporte a assinaturas simétricas e assimétricas para tokens JWT. As declarações que estão sempre presentes nos tokens JWT emitidos pelo ACS são mostradas na tabela a seguir.

Declaração Tipo de declaração usado pelo JWT Descrição

Emissor

iss

Uma representação do namespace Controle de Acesso que emitiu o token. O padrão para esse valor é https://< namespace.accesscontrol.windows.net/>

Público

aud

O valor do escopo usado para solicitar o token. Este valor é usado para identificar o recipiente do token destinado.

Não Antes De

nbf

O tempo antes do qual o token não é válido.

Expiração

exp

O tempo no qual o token expira.

Os seguintes algoritmos oferecem suporte para os tokens JWT:

Identificador de algoritmo no cabeçalho do JWT Descrição

HS256

Algoritmo HMAC usando o hash SHA-256. Para assinar o JWT com uma chave simétrica.

RS256

Algoritmo RSA usando o hash SHA-256. Para assinar o JWT com uma chave assimétrica, usando um certificado X.509.

Aqui está um exemplo de um token JWT:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw. 

O JWT está composto de segmentos, que estão delimitados usando ‘.’. A seguinte tabela mostra os segmentos decodificados de um token JWT:

Segmento do JWT Valor

Cabeçalho do JWT

{"typ":"JWT","alg":"HS256"}

Conjunto de declarações JWT

{"aud":"https://contoso.com/relyingparty","iss":"https://contoso.accesscontrol.windows.net/","nbf":1336067338,"exp":1336070938,"nameid":"clientApp","identityprovider":"contoso.com"}

Assinatura

_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw

É representada uma declaração única com vários valores como uma matriz JSON. Por exemplo se um usuário é membro de várias funções, a declaração da função apareceria como segue:

{
 "aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}

Tokens e Protocolos ACS

Quando um token SAML 2.0, SAML 1.1, SWT, JWT é emitido, o ACS usa vários protocolos padrão para retornar o token a um aplicativo Web ou serviço. O ACS dá suporte às seguintes combinações de formato de token/protocolo:

  • O ACS pode emitir e retornar tokens SAML 2.0 nos protocolos WS-Trust e WS-Federation (dependendo do protocolo usado na solicitação de token).

  • O ACS pode emitir e retornar tokens SAML 1.1 no WS-Federation e nos protocolos de WS-Trust relacionados (dependendo do protocolo usado na solicitação de token).

  • O ACS pode emitir e retornar tokens SWT nos protocolos WS-Federation, WS-Trust e OAuth WRAP ou OAuth 2.0 (dependendo do protocolo usado na solicitação de token).

  • O ACS pode emitir tokens JWT nos protocolos WS-Federation, WS-Trust e OAuth 2.0 (dependendo do protocolo usado na solicitação de token).

Consulte Também

Conceitos

Arquitetura do ACS
Componentes do ACS 2.0