Gateway — validação JWT ECOSIF (MVP1+)
O API Gateway (Traefik, AWS API Gateway ou ALB) deve validar o JWT ECOSIF emitido por ecosif-auth, não o token Microsoft/Google.
Fluxo
Login externo → POST /api/auth/external-login (sem JWT ECOSIF)
→ resposta { accessToken: <JWT_ECOSIF> }
Login local → POST /api/auth/signin (sem JWT ECOSIF)
Demais rotas → Authorization: Bearer <JWT_ECOSIF>
Parâmetros
| Variável | Obrigatório | Descrição |
|---|---|---|
AUTH_TOKEN_SECRET |
Sim | Mesmo secret HMAC em auth, microsserviços e gateway |
TOKEN_EXPIRATION |
Não | Default 1800000 (30 min) |
ECOSIF_JWT_SUBJECT_CLAIM |
Não | username (padrão) ou userId (MVP3) — claim sub |
ECOSIF_GWVAL_JWT_ECOSIF |
Doc | true — habilitar validação nas rotas /ecosif-* |
ECOSIF_GWVAL_ACCESSTOKEN_MS |
Doc | Modo B — ver gateway_access_token_entra.md |
ECOSIF_GWVAL_ACCESSTOKEN_GOOG |
Doc | Modo C — ver gateway_access_token_google.md |
Algoritmo: HS256. Claims mínimas: sub, iat, exp.
O valor de sub segue ECOSIF_JWT_SUBJECT_CLAIM (email/username ou ID numérico do usuário).
Rotas
Públicas (sem JWT ECOSIF)
POST */api/auth/external-loginPOST */api/auth/signin(login local)GET */actuator/health*- Assets do Angular (
/,/assets/*)
Protegidas
/ecosif-auth/*(exceto endpoints públicos acima)/ecosif-masterdata/*/ecosif-moviments/*/ecosif-querys/*/ecosif-reports/*/ecosif-compliance/*(excetoGET .../health— ver autenticacao-jwt-alinhamento.md)
Traefik (referência)
Com middleware JWT custom ou plugin, validar:
- Header:
Authorization: Bearer <token> - Secret: valor de
AUTH_TOKEN_SECRET(base64 se exigido pelo plugin) - Issuer: não aplicável (HMAC simétrico)
Configuração exata depende do plugin/middleware escolhido no Traefik da instalação.
AWS API Gateway (HTTP API)
- Criar JWT Authorizer com issuer fictício ou usar Lambda authorizer HMAC.
- Para HMAC simétrico, usar Lambda authorizer que valida
exp+ assinatura comAUTH_TOKEN_SECRET. - Associar authorizer às rotas
/ecosif-*. - Excluir
POST /ecosif-auth/api/auth/external-loginePOST /ecosif-auth/api/auth/signindo authorizer.
Modos B/C (gateway IdP)
Quando ECOSIF_API_TOKEN_MODE ≠ ECOSIF_JWT, o gateway não valida JWT ECOSIF nas APIs de negócio:
| Modo | Documento |
|---|---|
B — AZURE_ENTERPRISE_GATEWAY |
gateway_access_token_entra.md |
C — GOOGLE_GATEWAY |
gateway_access_token_google.md |
Defina ECOSIF_GWVAL_JWT_ECOSIF=false e habilite ECOSIF_GWVAL_ACCESSTOKEN_MS ou ECOSIF_GWVAL_ACCESSTOKEN_GOOG conforme o modo.
Checklist deploy
Status plataforma eCosif (Modo A / develop): concluído. Revalidar secret e claims em cada deploy.
- [x]
AUTH_TOKEN_SECRETidêntico em auth, 5 serviços Java, compliance e gateway - [x]
ECOSIF_JWT_SUBJECT_CLAIMidêntico em todos os serviços Java - [x]
external-loginesigninacessíveis sem JWT ECOSIF - [x] Chamada autenticada com token expirado retorna 401
- [x] Token emitido após login Microsoft/Google funciona nas APIs (Modo A — JWT ECOSIF nas APIs)
Referências
- ../dev/autenticacao_unificada_mvp.md
- gateway_access_token_entra.md — Modo B
- gateway_access_token_google.md — Modo C
- external-login-api.md
- ../dev/mvp3_flexibilidade.md
- Proposta:
.internal_docs/proposta-completa-autenticacao.mdseção 1 e 2.5