Pular para o conteúdo

Decodificador de JWT – Leia um JSON Web Token

Cole um JWT para ver o cabeçalho, as claims e quando ele expira, em JSON legível. O token é decodificado no seu dispositivo e nunca é enviado para lugar nenhum.

Roda inteiramente no seu navegador. Nada do que você cola é enviado para lugar nenhum.

Como decodificar um JWT

  1. Cole o seu token na caixa JSON Web Token ou toque em Ver um exemplo para carregar um token de exemplo inofensivo.
  2. Repare nas cores. O token aparece dividido em cabeçalho, payload e assinatura, cada parte com uma cor, para você ver onde cada uma começa.
  3. Leia o cabeçalho e o payload como JSON formatado. Use o botão de copiar ao lado de cada bloco para levar o JSON com você.
  4. Confira as claims de tempo. Expira em (exp), Emitido em (iat) e Válido a partir de (nbf) viram datas legíveis, com um selo de status: Não expirado, Expirado, Ainda não é válido ou Sem data de expiração.

Recursos

  • Decodificação instantânea enquanto você cola, sem apertar botão.
  • Cabeçalho e payload em JSON formatado, cada um com seu botão de copiar.
  • Datas legíveis para as claims exp, iat e nbf, com status de validade claro.
  • Aceita o prefixo Bearer, então dá para colar o valor do cabeçalho Authorization do jeito que está.
  • Alerta para alg none, um token sem assinatura que nunca deve ser aceito.
  • Mensagens de erro claras para token com número errado de partes, Base64URL inválido, JSON inválido ou JWE criptografado de cinco partes.
  • Compatível com Unicode, então nomes com acentos, ç e claims em qualquer idioma aparecem corretamente.

Por que usar o decodificador de JWT do Fileora

Access tokens, ID tokens e refresh tokens são credenciais. Colar esses tokens em um site que os manda para um servidor é um risco real, porque qualquer pessoa com um token válido pode agir como aquele usuário até ele expirar. O Fileora decodifica o token com JavaScript no seu navegador, então ele nunca sai do seu dispositivo e nada sobre ele fica registrado.

A ferramenta é grátis, não pede cadastro e não tem limites. Funciona no celular tanto quanto no notebook, o que ajuda quando você está investigando um token de um app mobile ou de um chamado de suporte.

Como um JWT é montado

Um JWT assinado são três pedaços de texto unidos por pontos: header.payload.signature. O cabeçalho e o payload são objetos JSON codificados em Base64URL, uma versão do Base64 que pode ir em URLs sem problema. Essa codificação não é criptografia. Qualquer pessoa com o token consegue ler todas as claims, e é exatamente isso que esta ferramenta faz.

O cabeçalho informa o algoritmo de assinatura em alg, por exemplo HS256 (um segredo compartilhado) ou RS256 (um par de chaves privada e pública). O payload carrega as claims: sub para o usuário, iss para o emissor, aud para o público a quem o token se destina e as claims de tempo exp, iat e nbf, contadas em segundos desde 1970.

A assinatura é o que torna o token confiável. O seu servidor recalcula a assinatura a partir do cabeçalho e do payload usando a chave dele, e rejeita o token se o resultado não bater, se o alg não for um dos esperados ou se o exp já tiver passado. Como qualquer pessoa pode criar um token com o payload que quiser, sempre verifique a assinatura no seu servidor com o segredo ou a chave pública antes de confiar em qualquer claim. Um decodificador como este serve para ler e depurar, não para decidir quem está logado.

Duas dicas: nunca coloque senhas ou outros segredos no payload, já que qualquer um consegue ler, e mantenha os tempos de expiração curtos. Quando precisar de um segredo de assinatura longo e aleatório, o gerador de senhas cria um para você, e o formatador de JSON ajuda a organizar um payload que você está montando à mão. Para decodificar só um trecho em Base64URL, use a ferramenta de codificar e decodificar Base64.

Perguntas frequentes

Como decodificar um JWT?

Cole o token na caixa. Um token válido é separado na hora em três partes: o cabeçalho e o payload aparecem como JSON formatado, e as claims exp, iat e nbf são mostradas como datas normais, com um status como Expirado ou Não expirado. Você pode colar o valor inteiro do cabeçalho Authorization, porque o prefixo Bearer é removido automaticamente.

Esta ferramenta verifica a assinatura do token?

Não, e isso é proposital. Verificar uma assinatura exige a chave secreta ou a chave pública do emissor, e elas pertencem ao seu servidor, não a uma página web. Decodificar só lê as partes do token que qualquer pessoa consegue ler. Use o que aparece aqui como informação para depurar, nunca como prova de que o token é legítimo.

É seguro colar um access token de verdade aqui?

O token é decodificado por JavaScript no seu próprio navegador e não é enviado, registrado nem armazenado. Mesmo assim, um access token ativo funciona como uma senha enquanto for válido, então o hábito mais seguro é colar tokens expirados ou de teste sempre que possível e evitar compartilhar prints de tokens ativos.

Por que aparece que o token expirou?

A claim exp guarda o horário de expiração em segundos desde 1º de janeiro de 1970 (UTC). A ferramenta compara esse valor com o relógio do seu aparelho no momento em que você colou o token. Se o relógio estiver errado, o status também vai estar, então confira a data exata mostrada em Expira em se o resultado parecer estranho.

O que significa o aviso sobre alg none?

Um cabeçalho com alg igual a none significa que o token não tem assinatura nenhuma, ou seja, qualquer pessoa poderia ter escrito o conteúdo. Algumas bibliotecas antigas aceitavam esses tokens por engano, o que permitia a atacantes forjar logins. O seu servidor deve sempre rejeitá-los, e a ferramenta mostra um aviso sempre que encontra um.

Por que não consigo ler meu token de cinco partes?

Um token com cinco partes separadas por pontos é um JWT criptografado, conhecido como JWE. O payload dele é texto cifrado, então só pode ser lido com a chave de descriptografia que está com o destinatário. Esta ferramenta lê tokens assinados (JWS), que têm três partes.

Não encontrou a ferramenta que precisa ou algo não está funcionando?

Conte qual ferramenta você gostaria ou o que deu errado. Lemos todas as mensagens, e os pedidos decidem o que criamos a seguir.

Abre seu app de e-mail. Por favor, não anexe arquivos privados.