Decodificador JWT
Verificando a assinatura...
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/ES512 |
Chave pública ECDSA |
PS256/PS384/PS512 |
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
Gerador de cards CSS
Crie um card com seu título, texto e link opcional. Ajuste cores, borda, espaçamento, sombra e efeito ao passar o mouse. Depois copie ou baixe o HTML e o CSS.
Gerador de textura de ruído
Gere uma textura de ruído em SVG que se repete sem emendas, com opacidade, frequência do grão, tipo de ruído e cor de fundo ajustáveis, e copie o CSS já pronto.
Gerador de Configuração Webpack
Crie um webpack.config.js para webpack 5 a partir de um formulário curto: defina o entry, a pasta de saída e o modo, e ative TypeScript, Babel, um loader CSS, HtmlWebpackPlugin e um servidor de desenvolvimento.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Ferramenta disponível em outros idiomas
- ตัวถอดรหัส JWT [TH]
- Mã giải mã JWT [VI]
- Decoder JWT [ID]
- Dekoder JWT [PL]
- JWTデコーダ [JA]
- مُفكّك JWT [AR]
- JWT-Dekoder [DE]
- JWT 해독기 [KO]
- Decodificador JWT [ES]
- Décodeur JWT [FR]
- JWT-avkodare [SV]
- JWT-decoder [NL]
- JWT Decoder [EN]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT Dekoderi [TR]
- JWT 解码器 [ZH]