Esta documentação foi arquivada e não está sendo atualizada.

Formatos de token com suporte no ACS

Publicado: abril de 2011

Atualizado: junho de 2015

Aplica-se a: Azure

Quando seus aplicativos e serviços web manipularem autenticações com o Access Control do Active Directory do Microsoft Azure (também conhecido como Access Control Service ou ACS), o cliente precisa obter um token de segurança emitido pelo ACS para fazer logon no seu aplicativo ou serviço. O ACS pode emitir tokens de segurança nos seguintes formatos:

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

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 o Especificações do SAML (http://go.microsoft.com/fwlink/?LinkID=213719).

noteObservação
Os tokens do SAML 1.1 e SAML 2.0 são amplamente suportados por um número de plataformas de desenvolvimento, incluindo Windows Identity Foundation (http://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>http://localhost:63000/</Audience>
        </AudienceRestriction>
    </conditions>
    <attributestatement>
        <Attribute Name="http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider">
            <AttributeValue>uri:WindowsLiveID</AttributeValue>
        </Attribute>
    </attributestatement>
</assertion>

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 geralmente estão presentes em um token SWT emitido pelo ACS são mostradas na seguinte tabela.

 

Chave Descrição

Emissor

Uma representação do namespace de serviço do ACS que emitiu o token.. O padrão para este 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 de chave/valor, o ACS adiciona uma ou mais declarações para um token antes da emissão. Estas declarações são controlados pela configuração da regra presente no ACS no momento da solicitação do 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.

A seguir está um exemplo de um token do ACS que contém declarações representadas como pares de 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 seguinte token do ACS é equivalente ao token do ACS anterior, exceto pelas 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.

 

Origem 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

http://localhost/myservice

ExpiresOn

1255912922

1255912922

HMACSHA256

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

yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64=

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 seque o rascunho 9 da especificação do JWT. Para obter mais informações, consulte http://go.microsoft.com/fwlink/?LinkId=253666. Similares aos tokens SWT, o JWT é um formato de token compacto que é apropriado para serviços web REST. Diferente do formato SWT, o JWT oferece suporte a uma série de opções de assinatura, o ACS oferece suporte assinaturas simétricas e assimétricas para tokens JWT. As declarações que geralmente estão presentes em tokens JWT emitidos pelo ACS são mostradas na seguinte tabela.

 

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

Emissor

iss

Uma representação do Namespace do Access Control que emitiu o token.. O padrão para este 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

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” ]
}

Quando um token SAML 2.0, SAML 1.1, SWT ou JWT é emitido, o ACS usa vários protocolos padrão para retornar ao token para um aplicativo ou serviço web. O ACS oferece suporte às seguintes cominações de token de formato/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 do token).

  • O ACS pode emitir e retornar tokens SAML 1.1 nos protocolos WS-Federation o os protocolos WS-Federation relacionados (dependendo do protocolo usado na solicitação do 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 do token).

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

Consulte também

Mostrar: