Decodificar JSON Web Tokens
Um JSON Web Token (JWT) é uma string compacta usada para transmitir informações de identidade e permissão entre sistemas — geralmente como um cabeçalho Authorization: Bearer após o login. Parece um texto aleatório, mas na verdade são três partes codificadas em Base64URL: um cabeçalho, um payload com as "claims" (reivindicações) e uma assinatura. Este decodificador de JWT da SPCX Tools divide o token, decodifica as duas primeiras partes em JSON legível e explica as claims importantes. A decodificação e a verificação acontecem localmente, então seu token nunca é transmitido.
Funcionalidades
- Cabeçalho e payload decodificados e formatados (pretty-print), cada um com um botão para copiar.
- Explicação das claims de tempo:
iat,nbf,expeauth_timeconvertidos de segundos Unix para datas no seu fuso horário. - Verificação de validade que informa rapidamente se o token está expirado ou ainda não está ativo.
- Verificação de assinatura HMAC para HS256, HS384 e HS512 usando a Web Crypto API do seu navegador.
- Funciona offline após o carregamento da página; nenhum dado é enviado para lugar nenhum.
Quando usar
Depuração de autenticação. Quando uma requisição falha com 401 Unauthorized, decodifique o token para verificar se ele expirou, se foi emitido para o público (aud) correto ou se contém os papéis (roles) e escopos (scopes) esperados.
Construção e teste de APIs. Verifique se o seu servidor insere as claims desejadas no token, com os tempos de expiração corretos, antes de implantar.
Aprender como OAuth e OpenID Connect funcionam. Tokens de ID e tokens de acesso de provedores de identidade são frequentemente JWTs. Decodificar um token de teste mostra quais informações o provedor compartilha sobre um usuário.
Anatomia de um JWT
cabeçalho.payload.assinatura
- Cabeçalho — o tipo de token e o algoritmo de assinatura, por exemplo
{"alg":"HS256","typ":"JWT"}. - Payload — as claims. As claims registradas incluem
iss(emissor),sub(sujeito, geralmente o ID do usuário),aud(público),exp,nbf,iatejti(ID do token). As aplicações adicionam claims personalizadas comonameourole. - Assinatura — criada ao assinar
cabeçalho.payloadcom um segredo (HMAC) ou uma chave privada (RSA, ECDSA, EdDSA). Se alguém alterar um único caractere do cabeçalho ou do payload, a assinatura não corresponderá mais.
Como o payload é apenas codificado, nunca coloque segredos como senhas em um JWT. Para decodificar outros dados em Base64, use a ferramenta de Base64; para inspecionar qualquer timestamp, use o Conversor de Timestamp Unix.