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)

Protegidas

Traefik (referência)

Com middleware JWT custom ou plugin, validar:

Configuração exata depende do plugin/middleware escolhido no Traefik da instalação.

AWS API Gateway (HTTP API)

  1. Criar JWT Authorizer com issuer fictício ou usar Lambda authorizer HMAC.
  2. Para HMAC simétrico, usar Lambda authorizer que valida exp + assinatura com AUTH_TOKEN_SECRET.
  3. Associar authorizer às rotas /ecosif-*.
  4. Excluir POST /ecosif-auth/api/auth/external-login e POST /ecosif-auth/api/auth/signin do authorizer.

Modos B/C (gateway IdP)

Quando ECOSIF_API_TOKEN_MODEECOSIF_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.

Referências