Frontend — external-login (Fase 3)

Integração Angular com POST /api/auth/external-login e JWT ECOSIF nas APIs de negócio.

Baseline: .env-dev em ecosif-structure (ECOSIF_AUTH_PROVIDER=AZURE, login local + Microsoft).

Fluxo baseline (Modo A — ECOSIF_API_TOKEN_MODE=ECOSIF_JWT)

Login local     → LoginService.login()        → POST /api/auth/signin
Login Microsoft → MSAL popup → idToken        → POST /api/auth/external-login
Login Google    → GIS popup  → idToken        → POST /api/auth/external-login

APIs /ecosif-*  → AuthInterceptor             → Authorization: Bearer <JWT_ECOSIF>

O MsalInterceptor não anexa token Microsoft às APIs ECOSIF (protectedResourceMap vazio).

Componentes

Arquivo Função
login.component.ts UI condicional; MSAL/GIS → externalLogin(idToken)
login.service.ts externalLogin({ provider, token, tokenType })
google-auth.service.ts Google Identity Services (popup/redirect)
auth.interceptor.ts JWT ECOSIF; ignora signin e external-login
msal-config.ts Scopes de ECOSIF_AZURE_SCOPES; sem Graph
app-config.service.ts Runtime: authProvider, azureScopes, apiTokenMode

Runtime (config.json + env.js)

Gerados pelo entrypoint Docker a partir de ECOSIF_*:

Campo config Variável
authentication.authProvider ECOSIF_AUTH_PROVIDER
authentication.azureScopes ECOSIF_AZURE_SCOPES
authentication.apiTokenMode ECOSIF_API_TOKEN_MODE
features.enableLocalAuth ECOSIF_ENABLE_LOCAL_AUTH
features.enableAzureAuth ECOSIF_ENABLE_AZURE_AUTH
features.enableGoogleAuth ECOSIF_ENABLE_GOOGLE_AUTH

Checklist E2E (homolog / .env-dev)

Preparação

cd ecosif-structure
docker compose --env-file .env-dev build ecosif-auth ecosif-angular ecosif-masterdata
docker compose --env-file .env-dev up -d

Login local

Login Microsoft (baseline)

Regressões

Critérios de aceite (Fase 3)

Referências