Como decodificar e entender um token JWT

Desenvolvedor

Aprenda o que um JSON Web Token (JWT) contém, como decodificá-lo para ler o payload e como verificar sua estrutura sem usar uma biblioteca.

O que é um JWT?

Um JSON Web Token (JWT) é uma forma compacta e segura para URLs de transmitir informações (claims) entre duas partes. Foi padronizado pela RFC 7519 e tornou-se o formato de token padrão para APIs modernas e fluxos de login único (SSO). O token é uma única string que codifica um pequeno objeto JSON junto com uma assinatura criptográfica: qualquer pessoa que receba o token pode ler seu conteúdo, mas apenas quem tiver a chave de assinatura pode gerar um token válido. Essa propriedade torna o JWT ideal para autenticação sem estado: o servidor não precisa mais manter sessão, pois o próprio token carrega os claims (id do usuário, permissões, expiração).

Onde os JWTs são usados

  • Autenticação de API

    Um cliente faz login uma vez e recebe um JWT; cada requisição seguinte envia o token no cabeçalho Authorization: Bearer. A API verifica a assinatura e confia nos claims sem consultar o banco.

  • Login único (SSO)

    OpenID Connect é construído sobre JWT. Um provedor de identidade emite um ID Token descrevendo o usuário; apps consumidores confiam pois podem verificar a assinatura contra um endpoint JWKS público.

  • Acesso delegado de curta duração

    JWTs funcionam bem para URLs únicas (redefinição de senha, confirmação de email, links de download assinados). O claim exp faz o link expirar automaticamente.

Guia passo a passo

1

Entenda a estrutura do JWT

Um JWT tem três partes codificadas em Base64URL separadas por pontos: Cabeçalho.Payload.Assinatura. O cabeçalho especifica o algoritmo, o payload contém as claims (dados) e a assinatura verifica a integridade.

2

Decodifique o cabeçalho

Pegue a primeira parte (antes do primeiro ponto) e decodifique em Base64URL. Você obterá um objeto JSON como: {"alg":"HS256","typ":"JWT"}. Isso indica o algoritmo de assinatura utilizado.

3

Decodifique o payload

Pegue a segunda parte e decodifique em Base64URL. Você verá claims como: sub (sujeito/ID do usuário), exp (timestamp de expiração Unix), iat (emitido em), iss (emissor) e claims personalizadas.

4

Verifique a expiração

A claim exp é um timestamp Unix. Compare com o horário atual para ver se o token ainda é válido. Exemplo: exp: 1700000000 = 14 de novembro de 2023, 22:13 UTC.

5

Use nosso Decodificador JWT

Cole seu JWT na ferramenta Decodificador JWT. Ela exibe instantaneamente o cabeçalho, payload e seção de assinatura decodificados em JSON formatado — sem servidor, tudo rodando no seu navegador.

Usar nossa ferramenta

Decodificador JWT

Perguntas frequentes

Q: É seguro decodificar um JWT no navegador?

A: Sim — decodificar (ler o payload) é seguro. JWTs são codificados em Base64URL, não criptografados. Nunca compartilhe seu JWT com sites terceiros não confiáveis, pois o token concede acesso.

Q: Posso verificar a assinatura JWT sem o segredo?

A: Não. A verificação de assinatura requer a chave secreta (para HMAC) ou chave pública (para RSA/ECDSA). Nosso decodificador mostra a estrutura, mas não pode verificar a assinatura sem a chave.

Q: O que significa "JWT expirado"?

A: Significa que o timestamp exp está no passado. O servidor rejeita tokens expirados. Você precisará atualizar ou re-autenticar para obter um novo token.