Decodificador de JWT
Leia o cabeçalho, as claims e a expiração de um JSON Web Token no seu navegador. Só decodificação — nenhuma assinatura é verificada.
Roda inteiramente no seu navegador. Nada é enviado, registrado ou armazenado.
Esta ferramenta decodifica. Ela não verifica. Nada abaixo diz se o token é legítimo. Qualquer pessoa que tenha um token assinado consegue ler as claims dele, e qualquer pessoa consegue escrever um token parecido com este. Verifique a assinatura na sua aplicação, com a sua chave.
Cole um token e veja o cabeçalho, as claims e a expiração dele. A decodificação acontece no seu navegador: o token não é enviado, registrado nem armazenado.
Esta ferramenta não verifica a assinatura, e nada do que ela mostra significa que o token é legítimo.
Como funciona
Um JSON Web Token são três partes codificadas em base64url separadas por pontos: um cabeçalho dizendo qual algoritmo o assinou, um payload de claims e uma assinatura sobre os dois primeiros. Os dois primeiros são codificados, não criptografados — qualquer um que tenha o token consegue lê-los, que é exatamente o que acontece aqui.
As claims de tempo registradas aparecem como datas legíveis: `exp` quando ele deixa de valer, `nbf` quando passa a valer, `iat` quando foi emitido. Elas são comparadas com o seu relógio para dizer onde o token está dentro da janela dele.
A assinatura é mostrada como foi escrita e não é decodificada. Ela é uma assinatura sobre bytes, não sobre texto, e exibi-la como caracteres sugeriria que ela diz alguma coisa.
Exemplos
| Caso | Entrada | Resultado |
|---|---|---|
| Um token que não declara assinatura | eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIn0. | alg none, typ JWT, sub 1234567890 |
Perguntas frequentes
Por que ele não verifica a assinatura?
Porque verificar exige a chave de assinatura, e uma página que pedisse isso estaria pedindo que você colasse o segredo que protege o seu sistema em um site. Há também um motivo mais sutil: um decodificador que parecesse verificar convidaria você a confiar em um payload que qualquer pessoa poderia ter escrito. Verifique na sua aplicação, com a sua chave.
Um JWT é criptografado?
Não. Um token assinado é codificado, que não é a mesma coisa: qualquer um que o tenha consegue ler todas as claims dele, sem chave nenhuma. Nunca coloque em um token nada que o portador não deva ver. Tokens criptografados existem — eles têm cinco partes em vez de três — e esta ferramenta não consegue lê-los.
O que significa um algoritmo "none"?
Que o token não carrega assinatura nenhuma. É o ataque mais antigo contra JWT: tirar a assinatura, colocar `alg` em `none` e torcer para que a biblioteca que recebe aceite. A página sinaliza um token assim; se você está vendo um que não criou, trate-o como hostil.
O meu token sai do navegador?
Não. A decodificação roda localmente em JavaScript, e não há link de compartilhamento para esta ferramenta, porque um link colocaria o token em uma URL — onde ele acabaria no histórico do navegador e nos logs do servidor.
Bom saber
- Só decodificação. Nenhuma assinatura é verificada, e nada nesta página diz se um token é legítimo.
- O token é decodificado no seu navegador e nunca é enviado, registrado ou armazenado. A ferramenta precisa de JavaScript; sem ele não há decodificação nenhuma.
- Um token assinado é legível por qualquer um que o tenha. Trate toda claim dentro dele como pública.
Fontes
Todas as ferramentas de Código