header.payload.signature
Decodificador de JWT
Um JSON Web Token (JWT) tem 3 partes em Base64url separadas por pontos: cabeçalho, payload e assinatura. Cole um token para ler as claims e os horários; ele é decodificado aqui, não verificado.
- iat 1700000000 = 2023-11-14 22:13:20 UTC
- exp 1700003600 = 2023-11-14 23:13:20 UTC
- HS256 = 32 B
O token fica nesta aba e não é enviado a lugar nenhum. Um token decodificado não é um token confiável: a assinatura nunca é verificada aqui.
Scanned by NortonTM Safe Web
Resumo
- Preço
- Sem custo
- Conta
- Não é necessária
- Padrões
- RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
- Assinatura
- Não verificada — o token é apenas decodificado
- Horários
- exp, nbf e iat mostrados em UTC e comparados com o seu relógio
- Envio
- Nenhum — o token fica na aba do seu navegador
Um token de exemplo e algoritmos comuns
O token de exemplo desta página é assinado com HMAC-SHA-256 usando uma chave descartável. A página o decodificou para produzir a primeira tabela.
| Claim | Valor | Horário (UTC) |
|---|---|---|
| iss | auth.example.com | — |
| sub | user-42 | — |
| aud | api | — |
| iat | 1700000000 | 2023-11-14 22:13:20 UTC |
| exp | 1700003600 | 2023-11-14 23:13:20 UTC |
| alg | Família | Hash | Tamanho da assinatura |
|---|---|---|---|
| HS256 | HMAC | SHA-256 | 32 B |
| HS512 | HMAC | SHA-512 | 64 B |
| RS256 | RSASSA-PKCS1-v1_5 | SHA-256 | 256 B (2048-bit key) |
| ES256 | ECDSA P-256 | SHA-256 | 64 B |
| ES512 | ECDSA P-521 | SHA-512 | 132 B |
| EdDSA | EdDSA | — | 64 B (Ed25519) |
Como decodificar um JWT
Cole o token
Cole o token inteiro, com ou sem um Bearer no início. Ele tem 3 partes separadas por pontos, ou 5 se for um JWE criptografado.
Leia as partes
O cabeçalho e o payload aparecem como JSON formatado, e cada claim é listada em uma tabela. Os horários exp, nbf e iat são mostrados em UTC.
Confira o horário
A página compara exp e nbf com o relógio do seu dispositivo e diz se o token expirou. Ela não diz se o token é autêntico.
Como um JWT é construído
Um JWT (RFC 7519) é escrito como header.payload.signature. O cabeçalho e o payload são objetos JSON, cada um codificado em Base64url sem preenchimento (RFC 4648, seção 5), e a assinatura são bytes brutos na mesma codificação. Decodificar só muda a codificação, então qualquer pessoa que tenha um token pode ler o seu payload: não coloque segredos nele. O cabeçalho indica o algoritmo de assinatura em alg, como HS256 (HMAC com SHA-256, assinatura de 32 bytes) ou RS256 (RSA com SHA-256, 256 bytes para uma chave de 2048 bits).
Esta página decodifica um token e nada além disso. Ela não verifica a assinatura, porque isso exige a chave, e não consegue dizer se um token é autêntico, foi revogado ou é aceito por um servidor. Ela compara as claims exp, nbf e iat, que contam segundos desde 1970-01-01 UTC, com o relógio do seu dispositivo e as mostra como data e hora em UTC. Um token com 5 partes é um JWE: o conteúdo é criptografado, então só o cabeçalho pode ser mostrado.
Perguntas sobre JWT
Como decodificar um JWT?
Cole o token na caixa. A página o divide nos pontos, converte as duas primeiras partes de Base64url e as mostra como JSON. Um Bearer no início é ignorado. No token de exemplo, o cabeçalho é {"alg":"HS256","typ":"JWT"}.
Esta página verifica a assinatura?
Não. Verificar exige o segredo ou a chave pública, e esta página nunca pede um. Um token que é decodificado aqui ainda pode ser forjado, alterado ou revogado. Verifique a assinatura no código do seu servidor com uma biblioteca de JWT mantida.
O que significam exp, iat e nbf?
São horários em segundos desde 1970-01-01 UTC (RFC 7519). exp é quando o token expira, nbf é o horário antes do qual ele não deve ser aceito, e iat é quando foi emitido. No token de exemplo, iat 1700000000 é 2023-11-14 22:13:20 UTC e exp 1700003600 é uma hora depois.
É seguro colar um token real aqui?
O token fica na aba do seu navegador e não é enviado a lugar nenhum. Mesmo assim, um token ativo é uma credencial: quem o tiver pode usá-lo até que expire. Cole tokens que sejam seus e prefira tokens expirados ou de teste quando puder.
Por que o meu token tem 5 partes?
Um token com 5 partes é um JWE, um JSON Web Token criptografado (RFC 7516). O payload é criptografado para o destinatário, então esta página mostra só o cabeçalho e os tamanhos das partes. O conteúdo não pode ser lido aqui.
O que significa "not Base64url" ou "not JSON"?
Cada uma das duas primeiras partes deve ser um texto Base64url que decodifica para um objeto JSON. A página indica a parte que falha e o motivo: um caractere fora do alfabeto, bytes que não são UTF-8, ou JSON com erro em uma linha e coluna. Um token cortado ou com caracteres a mais é a causa habitual.