Tokens de ID na plataforma de identidade da Microsoft
Tokens de ID são um tipo de token de segurança que serve como prova de autenticação, confirmando que um usuário foi autenticado com sucesso. Informações em tokens de ID permitem que o cliente verifique se um usuário é quem ele diz ser, de forma semelhante a marcas de nome em uma conferência. O servidor de autorização emite tokens de ID contendo declarações que transmitem informações sobre o usuário. Eles podem ser enviados juntamente ou no lugar de um token de acesso e estão sempre no formato Token Web JSON (JWT).
Os tokens de ID diferem dos tokens de acesso, que servem como prova de autorização. Os clientes confidenciais devem validar tokens de ID. Você não deve usar um token de ID para chamar uma API.
Os aplicativos de terceiros se destinam a entender os tokens de ID. Os tokens de ID não devem ser usados para fins de autorização. Tokens de acesso são usados para autorização. As declarações fornecidas pelos tokens de ID podem ser usadas para a experiência do usuário dentro de seu aplicativo, como chaves em um banco de dados e fornecendo acesso ao aplicativo cliente. Para obter mais informações sobre as declarações utilizadas em um token de ID, confira a referência de declarações de token de ID. Para saber mais sobre como usar a autorização baseada em declarações com segurança, consulte Como proteger aplicativos e APIs validando declarações
Formatos de Token
Existem duas versões de tokens de ID disponíveis na plataforma de identidade da Microsoft: v 1.0 e v 2.0. Essas versões determinam quais declarações estão contidas no token. Os tokens de ID v1.0 e v2.0 têm diferenças nas informações que eles carregam. A versão é baseada no ponto de extremidade da solicitação. Aplicativos novos devem usar a versão v2.0.
- v1.0:
https://login.microsoftonline.com/common/oauth2/authorize
- v2.0:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
Token de ID v1.0 de exemplo
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyIsImtpZCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyJ9.eyJhdWQiOiJiMTRhNzUwNS05NmU5LTQ5MjctOTFlOC0wNjAxZDBmYzljYWEiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkvIiwiaWF0IjoxNTM2Mjc1MTI0LCJuYmYiOjE1MzYyNzUxMjQsImV4cCI6MTUzNjI3OTAyNCwiYWlvIjoiQVhRQWkvOElBQUFBcXhzdUIrUjREMnJGUXFPRVRPNFlkWGJMRDlrWjh4ZlhhZGVBTTBRMk5rTlQ1aXpmZzN1d2JXU1hodVNTajZVVDVoeTJENldxQXBCNWpLQTZaZ1o5ay9TVTI3dVY5Y2V0WGZMT3RwTnR0Z2s1RGNCdGsrTExzdHovSmcrZ1lSbXY5YlVVNFhscGhUYzZDODZKbWoxRkN3PT0iLCJhbXIiOlsicnNhIl0sImVtYWlsIjoiYWJlbGlAbWljcm9zb2Z0LmNvbSIsImZhbWlseV9uYW1lIjoiTGluY29sbiIsImdpdmVuX25hbWUiOiJBYmUiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaXBhZGRyIjoiMTMxLjEwNy4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJub25jZSI6IjEyMzUyMyIsIm9pZCI6IjA1ODMzYjZiLWFhMWQtNDJkNC05ZWMwLTFiMmJiOTE5NDQzOCIsInJoIjoiSSIsInN1YiI6IjVfSjlyU3NzOC1qdnRfSWN1NnVlUk5MOHhYYjhMRjRGc2dfS29vQzJSSlEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6IkFiZUxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJMeGVfNDZHcVRrT3BHU2ZUbG40RUFBIiwidmVyIjoiMS4wIn0=.UJQrCA6qn2bXq57qzGX_-D3HcPHqBMOKDPx4su1yKRLNErVD8xkxJLNLVRdASHqEcpyDctbdHccu6DPpkq5f0ibcaQFhejQNcABidJCTz0Bb2AbdUCTqAzdt9pdgQvMBnVH1xk3SCM6d4BbT4BkLLj10ZLasX7vRknaSjE_C5DI7Fg4WrZPwOhII1dB0HEZ_qpNaYXEiy-o94UJ94zCr07GgrqMsfYQqFR7kn-mn68AjvLcgwSfZvyR_yIK75S_K37vC3QryQ7cNoafDe9upql_6pB2ybMVlgWPs_DmbJ8g0om-sPlwyn74Cc1tW3ze-Xptw_2uVdPgWyqfuWAfq6Q
Exiba esse token de exemplo de v1.0 em jwt.ms.
Token de ID v2.0 de exemplo
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw
Exiba esse token de exemplo de v2.0 em jwt.ms.
Tempo de vida do Token
Por padrão, um token de ID é válido por uma hora. Depois de uma hora, o cliente deve adquirir um novo token de ID.
Você pode ajustar o tempo de vida de um token de ID para controlar com que frequência o aplicativo cliente fará a sessão do aplicativo expirar e com que frequência irá requerer que o usuário seja reautenticado, silenciosamente ou de forma interativa. Para obter mais informações, leia Tempos de vida configuráveis.
Validar tokens
Para validar um token de ID, seu cliente pode verificar se o token foi adulterado. Ele também pode validar o emissor para garantir que o emissor correto enviou o token de volta. Como os tokens de ID são sempre um token JWT, existem muitas bibliotecas para validar esses tokens, então você deve usar uma dessas bibliotecas em vez de fazê-lo por conta própria. Somente clientes confidenciais devem validar tokens de ID. Para obter mais informações, consulte Proteger aplicativos e APIs validando declarações.
Aplicativos públicos (o código executado inteiramente em um dispositivo ou rede que você não controla, por exemplo, o navegador de um usuário ou uma rede doméstica) não se beneficiam da validação do token de ID. Nesse tipo de instância, um usuário mal-intencionado pode interceptar e editar as chaves usadas para a validação do token.
As declarações JWT a seguir devem ser validadas no token de ID após a validação da assinatura no token. Sua biblioteca de validação de token também pode validar as seguintes declarações:
- Carimbos de data/hora: os carimbos de data/hora
iat
,nbf
, eexp
devem estar todos antes ou depois da hora atual, conforme apropriado. - Público-alvo: a declaração
aud
deve corresponder à ID do aplicativo do seu aplicativo. - Nonce: a declaração
nonce
no conteúdo deve corresponder ao parâmetro nonce transmitido para o ponto de extremidade/authorize
durante a solicitação inicial.