JWT vs autenticação por sessão
Compare JWT e sessões no servidor para apps web, APIs, revogação, escala e depuração.
JWT e sessões no servidor são formas comuns de manter o usuário autenticado após o login. A diferença é onde a aplicação guarda o estado de confiança.
Sessões mantêm a maior parte do estado no servidor. JWTs carregam claims assinadas no próprio token.
Como funcionam sessões no servidor
Com sessão, o navegador costuma guardar um ID opaco em cookie. O servidor busca esse ID em banco, cache ou store de sessão.
Este modelo é forte quando você precisa de:
- Logout e revogação imediatos
- Controle centralizado de sessão
- Auth simples por cookie no browser
- Credenciais pequenas no cliente
- Mudança de papel gerenciada no servidor
O trade-off: toda requisição precisa acessar o estado de sessão.
Como funciona auth com JWT
Com JWT, o cliente envia um token assinado. A API verifica a assinatura e lê claims como subject, issuer, audience e expiração.
Útil quando você precisa de:
- APIs consumidas por vários serviços
- Verificação stateless na borda ou na camada de serviço
- Access tokens de curta duração de um IdP
- Claims que atravessam sistemas
- Fluxos mobile ou serviço a serviço
O trade-off: revogação e frescor de claims exigem design cuidadoso.
Revogação é a grande diferença
Sessões são mais fáceis de revogar porque o servidor é dono do estado. Invalida a sessão e a próxima requisição falha.
JWTs são mais difíceis de revogar se forem long-lived. Mitigações comuns: access tokens curtos, refresh tokens, versão de token, deny lists em casos de risco e revalidar permissões na aplicação.
Apps browser costumam misturar os dois
Muitos sistemas em produção combinam padrões:
- Cookie HTTP-only seguro no browser
- Backend mantém refresh ou estado de sessão
- APIs recebem access tokens JWT curtos
- Autorização sensível ainda consulta dados no servidor
A escolha nem sempre é binária.
Guia de depuração
Em fluxos JWT, inspecione claims com o Decodificador JWT e converta exp, iat e nbf com o Conversor de timestamp.
Em fluxos de sessão, depure cookies, disponibilidade do store, domain/path, SameSite e invalidação no servidor.
Regra prática
Use sessões quando controle centralizado e simplicidade no browser importam mais. Use JWT quando claims assinadas precisam circular entre APIs e serviços. Mantenha tokens de vida curta, verifique cada regra de confiança e não coloque segredos em nenhum dos dois.