Tokens JWT
Os tokens trafegados pelo Identity, access token e o id token, são tokens JWT assinados. Eles são peças fundamentais na implementação do OAuth / OpenID Connect do Identity.
Assinatura dos Tokens
Os tokens utilizam um sistema de criptografia chamado de assinatura digital, a assinatura permite garantir a integridade destes tokens, ou seja, garantir que seu conteúdo foi emitido de fato pelo Identity e não foi alterado em nenhum momento por algum ataque como o “Man in the midle”.
A assinatura funciona com um par de chaves público-privado que o Identity usa para assinar o token, a aplicação que receber os tokens precisa utilizar a chave pública para fazer a validação desta assinatura.
Para um passo a passo de como fazer esta validação acesse esta página.
Formato do token JWT
O token JWT do Identity é formato por três principais partes:
- O header, que contém informações a respeito do token em si
- O payload, que contém o conteúdo do token, que são as claims
- A assinatura, que é um hash utilizado para validar o token
Exemplo de token JWT
eyJ0eXAiOiJhdCtKV1QiLCJraWQiOiJmYWFjMmNlYi1iMmQzLTQyOGQtYWI2MC03YmEyMmMyMjc3YWMiLCJhbGciOiJSUzI1NiJ9. eyJleHAiOjE3MzQ1MzM0NjMsImlhdCI6MTczNDUzMzE2Mywic3ViIjoiYXBwOjVDcEVNVlIwbWM3Tmk5MjJ0cjFsTUEiLCJhdWQiOlsiSXVndS5QbGF0Zm9ybSIsIkl1Z3UuUGxhdGZvcm0uNUNwRU1WUjBtYzdOaTkyMnRyMWxNQSIsIjVDcEVNVlIwbWM3Tmk5MjJ0cjFsTUEiXSwic2NvcGUiOiIiLCJjbGllbnRfaWQiOiI1Q3BFTVZSMG1jN05pOTIydHIxbE1BIiwiaXNzIjoiaHR0cHM6Ly9pZGVudGl0eS5pdWd1LmNvbS8ifQ. gv65jkfFisCw4pwgclDQzBX37KZU_lpWFFps06uXhAgnXNXwr1Ya70lHuBEVWCRj-82C5zegDvll513PobGTsbZMn0MrgcMdV63pcphiOUe5F0ARCUUgH73WszZ06IrDkQtCu3nEOxUKR5dnED5JwjFTUA-1SPk-j7kF7LPkFoE7D-p7ftsZvdnG71NV_tAV61mPpVKtlVYbkBL-4aGZmNLgHq-uqsntjx0Qy86Dd4xtHGh0doijYoLvH7Q1KI3HC2XwnIR7gihsRxW3FIgNcmNT8opnC-oeNVXMVPRzQ-NWyKayV6dlKeVOiN8mWopKBLLWgDz1SmarA8EVYGKQ
Claims
As claims de um token JWT são as propriedades contidas dentro do body do token, os valores destas propriedades são importantes para que se garanta a consistência do token, além de conter as informações em si trafegadas pelo token.
Chaves das claims e seus significados
Claim | Significado |
---|---|
iss | É a claim de issuer, representa a entidade que emitiu este token, o seu valor está no formato de URI |
sub | É a claim subject, representa o recurso que é dono das informações contidas no token, o seu valor está no formato de principal identifier |
aud | É a claim audience, representa o recurso que é o receptor do token, ou seja, quem deveria abrir e ler este token, o seu valor está no formato de audience da iugu e pode ser uma lista |
exp | É a claim expiration, representa o horário em que o token expirará, o seu valor está no formato de unix timestamp em UTC |
iat | É a claim issued at, representa o horário em que o token foi emitido, o seu valor está no formato de unix timestamp em UTC |
client_id | É a claim client id, representa o recurso que emitiu o token, ou seja, a aplicação que solicitou a emissão do token, o seu valor está no formato de id padrão da iugu |
azp | É a claim authorized party, assim como o client id, representa o recurso que emitiu o token, o seu valor está no formato de id padrão da iugu |
acr | É a claim de authentication context class reference, representa o nível do token emitido, o seu valor é um dos níveis de token existentes |
auth_time | É a claim de authentication time, representa o horário em que o usuário final se autenticou pela última vez, o seu valor está no formato de unix timestamp em UTC |
sid | É a claim session id, representa um identificador único da sessão do usuário final, o seu valor é o de um identificador padrão iugu |