O que é JWT: header, payload, assinatura e segurança

Entenda o que é um JWT, as três partes (header, payload e assinatura), a diferença essencial entre decodificar e validar um token, os principais riscos de segurança e por que não colar tokens sensíveis em ferramentas online.

Revisado pela equipe editorial ValorFinalRFC 7519 / MDN / OWASP
Calcule agora: JWT DecoderResultado na hora, de graça e sem cadastro.

JWT é onipresente em autenticação de aplicações web e APIs, mas é cercado de mal-entendidos, principalmente sobre segurança. Entender suas três partes e a diferença entre decodificar e validar evita erros perigosos. Neste guia você vê o que é um JWT, sua estrutura, os riscos e por que não colar tokens sensíveis em qualquer lugar. Para inspecionar um token, use o decodificador de JWT.

Resposta rápida

  • JWT é um token compacto e verificável com 3 partes: header.payload.signature.
  • Header e payload são só codificados em Base64URL, não criptografados: qualquer um lê o conteúdo.
  • Decodificar ≠ validar: validar exige conferir a assinatura com a chave, mais expiração e emissor.
  • Nunca cole tokens reais em sites desconhecidos nem coloque dados sensíveis no payload.

O que é JWT

JWT (JSON Web Token) é um padrão aberto para transmitir informações entre partes de forma compacta e verificável. É muito usado em autenticação: depois do login, o servidor entrega um token que o cliente envia em cada requisição para provar quem é, sem precisar consultar a sessão a cada vez.

As três partes

Um JWT é formado por três blocos separados por pontos:

Visualmente, um JWT tem este formato (três blocos separados por pontos):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.   ← header
eyJzdWIiOiIxMjM0IiwibmFtZSI6IkFuYSJ9.   ← payload
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV...   ← signature

Header e payload são apenas codificados em Base64URL, não criptografados. Para entender essa codificação, veja o codificador Base64.

Os dados dentro do payload são os claims. Alguns são padronizados (registered claims):

ClaimSignificado
issEmissor do token (issuer)
subSujeito (em geral o id do usuário)
audDestinatário do token (audience)
iatData de emissão (issued at)
expData de expiração (expiration)

Decodificar não é validar

Esse é o ponto mais importante. Decodificar é só ler o header e o payload, o que qualquer pessoa com o token consegue fazer, sem chave nenhuma. Validar é verificar a assinatura com a chave correta e checar a expiração e o emissor, para ter certeza de que o token é autêntico e ainda vale. A validação deve ocorrer no servidor, com a chave secreta ou pública apropriada. Uma ferramenta de decodificação mostra o conteúdo, mas não prova autenticidade.

Riscos de segurança

Por que não colar tokens sensíveis online

Como o payload é legível e um token válido funciona como senha, colar um JWT real de produção em um site desconhecido é arriscado. Use ferramentas que processam localmente no navegador, como o decodificador de JWT do ValorFinal, que não envia o token a nenhum servidor. Para entender o JSON que está dentro do payload, veja o guia o que é JSON; para gerar hashes, o gerador de hash.

Limitações deste guia

O conteúdo é educativo e não cobre todas as nuances de implementação segura de autenticação. Para sistemas em produção, siga as recomendações oficiais (RFC 7519 e OWASP) e, idealmente, use bibliotecas consolidadas em vez de implementar do zero. Veja também como validamos os cálculos.

Fontes oficiais

Conclusão

Entender que um JWT tem header, payload e assinatura, e que decodificar não é validar, evita os erros mais perigosos de autenticação. O payload é legível, então nunca guarde segredos nele nem cole tokens reais em sites desconhecidos. Para inspecionar um token com segurança, use o decodificador de JWT, entenda o JSON do payload e a codificação Base64, e conheça as demais ferramentas de tecnologia.

Calculadoras deste guia

Fontes oficiais

Links externos para os documentos oficiais consultados na construção desta página. O conteúdo deles pode mudar sem aviso; em caso de divergência, vale sempre a fonte oficial.

Como validamos os cálculos

Os valores citados neste guia são estimativos e baseados em fontes oficiais (RFC 7519 / MDN / OWASP). Eles podem variar conforme convenção coletiva, situação individual e atualizações da legislação. Entenda nossa metodologia em como validamos os cálculos.

Perguntas frequentes

O que é um JWT?
JWT (JSON Web Token) é um padrão para transmitir informações de forma compacta e verificável entre duas partes, muito usado em autenticação. Ele carrega dados (claims) em formato JSON, codificados em Base64URL, e uma assinatura que permite verificar se o token não foi alterado.
Quais são as três partes de um JWT?
Header (cabeçalho), payload (corpo) e signature (assinatura), separados por pontos. O header indica o algoritmo de assinatura; o payload contém os claims (como id do usuário e expiração); a assinatura é gerada com uma chave secreta e garante a integridade do token.
Qual a diferença entre decodificar e validar um JWT?
Decodificar é só ler o conteúdo do header e do payload, que estão em Base64URL e não são criptografados. Validar é verificar a assinatura com a chave correta e conferir expiração e emissor. Uma ferramenta de decodificação mostra o conteúdo, mas não prova que o token é autêntico: isso exige validação no servidor com a chave.
É seguro colar um JWT em uma ferramenta online?
Não com tokens reais e sensíveis. O payload de um JWT não é criptografado: qualquer um que tenha o token pode ler os dados e, se for um token de acesso válido, usá-lo. Use ferramentas que processam localmente, como a do ValorFinal, e nunca cole tokens de produção em sites desconhecidos.
JWT é criptografado?
Por padrão, não. O JWT mais comum (JWS) é assinado, não criptografado: o header e o payload ficam apenas codificados em Base64URL e podem ser lidos por qualquer um. A assinatura garante integridade (que não foi alterado), mas não confidencialidade. Existe o JWE, que de fato criptografa o conteúdo, mas é menos comum. Por isso nunca coloque dados secretos no payload.
Qual a diferença entre HS256 e RS256?
São algoritmos de assinatura. O HS256 é simétrico: usa a mesma chave secreta para assinar e verificar, então quem verifica também poderia assinar. O RS256 é assimétrico: assina com uma chave privada e verifica com a chave pública, o que permite distribuir a verificação sem expor a chave de assinatura. RS256 é comum em cenários com múltiplos serviços; HS256, em sistemas mais simples.
O que é o ataque do algoritmo none?
É uma falha clássica em que o atacante altera o header do JWT para o algoritmo "none", removendo a assinatura, e o servidor mal configurado aceita o token sem verificar. Por isso, a validação no servidor deve sempre exigir o algoritmo esperado e rejeitar "none". Confiar no algoritmo declarado pelo próprio token é uma das falhas listadas pela OWASP.
Onde devo guardar o JWT no cliente?
É um tema sensível. Guardar em localStorage é simples, mas expõe o token a ataques de XSS. Cookies com as flags HttpOnly e Secure protegem contra leitura por JavaScript, mas exigem cuidado com CSRF. Não há uma resposta única: a escolha depende da arquitetura e das proteções adotadas. Siga as recomendações da OWASP e use bibliotecas consolidadas.