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.
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:
- Header: indica o tipo (JWT) e o algoritmo de assinatura (por exemplo, HS256 ou RS256).
- Payload: contém os claims, ou seja, os dados, como id do usuário, permissões, emissor (iss), emissão (iat) e expiração (exp).
- Signature: a assinatura, gerada a partir do header, do payload e de uma chave, que garante que o token não foi adulterado.
Header e payload são apenas codificados em Base64URL, não criptografados. Para entender essa codificação, veja o codificador Base64.
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
- O payload não é secreto: nunca coloque senha ou dado sensível nele.
- Um token de acesso válido em mãos erradas equivale a estar logado: trate como credencial.
- Tokens sem expiração curta aumentam o risco em caso de vazamento.
- Aceitar o algoritmo none ou confiar no algoritmo declarado pelo token são falhas conhecidas (veja as recomendações da OWASP).
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.