ADR-0005: Autenticação — Passport.js (NestJS)
Status
Accepted
Context and Problem Statement
O atenvi-bff precisa de uma camada de autenticação extensível que suporte múltiplas estratégias (JWT, OAuth, local) integrada ao ciclo de Guards do NestJS.
Decision Drivers
- Integração nativa com NestJS Guards e Decorators
- Suporte a múltiplas estratégias de autenticação
- Ecossistema maduro com estratégias prontas
Considered Options
- Passport.js via
@nestjs/passport - Implementação manual com JWT
- Auth.js (NextAuth) no frontend
Decision Outcome
Chosen option: Passport.js via @nestjs/passport, porque integra nativamente com o sistema de Guards do NestJS e permite adicionar estratégias (JWT, OAuth) sem refatoração.
Positive Consequences
- Guards declarativos por rota/controller
- Troca de estratégia sem mudar lógica de negócio
- Suporte a JWT, refresh tokens, OAuth out-of-the-box
Negative Consequences
- Lógica de auth concentrada no BFF — frontends dependem dele para sessão
More Information
- Projeto:
atenvi-bff - Estratégia inicial: JWT + refresh token