JWT na prática: autenticação segura em APIs
Access token, refresh token e rotação segura aplicados no StockFlow e no Finance App.
- JWT
- Backend
- Segurança
- API REST
Por que JWT nos meus projetos
No StockFlow e no Finance App, escolhi JWT por ser stateless e facilitar integração com frontends e documentação Swagger.
O desafio não é emitir o token — é gerenciar expiração, renovação e revogação sem comprometer a experiência do usuário.
Access token curto + refresh token
Access tokens com vida curta (15 minutos) limitam a janela de exposição. Refresh tokens com vida maior ficam persistidos com hash no PostgreSQL.
// Payload mínimo — sem dados sensíveis
{
"sub": "user-uuid",
"tenantId": "company-uuid",
"role": "MANAGER",
"exp": 1710000000
}Fluxo de renovação
O frontend do StockFlow intercepta 401, chama /auth/refresh com o refresh token em cookie HttpOnly e repete a requisição original.
No Finance App, o fluxo é similar, com validação de fingerprint do dispositivo para reduzir roubo de sessão.
- Refresh token armazenado com hash bcrypt
- Rotação a cada renovação
- Invalidação em logout
Boas práticas aplicadas
Nunca armazeno senha em texto puro. Secrets ficam em variáveis de ambiente. Algoritmo HS256 com chave forte e rotação planejada.
Health checks e rate limiting na rota de login protegem contra brute force — padrão que também uso no Ticket Sales.