Decodificador / Inspetor / Validador JWT

Decodifique, inspecione e verifique tokens JWT — header, payload, claims e assinaturas HMAC. Tudo é processado no seu navegador

Token JWT 0 caracteres
Exemplos:
Este token foi decodificado mas NÃO verificado. Decodificar não prova autenticidade — qualquer pessoa pode criar um JWT com qualquer payload.
Header

                    
Payload

                
Estado Temporal
Assinatura
Claims
Claim Valor Significado Status
Avisos
Cole um token JWT acima e clique em Decodificar para inspecionar o seu conteúdo.
A validação verifica a estrutura, formato e claims temporais. NÃO verifica a assinatura criptográfica. Use o separador Verificar para verificação de assinatura.
Cole um token JWT acima para validar a sua estrutura e claims.

Verificação de assinatura RSA e EC

A verificação de assinatura RSA e EC requer a importação de chaves públicas através da Web Crypto API. Esta funcionalidade está prevista para uma atualização futura.

Para tokens baseados em HMAC (HS256, HS384, HS512), a verificação completa de assinatura está disponível agora usando a opção Segredo HMAC.

Verificação de assinatura RSA e EC

A verificação de assinatura RSA e EC requer a importação de chaves públicas através da Web Crypto API. Esta funcionalidade está prevista para uma atualização futura.

Para tokens baseados em HMAC (HS256, HS384, HS512), a verificação completa de assinatura está disponível agora usando a opção Segredo HMAC.

O que é um JWT?

Um JSON Web Token (JWT) é um formato de token compacto e seguro para URL para transmitir informações de forma segura entre partes. Consiste em três partes codificadas em Base64URL separadas por pontos.

eyJhbGci...(Header).eyJzdWIi...(Payload).SflKxwRJ...(Assinatura)

Header

O header contém tipicamente dois campos: o algoritmo de assinatura (alg) e o tipo de token (typ).

{"alg": "HS256", "typ": "JWT"}

Payload (Claims)

O payload contém claims — declarações sobre o utilizador e metadados. Os claims padrão incluem:

ClaimNomeDescrição
issEmissorQuem emitiu o token
subSujeitoSobre quem é o token
audAudiênciaDestinatário pretendido do token
expExpiraçãoQuando o token expira (marca temporal Unix em segundos)
nbfNão Antes DeO token não é válido antes desta hora
iatEmitido EmQuando o token foi criado
jtiJWT IDIdentificador único do token

Assinatura

A assinatura é criada codificando o header e o payload, unindo-os com um ponto e assinando com o algoritmo especificado no header.

HMAC-SHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  secret
)

Conceitos Errados Comuns

"JWTs are encrypted" — Standard JWTs (JWS) are only signed, not encrypted. The payload can be read by anyone who has the token.
"Decoding a JWT means it's trusted" — Decoding only reads the content. Without signature verification, the token could have been tampered with.
"alg: none is harmless" — The none algorithm means no signature. Accepting it can allow attackers to forge tokens. Always reject alg: none in production.

Melhores Práticas de Segurança

Verifique sempre a assinatura antes de confiar em quaisquer claims
Verifique os claims exp, nbf e iat para validade temporal
Valide os claims emissor (iss) e audiência (aud)
Nunca armazene dados sensíveis (palavras-passe, cartões de crédito) no payload
Use segredos fortes para HMAC e rode as chaves regularmente
Prefira algoritmos assimétricos (RS256, ES256) para APIs públicas
Toda a decodificação, validação e verificação de assinatura acontece no seu navegador. O seu JWT e segredos nunca são enviados para nenhum servidor.

Tips

Decodificar Não Significa Confiar

Qualquer pessoa pode decodificar um JWT — Base64URL não é encriptação. Decodificar revela o conteúdo, mas apenas a verificação de assinatura prova que o token não foi adulterado.

Verifique a Expiração Antes de Usar

O claim exp (expiração) é uma marca temporal Unix em segundos. Verifique sempre que está no futuro antes de confiar num token. Esta ferramenta mostra o estado temporal instantaneamente.

alg: none É um Risco de Segurança

