Decodificador e gerador de JWT
Cole um JSON Web Token para ler o header e os claims, ver quando expira e verificar a assinatura. Seu token não sai desta página.
Adicione esta calculadora ao seu site
Copie o código e cole no HTML da sua página. É grátis; mantenha o link de crédito, por favor.
Como um JWT é formado
Um JSON Web Token (RFC 7519) são três textos em Base64URL unidos por pontos: header.payload.assinatura. O header diz qual algoritmo assinou, o payload traz os claims (ID do usuário, papéis, expiração) e a assinatura é calculada sobre as duas primeiras partes.
No HS256 a assinatura é um HMAC feito com um segredo compartilhado, então o mesmo segredo assina e verifica. RS256, PS256 e ES256 assinam com chave privada e verificam com chave pública, o que permite que vários serviços validem tokens sem conseguir criá-los.
Como validar um token com segurança
- Sempre verifique a assinatura no servidor e recuse alg "none".
- Fixe o algoritmo esperado: não deixe o header do token escolher.
- Confira exp, nbf, iss e aud, com um ou dois minutos de tolerância de relógio.
- Use tokens de vida curta e trate-os como senha: este decodificador funciona offline, mas muitos outros enviam o token a um servidor.
Claims registrados do JWT (RFC 7519)
| Claim | Nome | Significado |
|---|---|---|
iss | Emissor | Quem criou e assinou o token |
sub | Assunto | De quem é o token, geralmente um ID de usuário |
aud | Público | Para quem o token se destina |
exp | Expiração | Segundos desde 1970 a partir dos quais deve ser recusado |
nbf | Não antes de | Segundos desde 1970 antes dos quais deve ser recusado |
iat | Emitido em | Quando foi criado |
jti | ID do JWT | ID único para impedir reutilização |
Perguntas frequentes
Qualquer um consegue ler um JWT?
Sim. O header e o payload estão apenas codificados em Base64URL, não criptografados, então quem tem o token consegue ler. Nunca coloque senhas ou segredos no payload.
Decodificar um JWT confirma que ele é válido?
Não. Decodificar só lê o conteúdo. Só a verificação da assinatura com o segredo ou a chave pública certos prova que ele não foi forjado nem alterado, e o servidor ainda precisa checar exp, nbf e aud.
Por que meu token aparece expirado se acabou de ser emitido?
exp, iat e nbf são em segundos desde 1970, não em milissegundos. Usar Date.now() do JavaScript sem dividir por 1000 joga a data milhares de anos à frente, e diferenças de relógio entre servidores podem fazer um token novo parecer expirado ou ainda não válido.
O que eu colo é enviado para um servidor?
Não. Esta ferramenta roda inteiramente no seu navegador, com JavaScript e a API Web Crypto embutida. Nada do que você digita, cola ou abre é enviado ou guardado.