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 informacoes de forma segura entre partes como um objeto JSON. Um JWT consiste em tres partes codificadas em Base64URL separadas por pontos: cabecalho.carga-util.assinatura.
Os JWTs permitem autenticacao sem estado — o servidor nao precisa armazenar dados de sessao porque todas as informacoes necessarias estao incorporadas no proprio token.
Estrutura do JWT explicada
Cada JWT e composto por tres partes distintas:
- Cabecalho (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 (expiracao), iat (data de emissao) e dados personalizados
- Assinatura (Signature) — criada assinando o cabecalho e carga util codificados com uma chave secreta (HMAC) ou chave privada (RSA/ECDSA)
A carga util nao e criptografada — qualquer pessoa pode decodifica-la. Nunca armazene informacoes 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 aplicacoes web, HS256 e suficiente. Escolha RS256 ou ES256 quando tokens precisam ser verificados por terceiros.
Experimente gratuitamente — sem cadastro
Criar e assinar JWTs →Codificacao vs decodificacao
Codificar um JWT significa criar um novo token montando o cabecalho, carga util e gerando a assinatura.
Decodificar um JWT pode significar extrair claims sem verificar a assinatura ou verificar completamente a assinatura. Sistemas em producao devem sempre verificar a assinatura.
Casos de uso comuns
Os JWTs tornaram-se o padrao para autenticacao e autorizacao modernas:
- Autenticacao de API — clientes incluem o JWT no cabecalho Authorization (Bearer token)
- Tokens de acesso OAuth 2.0 — provedores OAuth emitem JWTs como tokens de acesso
- Comunicacao entre microservicos — servicos passam JWTs para propagar identidade e permissoes
- Single Sign-On (SSO) — um provedor de identidade central emite um JWT aceito por multiplas aplicacoes
Melhores praticas de seguranca
JWTs sao poderosos mas requerem implementacao cuidadosa:
- Definir tempos de expiracao curtos
- Nunca armazenar dados sensiveis no payload
- Sempre validar todos os claims
- Usar exclusivamente HTTPS
- Rejeitar o algoritmo "none"
Perguntas frequentes
Qual a diferenca entre JWT e cookies de sessao?
Cookies de sessao armazenam um ID no cliente e os dados no servidor. JWTs sao autocontidos — todos os dados estao no token.
Como revogar um JWT antes da expiracao?
Como JWTs sao stateless, nao ha mecanismo nativo de revogacao. Estrategias comuns incluem blocklists e rotacao de refresh tokens.
Existe limite de tamanho para JWTs?
Nao ha limite formal, mas limites praticos existem. Recomenda-se manter tokens abaixo de 4 KB.