O algoritmo "none" significa que o token não tem assinatura. Aceitá-lo em produção pode permitir que atacantes falsifiquem tokens. Rejeite sempre alg: none no seu servidor.

Os JWT Não São Encriptados por Defeito

Os JWT padrão (JWS) são apenas assinados, não encriptados. O payload é legível por qualquer pessoa com o token. Nunca armazene palavras-passe, números de cartão de crédito ou outros segredos num payload JWT.

Casos de Uso Comuns

🔌

Depuração de API

Cole tokens de acesso de respostas API para inspecionar rapidamente claims, verificar expiração e verificar o emissor sem sair do seu navegador.

🔐

Teste de Fluxo de Autenticação

Decodifique tokens em cada passo dos fluxos OAuth2 ou OpenID Connect para verificar que os scopes, audiência e claims corretos estão presentes.

⏱️

Monitorização de Expiração de Tokens

Verifique quando os tokens expiram para depurar problemas de timeout de sessão. A ferramenta mostra diferenças de tempo legíveis como "expira em 14 minutos".

⚙️

Verificação de Pipeline CI/CD

Verifique que os tokens de serviço para serviço contêm os claims esperados antes de implementar. Cole tokens de logs do pipeline para inspecioná-los.

🛡️

Auditoria de Segurança

Inspecione tokens para fugas de dados sensíveis (PII no payload), algoritmos fracos (alg: none) ou claims de segurança em falta (exp, aud, iss).

Perguntas Frequentes

O que é um JWT?
Um JSON Web Token (JWT) é um formato compacto e seguro para URL para transmitir informações entre partes como um objeto JSON. Consiste em três partes codificadas em Base64URL: header, payload e assinatura, separados por pontos.
Um JWT é encriptado?
Os JWT padrão (JWS — JSON Web Signature) são assinados mas NÃO encriptados. O payload pode ser lido por qualquer pessoa. Os tokens JWE (JSON Web Encryption) são encriptados, mas são um formato diferente com 5 segmentos em vez de 3.
Posso confiar num JWT decodificado?
Não. Decodificar apenas revela o conteúdo — não verifica a autenticidade. Qualquer pessoa pode criar um JWT com qualquer payload. Deve verificar a assinatura criptográfica para confiar nos claims.
Qual é a diferença entre decodificar e verificar?
Decodificar lê o header e payload codificados em Base64URL. Verificar controla a assinatura criptográfica para garantir que o token foi emitido por uma parte confiável e não foi adulterado. Verifique sempre antes de confiar.
Porque é que o meu token aparece como expirado?
O claim exp é uma marca temporal Unix em segundos. Se esta hora está no passado, o token expirou. Verifique o valor de exp e compare-o com a hora atual. As diferenças de fuso horário não afetam isto — as marcas temporais Unix são sempre UTC.
O que significa o campo alg?
O campo alg (algoritmo) no header especifica o algoritmo criptográfico usado para assinar o token. Valores comuns: HS256 (HMAC com SHA-256), RS256 (RSA com SHA-256), ES256 (ECDSA com P-256 e SHA-256).
O que é a codificação Base64URL?
Base64URL é uma variante de Base64 que substitui + por - e / por _, e remove o preenchimento (=). Isto torna a saída segura para URLs e nomes de ficheiros. JWT usa Base64URL para ambos os segmentos header e payload.
O meu token ou segredo é enviado para algum servidor?
Não. Toda a decodificação, validação e verificação de assinatura acontece inteiramente no seu navegador usando JavaScript e a Web Crypto API. O seu JWT e segredos nunca saem do seu dispositivo.
Posso verificar tokens HS256 aqui?
Sim. Esta ferramenta suporta totalmente a verificação de assinatura HMAC (HS256, HS384, HS512) usando a Web Crypto API. Introduza o seu segredo no separador Verificar para verificar se a assinatura é válida.
Porque é que os tokens JWE não são suportados?
Os tokens JWE (JSON Web Encryption) têm 5 segmentos e requerem uma chave de desencriptação para ler o payload. Esta ferramenta foca-se em tokens JWS (assinados) que têm 3 segmentos. O suporte JWE pode ser adicionado numa atualização futura.