Checklist — Entra App role + gateway B2B (AUTH-14.6)¶
Operações para habilitar integração app-only (client_credentials) no mesmo perímetro Modo B humano.
Perfil Itaú (AUTH-14.10): se o cliente usa STS
openid.itau.com.brcom scope (sem App role Entra), use checklist_b2b_itau_sts_cc.md em vez deste checklist Entra.
Relacionado: integracao_b2b_entra_app_only.md · gateway_access_token_entra.md
1. Microsoft Entra ID¶
API eCosif (resource server)¶
- [ ] App Registration da API eCosif identificada (
Application ID URI=api://{api-client-id}) - [ ] App role de aplicação criada (ex.:
Ecosif.Api.Accessou nome acordado com o cliente) - [ ]
ECOSIF_AZURE_APP_REQUIRED_ROLESno backend alinhada ao valor da role no token (rolesclaim)
App do integrador (confidential client)¶
- [ ] App Registration do integrador criada (confidential client)
- [ ] Secret ou certificado gerado e armazenado no vault do cliente (nunca no eCosif)
- [ ] Application permission para a App role da API eCosif adicionada
- [ ] Admin consent concedido no tenant
- [ ] Object id (
oid) do service principal do integrador anotado para onboarding eCosif
Validação STS¶
curl -sS -X POST "https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=${INTEGRATOR_CLIENT_ID}" \
-d "client_secret=${INTEGRATOR_CLIENT_SECRET}" \
-d "grant_type=client_credentials" \
-d "scope=api://${API_CLIENT_ID}/.default"
- [ ] Resposta HTTP 200 com
access_token - [ ] Payload em jwt.ms:
aud=api://…,rolespresente,idtyp=app(quando emitido) - [ ]
appid/azp= client id do integrador
2. eCosif (backend + auth)¶
- [ ]
ECOSIF_API_TOKEN_MODE=AZURE_ENTERPRISE_GATEWAYnas 5 APIs + gateway - [ ]
ECOSIF_ENABLE_AZURE_APP_ONLY=true(homolog/prod B2B) - [ ]
ECOSIF_AZURE_TENANT_IDeECOSIF_AZURE_API_AUDIENCEiguais ao Modo B humano - [ ]
ECOSIF_AZURE_APP_ALLOWED_CLIENT_IDSpreenchido em produção banco (allowlistappid/azp) - [ ] Usuário técnico criado em
gr_user+ escopogr_filial_usuario - [ ] Vínculo B2B cadastrado via
POST /api/admin/b2b-app-links(auth) ou seed homolog versionado - [ ] Flyway ≥
V0.7.00.15aplicado (comments providerAZURE_ENTERPRISE_APP)
3. API Gateway¶
Regras comuns (Modo B + B2B)¶
- [ ] Issuer:
https://login.microsoftonline.com/{tenant-id}/v2.0 - [ ] Audience:
api://{api-client-id}(=ECOSIF_AZURE_API_AUDIENCE) - [ ] JWKS / OpenID discovery configurados
- [ ] JWT ECOSIF (HS256) rejeitado nas rotas
/ecosif-*
Específico app-only¶
- [ ] Policy não exige claim
scp(delegated) - [ ] Token com
roles(App role) aceito quando assinatura/aud/issOK - [ ] (Recomendado prod banco) Allowlist de
appidouazpno gateway ou WAF upstream - [ ] Rotas públicas inalteradas:
/api/auth/external-login,/api/auth/signin, health
Azure API Management¶
Ver XML de exemplo em integracao_b2b_entra_app_only.md §10.
- [ ]
<validate-jwt>semrequired-claimsparascp - [ ] Allowlist customizada documentada no runbook do cliente (se aplicável)
AWS API Gateway¶
- [ ] JWT Authorizer com issuer + audience corretos
- [ ] Allowlist de client id via Lambda authorizer (se exigido pelo cliente)
4. Homologação rápida (pré AUTH-14.9)¶
| # | Caso | Esperado |
|---|---|---|
| 1 | Humano Enterprise → API | 200 |
| 2 | App vinculado + role OK → endpoint piloto | 200 |
| 3 | App sem vínculo | 401 backend |
| 4 | Token sem role / aud errado | 401 gateway ou backend |
| 5 | JWT ECOSIF no gateway | 401 gateway |
| 6 | Logs | ecosif.auth.m2m outcome=… sem Bearer completo |
5. Referências¶
| Documento | Conteúdo |
|---|---|
| integracao_b2b_entra_app_only.md | Fluxo completo B2B |
| manual_implantacao_b2b_entra_app_only.md | Runbook implantação |
| auth14_entrega_tecnica_b2b_app_only.md | Entrega técnica |
| variaveis_autenticacao_baseline.md | Vars ECOSIF_AZURE_APP_* |
| autenticacao.md | API onboarding /api/admin/b2b-app-links |
| identity_provider_link_b2b_app.md | Modelo BD |