Skip to main content
CheckTown
Validadores

Validador JWT: Verifique a estrutura e claims de JSON Web Tokens

Publicado 6 min de leitura
Neste artigo

O que é um JWT?

Um JWT (JSON Web Token) é um formato de token compacto e seguro para URL usado para transmitir informações com segurança entre partes como um objeto JSON. Definido pelo RFC 7519, os JWTs são o padrão de fato para autenticação e autorização em aplicações web modernas e APIs.

Os JWTs são autossuficientes — eles carregam todas as informações necessárias para verificar a autenticidade do token e extrair declarações do usuário sem consultar um banco de dados. Isso os torna ideais para autenticação sem estado em sistemas distribuídos e arquiteturas de microsserviços.

Estrutura do JWT

Um JWT consiste em três partes codificadas em Base64URL separadas por pontos: header.payload.signature.

  • Header — um objeto JSON especificando o tipo de token (JWT) e o algoritmo de assinatura (por exemplo, HS256, RS256, ES256)
  • Payload — um objeto JSON contendo declarações: declarações registradas (iss, sub, exp, iat), declarações públicas e privadas
  • Signature — criada assinando o header e o payload codificados com uma chave secreta (HMAC) ou uma chave privada (RSA/ECDSA)

Experimente gratuitamente — sem cadastro

Validar um JWT →

Como funciona a validação JWT

A validação de JWT envolve verificações estruturais, verificação de assinatura e validação de declarações.

  • Verificação de estrutura — o token deve conter exatamente três segmentos codificados em Base64URL separados por dois pontos
  • Validação do header — o header deve conter campos typ e alg válidos. O algoritmo deve corresponder ao que o servidor espera
  • Verificação de assinatura — a assinatura é recalculada usando o header, o payload e a chave de assinatura. Se a assinatura recalculada corresponder, o token não foi adulterado
  • Validação de declarações — as declarações exp (expiração), nbf (não antes de) e iss (emissor) são verificadas em relação à hora atual e aos valores esperados

Casos de uso comuns

Os JWTs impulsionam a autenticação e autorização em toda a pilha web moderna.

  • Autenticação de API — os clientes incluem JWTs nos cabeçalhos de Autorização (esquema Bearer) para autenticar requisições de API sem sessões
  • Login único (SSO) — provedores de identidade emitem JWTs que múltiplas aplicações aceitam, possibilitando autenticação fluida entre aplicações
  • Tokens de acesso OAuth 2.0 — muitas implementações de OAuth usam JWTs como tokens de acesso, codificando escopos e permissões diretamente no token
  • Comunicação entre microsserviços — os serviços passam JWTs para propagar o contexto do usuário e as decisões de autorização entre os limites de serviço

Melhores práticas de segurança JWT

Os JWTs são poderosos, mas requerem tratamento cuidadoso para evitar armadilhas comuns de segurança.

  • Sempre valide o algoritmo — nunca permita que o campo alg do token dite qual algoritmo seu servidor usa. Isso evita o ataque do algoritmo 'none'
  • Defina tempos de expiração curtos — os JWTs não podem ser revogados depois de emitidos. Mantenha os tempos exp curtos (15 minutos para tokens de acesso) e use refresh tokens para sessões de longa duração
  • Use algoritmos assimétricos para sistemas distribuídos — RS256 ou ES256 permitem que os serviços verifiquem tokens sem compartilhar o segredo de assinatura
  • Nunca armazene dados sensíveis no payload — os JWTs são codificados, não criptografados. Qualquer pessoa pode decodificar o payload. Mantenha os segredos no seu banco de dados, não no token

Perguntas frequentes

Um JWT pode ser decodificado sem a chave secreta?

Sim. Os payloads de JWT são codificados em Base64URL, não criptografados. Qualquer pessoa pode decodificar e ler o header e o payload. A chave secreta só é necessária para verificar a assinatura — para confirmar que o token não foi alterado.

Qual é a diferença entre JWS e JWE?

JWS (JSON Web Signature) é o que a maioria das pessoas entende por JWT — um token assinado. JWE (JSON Web Encryption) é um token criptografado onde o payload não pode ser lido sem a chave de descriptografia. A maioria dos JWTs são tokens JWS.

Devo armazenar JWTs no localStorage ou em cookies?

Os cookies HttpOnly são mais seguros porque não são acessíveis via JavaScript (prevenindo o roubo por XSS). O localStorage é vulnerável a ataques XSS. Para aplicações sensíveis, use cookies HttpOnly Secure SameSite.

Ferramentas relacionadas