Como decodificar tokens JWT e inspecionar reivindicações com segurança
Resposta rápida
Para decodificar um JWT: cole o token no decodificador JWT e o cabeçalho e a carga aparecerão como formatados JSON instantaneamente. A ferramenta decodifica localmente as partes codificadas em Base64URL – seu token nunca sai do seu navegador. Lembre-se: a decodificação mostra apenas o conteúdo; ele não verifica a assinatura.
Introdução
Um JWT (JSON Web Token) é um formato de token compacto e seguro para URL usado para autenticação e troca de informações. Um JWT possui três partes separadas por pontos: header.payload.signature. O cabeçalho especifica o algoritmo e o tipo de token, a carga contém declarações (ID do usuário, funções, expiração) e a assinatura prova que o token não foi adulterado. A decodificação de um JWT permite inspecionar seu conteúdo para depuração - mas a decodificação não verifica a autenticidade. Este guia mostra como decodificar JWTs com segurança em seu navegador.
Passo a passo
-
Abra a ferramenta decodificador JWT
Vá para a página da ferramenta decodificador JWT. A ferramenta aceita qualquer string JWT (três partes codificadas em Base64URL separadas por pontos).
-
Cole seu token JWT
Cole o JWT no campo de entrada. Um JWT típico se parece com: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSJ9.signature. A ferramenta detecta automaticamente as três partes.
-
Revise o cabeçalho decodificado
A ferramenta Base64URL decodifica a primeira parte e a exibe como JSON. O cabeçalho normalmente contém 'alg' (algoritmo, por exemplo, HS256) e 'typ' (tipo, geralmente 'JWT').
-
Revise a carga útil decodificada (reivindicações)
A ferramenta decodifica a segunda parte e exibe as declarações no formato JSON. As declarações comuns incluem 'sub' (ID do sujeito/usuário), 'iat' (emitido em), 'exp' (expiração) e 'role' (função do usuário).
-
Verifique a assinatura (terceira parte)
A ferramenta mostra a parte da assinatura. Nota: a decodificação NÃO verifica a assinatura. Para verificar, você precisa da chave de assinatura e de uma biblioteca de verificação. Nunca confie nas declarações de JWT sem verificar a assinatura do lado do servidor.
Exemplos
Decodifique um JWT simples
Entrada: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTY5MzUyNjQwMH0.signature
Saída: Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user1","name":"Alice","iat":1693526400}
JWT com reivindicação de expiração
Entrada: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY5MzYxMjgwMH0.sig
Saída: Header: {"alg":"HS256"}
Payload: {"sub":"admin","exp":1693612800}
Problemas comuns
- Confundir decodificação com verificação —decodificar um JWT apenas lê seu conteúdo; isso NÃO prova que o token é autêntico. Sempre verifique a assinatura do lado do servidor com a chave de assinatura.
- Confiar em tokens expirados — verifique a reivindicação 'exp' e rejeite os tokens expirados. O valor 'exp' é um carimbo de data/hora Unix em segundos.
- Base64 vs Base64URL —JWT usa codificação Base64URL (sem preenchimento, - e _ em vez de + e /). Um decodificador Base64 padrão falhará em peças JWT.
- Dados confidenciais em cargas úteis —JWT podem ser lidos por qualquer pessoa que possua o token. Não armazene senhas, números de cartão de crédito ou outros segredos na carga útil.
Dicas
- Sempre verifique a assinatura JWT do lado do servidor antes de confiar em qualquer declaração – a decodificação por si só não é autenticação.
- Verifique as declarações 'exp' (expiração) e 'nbf' (não antes) para garantir que o token é válido para o horário atual.
- Use tokens de curta duração (15 a 60 minutos) com tokens de atualização para sessões longas — minimiza os danos se um token vazar.
- Use nosso decodificador JWT para depuração local e segura - seu token nunca sai do seu navegador.