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
Assinatura não verificada. Esta página decodifica o token; ela não confere se ele é legítimo. Qualquer pessoa pode criar um token com qualquer conteúdo.
- Algoritmo
- -
- Tipo
- -
- ID da chave
- -
- Partes
- -
Horários
| Claim | Seu fuso horário, depois UTC | Relativo |
|---|
Claims
| Claim | Significado | Valor |
|---|
Tokens de até 1 MB. Apenas decodifica: a assinatura é mostrada, mas não é verificada.
Como decodificar um JWT
- Cole o token na caixa. Um
Bearerno início e espaços ou aspas em volta são ignorados. - 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.
- 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
- Converta qualquer outro horário Unix em data com o Conversor de timestamp Unix.
- Formate ou valide um payload grande com Formatar e validar JSON.
- Decodifique um único trecho em Base64url à mão com Codificar e decodificar Base64.
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.