O que é JWT?
JWT, ou JSON Web Token, é um formato compacto para transmitir declarações, chamadas claims, entre partes. Pode usar assinatura, código de autenticação de mensagem ou criptografia.
JWT é sempre um token assinado?
Não. A IETF RFC 7519 — JSON Web Token prevê claims representadas em uma estrutura JWS ou JWE. Na serialização compacta, um JWS tem três segmentos e pode usar assinatura digital ou MAC; um JWE tem cinco segmentos e protege o conteúdo por criptografia. JWT também pode ser aninhado. Não é correto descrever todas as variantes como três partes assinadas com chave pública.
Base64url é codificação, não criptografia. Em um JWT somente assinado, o conteúdo normalmente pode ser lido por quem possui o token. Decodificá-lo não comprova autenticidade.
O que precisa ser validado?
Antes de usar as claims, a aplicação deve verificar o perfil de token esperado e sua proteção criptográfica. A IETF RFC 8725 — boas práticas para JWT orienta a validação de algoritmos, chaves, emissor e audiência e o tratamento separado de diferentes tipos de JWT.
- Aceitar apenas algoritmos e chaves confiáveis para o uso previsto; não escolher a política de segurança apenas pelo conteúdo recebido.
- Conferir emissor (iss) e destinatário (aud) conforme o perfil da aplicação.
- Aplicar as regras de expiração (exp), início de validade (nbf) e demais claims exigidas pelo protocolo.
- Verificar as permissões para a operação: um token válido não autoriza qualquer ação.
Qual a relação com OAuth e OpenID Connect?
Um access token de OAuth pode ser JWT, mas esse formato não é obrigatório. Em OpenID Connect, o ID token contém informações sobre a autenticação para o cliente. Ele não substitui o access token enviado à API. A distinção é definida no OpenID Foundation — OpenID Connect Core 1.0.
Exemplo: chamada a uma API
Uma API de pedidos recebe um access token JWT. Em um cenário ilustrativo, o token tem assinatura válida, mas sua audiência identifica outra API. A chamada deve ser rejeitada; a validade criptográfica sozinha não demonstra que o token foi emitido para esse recurso.
JWT resolve revogação e sessão?
Não automaticamente. Um token validado localmente pode continuar representando permissões antigas. O projeto precisa definir duração, renovação e mecanismos de revogação ou consulta de estado compatíveis com seu risco. Trocar o formato de sessão por JWT não elimina essas decisões.

