Viviane.
Voltar ao blog
Backend

JWT na prática: autenticação segura em APIs

Access token, refresh token e rotação segura aplicados no StockFlow e no Finance App.

7 min de leitura
  • 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.

typescript
// 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.