JWT Decoder
Understand JWT Decoder
Decodifica o cabeçalho e o payload de um JSON Web Token para você ler as claims, o algoritmo e a expiração.
How it works
Um JWT são três segmentos Base64URL unidos por pontos: cabeçalho, payload e assinatura. Os dois primeiros são codificados, não criptografados, e é por isso que lê-los não exige chave nenhuma — esta ferramenta os decodifica de Base64URL, interpreta o JSON e compara a claim exp com o horário atual para sinalizar a expiração. O segmento de assinatura é exibido tal como está e nunca é conferido contra nada, então nada do que você cola é enviado a lugar algum e nenhum segredo é necessário.
When to use it
- Ler sub, scope, aud e iss em um bearer token que uma API está rejeitando com 401 ou 403.
- Distinguir um token expirado de um a que falta apenas uma claim exigida pelo seu serviço.
- Conferir qual alg e qual kid um provedor de identidade usou, antes de ligar a verificação ao JWKS dele.
- Confirmar que um fluxo de login emitiu as claims que suas regras de autorização de fato leem.
- Inspecionar um token capturado na aba de rede do navegador ao rastrear um bug de permissões.
Watch out for
- Decodificar não é verificar, e um token decodificado não é um token confiável. Qualquer pessoa pode editar um payload, recodificá-lo e produzir algo que decodifica perfeitamente aqui. Só a verificação da assinatura contra a chave do emissor torna uma claim digna de ação.
- Nunca deixe um servidor confiar no campo alg do token. Escolher o algoritmo de verificação a partir do cabeçalho é o que viabiliza o ataque alg: none e o rebaixamento de RS256 para HS256, em que o atacante assina usando a chave pública como segredo HMAC. Fixe o algoritmo e a chave esperados no código de verificação.
- O payload é legível por qualquer um que tenha o token, inclusive pelo usuário final. Assinar protege uma claim de ser alterada; não faz nada para escondê-la. Mantenha segredos, ids internos e dados pessoais fora dele.
- exp, iat e nbf são segundos desde a época, não milissegundos. Um valor de Date.now() do JavaScript em exp joga a expiração dezenas de milhares de anos à frente, e todo verificador conforme vai aceitá-la.
Not the right tool for: Decidir se uma requisição está autorizada. Isso exige verificar a assinatura e as claims no servidor contra a chave do emissor; isto aqui é um apoio de depuração para ler o que um token diz.
Frequently Asked Questions
Decodificar um JWT é o mesmo que verificá-lo?
Não. Decodificar lê o conteúdo codificado em Base64URL. A verificação confere a assinatura contra uma chave secreta. Você consegue decodificar qualquer JWT sem a chave, mas em produção deve sempre verificar.
O que tem no payload de um JWT?
As claims comuns do payload incluem sub (sujeito/ID do usuário), iat (emitido em), exp (expiração), aud (público) e iss (emissor). Claims personalizadas podem ser qualquer coisa.
O que significa a claim exp?
A claim exp é um timestamp Unix que indica quando o token expira. Esta ferramenta mostra se o token está válido no momento ou expirado, com base no exp.
How to Use JWT Decoder
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.