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.

Três partes separadas por pontos. Nada é enviado a lugar nenhum.

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