Neste artigo
O que e um JWT?
Um JSON Web Token (JWT) e um formato de token compacto e seguro para URL usado para transmitir informações de forma segura entre partes como um objeto JSON. Um JWT consiste em tres partes codificadas em Base64URL separadas por pontos: cabeçalho.carga-util.assinatura.
Os JWTs permitem autenticação sem estado — o servidor não precisa armazenar dados de sessão porque todas as informações necessarias estão incorporadas no próprio token.
Estrutura do JWT explicada
Cada JWT e composto por tres partes distintas:
- Cabeçalho (Header) — um objeto JSON especificando o tipo de token (typ: JWT) e o algoritmo de assinatura (alg: HS256, RS256, etc.)
- Carga util (Payload) — um objeto JSON contendo claims como iss (emissor), sub (sujeito), exp (expiração), iat (data de emissão) e dados personalizados
- Assinatura (Signature) — criada assinando o cabeçalho e carga util codificados com uma chave secreta (HMAC) ou chave privada (RSA/ECDSA)
A carga util não e criptografada — qualquer pessoa pode decodifica-la. Nunca armazene informações sensiveis no payload de um JWT.
Algoritmos de assinatura
A escolha do algoritmo determina como a assinatura JWT e criada e verificada:
- HMAC (HS256, HS384, HS512) — algoritmos simetricos que usam a mesma chave secreta para assinar e verificar
- RSA (RS256, RS384, RS512) — algoritmos assimetricos que usam chave privada para assinar e publica para verificar
- ECDSA (ES256, ES384, ES512) — algoritmos assimetricos usando criptografia de curva eliptica
Para a maioria das aplicações web, HS256 e suficiente. Escolha RS256 ou ES256 quando tokens precisam ser verificados por terceiros.
Experimente gratuitamente — sem cadastro
Criar e assinar JWTs →Codificação vs decodificação
Codificar um JWT significa criar um novo token montando o cabeçalho, carga util e gerando a assinatura.
Decodificar um JWT pode significar extrair claims sem verificar a assinatura ou verificar completamente a assinatura. Sistemas em produção devem sempre verificar a assinatura.
Casos de uso comuns
Os JWTs tornaram-se o padrão para autenticação e autorização modernas:
- Autenticação de API — clientes incluem o JWT no cabeçalho Authorization (Bearer token)
- Tokens de acesso OAuth 2.0 — provedores OAuth emitem JWTs como tokens de acesso
- Comunicação entre microservicos — serviços passam JWTs para propagar identidade e permissões
- Single Sign-On (SSO) — um provedor de identidade central emite um JWT aceito por multiplas aplicações
Melhores praticas de segurança
JWTs sao poderosos mas requerem implementação cuidadosa:
- Definir tempos de expiração curtos
- Nunca armazenar dados sensiveis no payload
- Sempre validar todos os claims
- Usar exclusivamente HTTPS
- Rejeitar o algoritmo "none"
Perguntas frequentes
Qual a diferença entre JWT e cookies de sessão?
Cookies de sessão armazenam um ID no cliente e os dados no servidor. JWTs sao autocontidos — todos os dados estão no token.
Como revogar um JWT antes da expiração?
Como JWTs sao stateless, não ha mecanismo nativo de revogacao. Estrategias comuns incluem blocklists e rotação de refresh tokens.
Existe limite de tamanho para JWTs?
Não ha limite formal, mas limites praticos existem. Recomenda-se manter tokens abaixo de 4 KB.