Ir para o conteúdo principal

Como decodificar JWT online (com segurança) e o que cada campo significa

Guia técnico para devs: como decodificar JWT, entender header/payload/signature, validar expiração e debugar autenticação sem expor tokens em servidores externos.

Quorify Editorial10 de maio de 20266 min de leitura

JWT (JSON Web Token) é o padrão de autenticação stateless mais usado em 2026. Toda chamada autenticada de API moderna provavelmente carrega um JWT no header `Authorization: Bearer <token>`. Quando algo dá errado (401, 403, claim faltando), você precisa decodificar o token para debug. Mas decodificar JWT em ferramenta online tem um risco: tokens podem conter dados sensíveis. Este guia mostra como fazer com segurança.

Estrutura de um JWT

Um JWT tem 3 partes separadas por ponto: `xxxxx.yyyyy.zzzzz`. Cada parte é Base64URL-encoded:

  • Header (xxxxx): metadados do token — algoritmo de assinatura (alg) e tipo (typ, sempre 'JWT').
  • Payload (yyyyy): claims (afirmações) sobre o sujeito. Pode incluir user ID, roles, expiração, custom data.
  • Signature (zzzzz): assinatura criptográfica que valida que header e payload não foram adulterados.

Decodificar vs validar — diferença CRÍTICA

Decodificar é trivial — qualquer pessoa pode fazer. Header e payload são apenas Base64-encoded (não criptografado!). Cole o JWT em qualquer ferramenta de Base64 e você vê o conteúdo.

Validar requer a chave (secret se HMAC, chave pública se RSA/ECDSA). É a única forma de saber se o token é AUTÊNTICO. Sem validação, qualquer pessoa pode fabricar um JWT com qualquer payload — seu sistema NÃO PODE confiar em JWT decodificado sem validação assinatura.

Ferramentas online (incluindo o JWT Decoder do Quorify) só decodificam — não validam. Validação acontece no SEU backend, com a chave que só você tem.

Claims padrão (RFC 7519) que você precisa conhecer

JWT define claims padrão (campos no payload). Os mais importantes:

  • iss (Issuer): quem emitiu o token (ex: 'https://accounts.google.com').
  • sub (Subject): identificador do usuário (ex: 'user_12345').
  • aud (Audience): para quem o token é destinado (ex: 'api.exemplo.com').
  • exp (Expiration time): timestamp Unix de quando expira. Se passou, token é inválido.
  • iat (Issued at): timestamp Unix de quando foi emitido.
  • nbf (Not before): timestamp Unix antes do qual o token NÃO é válido.
  • jti (JWT ID): identificador único do token (útil para revogação).

Algoritmos de assinatura: HS256 vs RS256

HS256 (HMAC-SHA256): chave simétrica — mesma chave para assinar e validar. Mais rápido, mais simples. Use quando o emissor e validador são o mesmo sistema (monolitos, microservices internos).

RS256 (RSA-SHA256): chave assimétrica — chave privada para assinar (só o emissor tem), chave pública para validar (compartilhada). Use quando múltiplos sistemas validam tokens (OAuth providers como Google, Auth0, Cognito usam RS256).

ES256 (ECDSA-SHA256): variante mais moderna do RS256 com curvas elípticas. Tokens menores (chave EC é mais compacta que RSA). Recomendado para novos sistemas em 2026.

none: indica que NÃO há assinatura. SEMPRE rejeite tokens com `alg: none` no seu backend — é um vetor de ataque conhecido (CVE-2015-9235).

É seguro decodificar JWT em ferramenta online?

Depende da ferramenta. Se a ferramenta envia o JWT para servidor para decodificar, há risco — alguém na empresa da ferramenta pode logar o token, ou o servidor pode ser comprometido.

Se a ferramenta decodifica executado no navegador (JavaScript local), o risco é mínimo — você pode validar no DevTools (F12 > Network) que nenhuma requisição com seu JWT sai.

O JWT Decoder do Quorify decodifica processado localmente. Você pode até desligar a internet após carregar a página e a ferramenta continua funcionando. Para tokens de produção com dados muito sensíveis, prefira ainda assim ferramenta CLI (jwt.io desktop ou `node -e 'console.log(JSON.parse(Buffer.from("eyJ...".split(".")[1],"base64").toString()))'`).

Cenários comuns de debug

Token expirou: olhe `exp` no payload. Compare com `Date.now()/1000`. Se exp < now, expirou.

Audience errada: compare `aud` no payload com o que sua API espera. Se diferente, sua API rejeita corretamente.

Issuer errado: compare `iss` no payload com o issuer esperado. Útil em sistemas com múltiplos providers.

Assinatura inválida (mas decodifica): header e payload OK, mas signature não bate. Significa que o token foi gerado com chave diferente OU foi adulterado. Sua API DEVE rejeitar.

Algoritmo inesperado: olhe `alg` no header. Se sua API espera RS256 mas recebeu HS256, há tentativa de attack — sua API DEVE rejeitar.

Conclusão

Decodificar JWT é debug essencial em desenvolvimento de auth. Use ferramenta que processe localmente (como o JWT Decoder do Quorify) para evitar exposição de tokens. Lembre: decodificar ≠ validar — validação real acontece no SEU backend com a chave correta. Para tokens de produção muito sensíveis, prefira CLI ou desktop (zero rede envolvida). Para outras operações de debug auth, considere o Codificador Base64 e o Gerador de Hash.

Use a ferramenta agora

Decodificador JWT

Inspecione e debuge o payload de tokens JWT (JSON Web Tokens).

Abrir Decodificador JWT

Ferramentas relacionadas