TanodTools
PT

Decodificador de JWT

Cole um JSON Web Token para ler o header e o payload, com os horários de expiração e emissão mostrados como datas reais.

Funciona inteiramente no seu navegador

Tokens de até 1 MB. Apenas decodifica: a assinatura é mostrada, mas não é verificada.

Como decodificar um JWT

  1. Cole o token na caixa. Um Bearer no início e espaços ou aspas em volta são ignorados.
  2. Leia o header e o payload abaixo, e os horários de expiração, início de validade e emissão no seu fuso horário e em UTC.
  3. Copie o payload ou o header decodificado como JSON formatado se precisar dele em outro lugar.

O que há dentro de um JSON Web Token

Para decodificar um JWT, basta saber que um JWT assinado são três trechos de texto em Base64url unidos por pontos: um header, um payload e uma assinatura. O header e o payload são apenas JSON escrito em Base64url, e é por isso que qualquer pessoa consegue lê-los. Base64url é uma codificação, não criptografia, então nunca coloque segredos no payload de um JWT, a menos que o token seja criptografado.

O payload contém as claims. Alguns nomes são registrados: iss (quem emitiu o token), sub (sobre quem ele é), aud (a quem ele se destina), exp (quando expira), nbf (não válido antes de), iat (quando foi emitido) e jti (um ID único). Os serviços adicionam as próprias claims, como papéis, escopos ou um endereço de e-mail.

A assinatura é o que torna as claims confiáveis, e verificá-la exige a chave de assinatura, que só o emissor e os serviços que aceitam o token deveriam ter. Este decodificador para de propósito na leitura: ele mostra o que o token diz e quando expira, que geralmente é o que você precisa ao depurar um login ou uma chamada de API.

Dicas

Perguntas frequentes

Isto verifica a assinatura?

Não. Esta página apenas decodifica o token. Qualquer pessoa pode criar um token com qualquer header e payload, então o conteúdo mostrado aqui são afirmações, não provas. Só o serviço que tem a chave de assinatura (ou a chave pública, no caso de tokens RS256 e ES256) pode dizer se um token é legítimo, e ele também precisa verificar a expiração, o público (audience) e o emissor.

É seguro colar um token aqui?

Esta página não envia o token para lugar nenhum: ele é decodificado por código que roda no seu navegador e não é armazenado. Mesmo assim, um access token ativo funciona como uma senha enquanto for válido. Evite colar tokens de produção em qualquer site e prefira tokens expirados ou de teste ao depurar.

Por que não consigo ler alguns tokens?

Um token com cinco partes em vez de três é um JWT criptografado (JWE). O header dele é legível, mas o payload é criptografado e só pode ser lido com a chave do destinatário, então esta ferramenta mostra o header e explica as partes. Outros erros, como um número errado de partes ou um texto que não é Base64url ou JSON válido, são informados com o que deu errado.

Como os horários são calculados?

As claims exp, nbf e iat são NumericDates: segundos desde 1º de janeiro de 1970 UTC. Elas são mostradas no fuso horário do seu dispositivo e em UTC, e comparadas com o relógio do seu dispositivo para dizer se o token expirou. Se o seu relógio estiver errado, os tempos relativos também estarão. Um valor que parece estar em milissegundos é sinalizado, já que esse é um erro comum.

O que significam alg, typ e kid?

alg é o algoritmo de assinatura, como HS256 (um segredo compartilhado), RS256 ou ES256 (um par de chaves). typ normalmente é JWT. kid é o ID da chave que o emissor usou, que indica a quem verifica com qual chave conferir a assinatura. Um token com alg igual a none não é assinado e nunca deve ser aceito para nada importante.