APIs6 min de leitura
Autenticação com JWT na prática (sem enrolação)
Sem filosofia, sem debate OAuth vs JWT. O setup mínimo e seguro que uso em todos os projetos com refresh token rotativo.
#jwt#auth#segurança#node.js
JWT é ferramenta. Parem de tratar como religião.
O fluxo mínimo decente
- Access token curto (15 min).
- Refresh token longo (7 dias), rotativo, armazenado em
httpOnly cookie. - Blacklist de refresh tokens usados em Redis.
Gerando os tokens
function issueTokens(user: { id: string; role: string }) {
const access = jwt.sign(
{ sub: user.id, role: user.role },
ACCESS_SECRET,
{ expiresIn: "15m" }
);
const refresh = jwt.sign(
{ sub: user.id, jti: crypto.randomUUID() },
REFRESH_SECRET,
{ expiresIn: "7d" }
);
return { access, refresh };
}
Os 3 erros que eu já cometi
- Guardar access token em
localStorage. XSS come no café da manhã. - Não rotacionar refresh token. Uma fuga e o atacante vive para sempre.
- Botar muita informação no payload. Token cresce e vira bagagem.
Autenticação não é lugar de criatividade. Copie um padrão testado e seja feliz.
Gostou do post?
Compartilha com alguém que tá resolvendo o mesmo problema.