O que é um JWT
Um JSON Web Token são três partes codificadas em base64url unidas por pontos: um cabeçalho com o algoritmo de assinatura, um payload de claims e uma assinatura sobre as duas primeiras. Decodificar não exige chave — qualquer pessoa com o token consegue ler —, por isso tokens nunca devem carregar segredos, só identificadores e permissões de curta duração. É a assinatura que prova que o token foi emitido por quem tem a chave e não foi alterado.
As claims registradas têm significado fixo: iss (emissor), sub (sujeito), aud (público), exp (expiração), nbf (não antes de), iat (emitido em) e jti (id do token). Todo o resto é claim personalizada definida pelo emissor, como plano ou região.
Exemplo resolvido
O token de exemplo da RFC 7519 decodifica para o cabeçalho {"typ":"JWT","alg":"HS256"} e o payload {"iss":"joe","exp":1300819380,"http://example.com/is_root":true}. O exp é 22 de março de 2011, 18:43 UTC, então o token expirou há muito tempo.
Como funciona
Cada parte é decodificada em base64url (RFC 4648 §5, com o padding restaurado) e interpretada como JSON. As claims iat, nbf e exp são lidas como segundos Unix e comparadas com o relógio do seu dispositivo. A verificação opcional calcula um HMAC sobre header.payload com a Web Crypto API e o segredo digitado e compara com a assinatura; nada é transmitido.
Perguntas frequentes
É seguro colar meu token aqui?
A decodificação roda só nesta aba e nada é enviado ou registrado. Mesmo assim, trate tokens ativos como senhas: prefira tokens expirados ou de teste em qualquer site.
Por que diz que a assinatura não foi verificada?
Ler um token nunca confere a assinatura. Informe o segredo compartilhado para verificar tokens HS256, HS384 ou HS512; RS256 e ES256 exigem chave pública, que está no roadmap.
O que significa exp?
O horário de expiração em segundos desde 1970-01-01 UTC. Depois dele, um servidor correto rejeita o token.
Por que qualquer pessoa consegue ler um JWT?
O payload é apenas codificado em base64url, não criptografado. Tokens criptografados usam JWE (RFC 7516), outro formato.
Fontes
- RFC 7519 — JSON Web Token (JWT)
- RFC 7515 — JSON Web Signature (JWS)
- RFC 4648 — The Base16, Base32, and Base64 Data Encodings
Revisado em 17 de out. de 2026 · vetores de teste fixtures/dev/jwt-decode/