Decodificador JWT

Cole um JSON Web Token para ler o header e o payload, ver quando ele expira e entender cada claim. Seu token nunca sai do seu navegador.

Roda no seu navegadorSem cadastroNada é enviado

Decodificar não é verificar. Qualquer pessoa pode ler o header e o payload de um JWT, porque eles são apenas codificados em base64url. Esta ferramenta mostra o que o token afirma; ela não prova que o token é autêntico. Sempre verifique a assinatura no seu servidor.

Header

Payload


      

Verificar assinatura (opcional, HS256/HS384/HS512)

Verifica uma assinatura HMAC com um segredo informado por você, usando a Web Crypto API do navegador. O segredo nunca sai desta página. Tokens RSA/ECDSA precisam da chave pública do emissor e não são verificados aqui.

Como usar: Decodificador JWT

  1. Cole o token na caixa Token codificado. Um Bearer no início, vindo de um header Authorization, é ignorado.
  2. O header e o payload são decodificados na hora e exibidos como JSON formatado.
  3. Leia a tabela Claims explicados: exp, iat e nbf são convertidos em datas com tempos como “expira em” / “expirou há”.
  4. Confira a barra de status para problemas de expiração e os avisos sobre configurações arriscadas, como alg: none.
  5. Se quiser, informe o segredo compartilhado para verificar localmente uma assinatura HS256, HS384 ou HS512.

O que tem dentro de um JWT?

Um JSON Web Token (RFC 7519) são três strings base64url unidas por pontos: header.payload.signature. O header indica o algoritmo de assinatura (alg) e o tipo do token. O payload contém os claims, como quem é o usuário e quando o token expira. A assinatura é calculada sobre as duas primeiras partes com um segredo ou uma chave privada.

Decodificar não é verificar

O header e o payload são apenas codificados, não criptografados, então qualquer pessoa com o token consegue lê-los. É por isso que você nunca deve colocar senhas ou segredos no payload de um JWT. Decodificar mostra o que um token diz. Verificar a assinatura, normalmente no seu servidor de API com uma biblioteca como jose ou PyJWT, prova quem o emitiu e que ele não foi alterado. O servidor também deve checar exp, nbf, iss e aud, e rejeitar algoritmos inesperados.

Cola dos claims registrados

ClaimSignificado
issEmissor (issuer): quem criou e assinou o token
subSujeito (subject): normalmente o ID do usuário
audPúblico (audience): para qual API o token se destina
expMomento de expiração, em segundos desde a época Unix
nbfNão é válido antes deste momento
iatMomento de emissão
jtiID único do token, útil para listas de revogação

Depurando erros de “token expired”

Se uma API rejeita um token que parece novo, compare exp e nbf com o relógio do servidor. Pequenas diferenças de relógio entre máquinas são comuns, então a maioria das bibliotecas permite uma tolerância de 30-60 segundos. Confira também se exp está em segundos: um valor em milissegundos é um bug frequente e joga a expiração milhares de anos no futuro.

Perguntas frequentes

É seguro colar um JWT de produção aqui?
A decodificação acontece inteiramente no seu navegador com JavaScript. O token não é enviado, registrado nem armazenado. Como qualquer credencial, ainda assim trate tokens ativos com cuidado e prefira tokens expirados ou de teste ao compartilhar capturas de tela.
Esta ferramenta verifica a assinatura do JWT?
Só decodificar não verifica. Você pode, opcionalmente, verificar tokens HS256, HS384 e HS512 informando o segredo compartilhado; o HMAC é calculado localmente com a Web Crypto API. Tokens RS256 e ES256 precisam ser verificados com a chave pública do emissor no seu servidor.
Por que meu token aparece como expirado?
O claim exp está no passado em relação ao relógio do seu computador. Solicite um novo token ou renove-o com o seu refresh token. Se os horários parecerem errados, verifique diferença de relógio ou um valor de exp escrito em milissegundos.
Qual a diferença entre JWT, JWS e JWE?
JWT é o formato dos claims. Um JWS é um JWT assinado com três partes, que é o que esta ferramenta decodifica. Um JWE é um JWT criptografado com cinco partes; o payload dele não pode ser lido sem a chave de descriptografia.
Por que alg “none” é perigoso?
Um token sem assinatura pode ser forjado por qualquer pessoa. Os servidores devem rejeitar alg: none e só aceitar o algoritmo específico que esperam.

Ferramentas relacionadas