Decodificador JWT
Cole um JWT (três partes codificadas em base64url separadas por pontos) e o decodificador mostrará o cabeçalho, a carga útil e a assinatura, decodificados e formatados, junto com o algoritmo detectado, a expiração do token no seu horário local e se nbf (não antes), iat (emitido em) e exp (expiração) são consistentes. Verificação de assinatura opcional se você tiver a chave secreta ou chave pública.
Como decodificar um JWT
-
1
Cole o token
Três strings base64url separadas por `.` (cabeçalho.carga útil.assinatura).
-
2
Leia o cabeçalho decodificado
Algoritmo, tipo, ID da chave (`kid`). O algoritmo informa qual tipo de chave você precisa para verificação.
-
3
Leia a carga útil
Reivindicações padrão (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) mais quaisquer reivindicações personalizadas que seu aplicativo emite.
-
4
Verifique (opcional)
Forneça a chave secreta HMAC (para HS256/384/512) ou a chave pública (para RS256, ES256, etc.) para confirmar que a assinatura é válida.
Anatomia de um JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Cada segmento é codificado em base64url (não base64 padrão). O cabeçalho é JSON como {"alg":"HS256","typ":"JWT"}, a carga útil é JSON como {"sub":"1234567890","name":"Alice","iat":1600000000}, e a assinatura é a assinatura HMAC ou RSA de cabeçalho.carga útil.
Reivindicações padrão (RFC 7519)
| Reivindicação | Nome | Notas |
|---|---|---|
iss |
Emissor | Quem emitiu o token |
sub |
Assunto | Sobre quem é o token |
aud |
Público | Para quem é o token |
exp |
Tempo de expiração | Timestamp Unix; rejeitado após este tempo |
nbf |
Não antes | Timestamp Unix; rejeitado antes deste tempo |
iat |
Emitido em | Timestamp Unix da criação do token |
jti |
ID do JWT | Identificador único para listas de revogação |
Algoritmos suportados
Valor alg |
Tipo de chave |
|---|---|
HS256/HS384/HS512 |
Chave secreta HMAC compartilhada |
RS256/RS384/RS512 |
Chave pública RSA |
ES256/ES384 |
Chave pública ECDSA |
PS256/PS384 |
Chave pública RSA-PSS |
EdDSA / Ed25519 |
Curva de Edwards |
none |
Nunca confie nisso, tokens não assinados |
O pé na porta do alg: none
Bibliotecas JWT antigas permitiam tokens "alg": "none" e os aceitavam ingenuamente como válidos. Sempre:
- Liste os algoritmos que seu aplicativo aceita.
- Rejeite
alg: noneincondicionalmente. - Rejeite
alg: HS256quando seu código de verificação esperaRS256(o ataque de “confusão de algoritmo”).
O que o JWT NÃO É
- Não é criptografado. O cabeçalho e a carga útil são codificados em base64, o que é trivialmente decodificado. Nunca coloque segredos em um JWT sem envolvê-lo em JWE.
- Não é revogável por padrão. Uma vez emitido, um JWT é válido até
exp. Para revogação, você precisa de uma lista negra ou expiração curta + tokens de atualização. - Não é um substituto para cookies de sessão para todos os casos de uso. Tokens opacos armazenados no servidor são frequentemente mais simples e seguros.
Erros comuns
- Confiar no cabeçalho. O
kidealgvêm do próprio token. Um servidor comprometido pode defini-los arbitrariamente; sempre valide contra uma lista fixa. - Ignorar a diferença de
nbfeiat. A deriva do relógio significa queiat > agorapode acontecer. Permita uma pequena margem (30-60s). - Registrar JWTs inteiros. A carga útil frequentemente contém IDs de usuários, e-mails, permissões, PII que não deve acabar no stdout.
- Usar HS256 com uma chave fraca. Uma chave secreta de 16 caracteres pode ser quebrada em minutos. Use pelo menos 256 bits de entropia aleatória.
Perguntas frequentes
Não. A decodificação ocorre no seu navegador. O token permanece local, importante porque os JWTs frequentemente contêm dados de sessão, IDs de usuários e permissões.
Sim. Se você colar a chave secreta HMAC compartilhada ou a chave pública codificada em PEM, a verificação acontece no seu navegador. A chave nunca sai da sua máquina.
Significa que o token não está assinado. Nunca aceite tais tokens em produção, eles podem ser forjados trivialmente. Vários CVEs de alto perfil foram especificamente sobre bibliotecas que aceitaram alg: none por padrão.
A assinatura JWT prova autenticidade, não confidencialidade. O cabeçalho e a carga útil são codificados em base64url, o que é reversível. Para segredo, use JWE (JSON Web Encryption) ao redor do JWT, ou evite colocar dados sensíveis na carga útil.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de EditorConfig
Gere um arquivo .editorconfig com suas regras de estilo e tamanho de indentação, fim de linha, charset e espaços em branco para formatação consistente entre IDEs e editores.
Validador de Email
Valide um endereço de email: verificação de sintaxe RFC 5322, consulta de registro MX em tempo real, além de detalhes de parte local, domínio e comprimento. Nenhum email é enviado.
Formatador de HTML
Formate HTML localmente no navegador com indentação de dois ou quatro espaços. O HTML não é enviado nem validado.
Ferramenta disponível em outros idiomas
- Mã giải mã JWT [VI]
- Decodificador JWT [ES]
- JWT-avkodare [SV]
- مُفكّك JWT [AR]
- JWTデコーダ [JA]
- ตัวถอดรหัส JWT [TH]
- JWT-Dekoder [DE]
- JWT 해독기 [KO]
- JWT-decoder [NL]
- Décodeur JWT [FR]
- Decoder JWT [ID]
- Dekoder JWT [PL]
- JWT 解码器 [ZH]
- JWT Decoder [EN]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]