Ir para o conteúdo

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.

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.

Claims do token de exemplo
ClaimValorHorário (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
Algoritmos de assinatura comuns (alg)
algFamíliaHashTamanho da assinatura
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

Como decodificar um JWT

1

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.

2

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.

3

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.