* Bootstrap da aplicação com NestJS + TypeScript * Migração de Node.js puro + JavaScript para NestJS como framework * Estrutura base: AppModule, AppController, health check em /health * loadEnv com busca hierárquica de .env por ambiente * Módulo auth completo com arquitetura em camadas: - AuthController: rotas HTTP de autenticação - AuthService: fachada de negócio - AuthConfigService: leitura centralizada de variáveis de ambiente - AuthTokenService: emissão de JWT próprio da aplicação * Autenticação via LDAP/Active Directory com ldapts * Autenticação via Microsoft OAuth 2.0 (Entra ID) * Proteção CSRF no fluxo OAuth com HMAC state assinado * Endpoint /auth/config para o frontend descobrir provedores ativos * Documentação do módulo em docs/auth.md
38 lines
983 B
Plaintext
38 lines
983 B
Plaintext
# Backend environment variables
|
|
|
|
NODE_ENV=development
|
|
PORT=3001
|
|
|
|
# Database
|
|
DB_HOST=postgres
|
|
DB_PORT=5432
|
|
DB_USER=omnichannel
|
|
DB_PASSWORD=change-me
|
|
DB_NAME=omnichannel
|
|
|
|
# HTTP/JWT
|
|
FRONTEND_URL=http://localhost:3000
|
|
JWT_SECRET=change-this-long-random-secret
|
|
JWT_EXPIRES_IN=8h
|
|
|
|
# Auth providers: ldap,microsoft or only one of them
|
|
AUTH_PROVIDERS=ldap,microsoft
|
|
|
|
# LDAP / Active Directory
|
|
LDAP_ENABLED=true
|
|
LDAP_URL=ldaps://kratos.sothistelecom.com:636
|
|
LDAP_DOMAIN=sothis.com.br
|
|
LDAP_USER_DN_TEMPLATE={{username}}@sothis.com.br
|
|
LDAP_SEARCH_BASE=DC=sothistelecom,DC=com
|
|
LDAP_SEARCH_FILTER=(&(objectClass=user)(sAMAccountName={{username}}))
|
|
# LDAP_BIND_DN=CN=ldap-reader,OU=Users,DC=example,DC=com
|
|
# LDAP_BIND_PASSWORD=change-me
|
|
|
|
# Microsoft Entra ID OAuth
|
|
MICROSOFT_ENABLED=false
|
|
MICROSOFT_TENANT_ID=common
|
|
MICROSOFT_CLIENT_ID=
|
|
MICROSOFT_CLIENT_SECRET=
|
|
MICROSOFT_REDIRECT_URI=http://localhost:3001/auth/oauth/microsoft/callback
|
|
MICROSOFT_SUCCESS_REDIRECT_URL=http://localhost:3000/login
|