AUTH-14.10 — Entrega técnica: B2B Itaú STS (scope + CC)¶
Extensão do AUTH-14 para perfil M2M Itaú (openid.itau.com.br), convivendo com login humano Microsoft.
Status: implementado (0.7.08.202609021); homolog E2E pendente (AUTH-14.10.9)
Depende de: AUTH-14.1–14.8 entregues (0.7.08.202608301)
PLANID pai: AUTH-14
1. Problema e solução¶
Problema¶
Cliente Itaú não usa App role Entra para B2B. Integrador emite token CC + scope no STS openid.itau.com.br. AUTH-14 valida roles e issuer Microsoft — token Itaú não classifica como app-only e falha no decoder.
Solução¶
Estender starter com segundo perfil M2M:
- Multi-issuer JwtDecoder (Microsoft + Itaú STS).
- Classificador:
issItaú +flow=CC→ ramoAZURE_ENTERPRISE_APP. - Validação por
ECOSIF_AZURE_APP_REQUIRED_SCOPES(não roles). - Allowlist e lookup por
sub(client id). - Audience Itaú: sem claim
audno token real —ECOSIF_ITAU_STS_AUDIENCE_MODE=NONE(default). - Mesmo onboarding
b2b-app-linkse propagação nas 5 APIs.
Princípio: um token STS → N serviços sem hop no auth.
2. Escopo por atividade (planejado)¶
| ID | Entrega | Módulo | Status |
|---|---|---|---|
| 14.10.1 | Spike + contrato claims (respostas cliente) | structure | Doc concluído — spike |
| 14.10.2 | Multi-issuer JwtDecoder + props Itaú STS | starter-security | Concluído |
| 14.10.3 | Detector + validator scope/CC + lookup sub |
starter-security | Concluído |
| 14.10.4 | YAML + vars novas; bump starter 5 APIs | auth, masterdata, moviments, querys, reports | Em teste |
| 14.10.5 | Docs deploy + baseline + CSV hub | structure, hub docs | Concluído |
| 14.10.6 | Checklist gateway dual-issuer (cliente) | structure | Doc concluído |
| 14.10.7 | Checklist vars/Terraform 5 serviços | structure, ecosif-itau | Doc concluído / TF pendente |
| 14.10.8 | Logs M2M perfil ITAU_STS_CC |
starter | Concluído |
| 14.10.9 | Homolog E2E dual perfil | QA, cliente | Pendente |
3. Variáveis novas (proposta)¶
| Variável | Default | Uso |
|---|---|---|
ECOSIF_AZURE_APP_REQUIRED_SCOPES |
vazio | CSV scopes exigidos no claim scope (Itaú CC) |
ECOSIF_ITAU_STS_ISSUER |
vazio | Issuer Itaú (https://openid.itau.com.br/api/oauth/token) |
ECOSIF_ITAU_STS_JWKS_URI |
vazio | JWKS para validação assinatura |
ECOSIF_ITAU_STS_AUDIENCE_MODE |
NONE |
Modo audience Itaú (sem aud; alternativa legado SUB_EQUALS_AUD) |
YAML aninhado (proposta): ecosif.security.azure.app-only.required-scopes + ecosif.security.itau-sts.*
4. Componentes a alterar (starter)¶
| Classe / área | Mudança |
|---|---|
EcosifOAuth2JwtDecoders |
Decoder composto ou roteador por iss |
AzureEntraAppOnlySupport |
Renomear/estender → suporte perfil Itaú (ItauStsCcSupport?) |
DefaultExternalIdentityUserResolver |
Ordem: Itaú CC → Entra app-only → humano |
EcosifSecurityProperties |
Bloco Itaú STS + requiredScopes |
| Testes unitários | Payload cliente DEV + regressão humano Microsoft |
5. Fora de escopo¶
- Alterar fluxo Angular / MSAL humano.
- Criar App role Entra (cliente não usa).
- Token exchange no
ecosif-authpara integrador. ecosif-automations/ecosif-compliance.
6. Critérios de aceite (14.10.9)¶
- Humano Azure → API 200 (regressão).
- CC Itaú mesmo token → masterdata e querys 200 (sem auth intermediário).
- CC sem vínculo → 401.
- CC scope inválido → 403 gateway ou 401 backend.
- Vars idênticas nas 5 APIs (evidência Terraform/checklist).
7. Referências¶
| Documento | Conteúdo |
|---|---|
| integracao_b2b_itau_sts_cc.md | Integração |
| checklist_vars_terraform_b2b_java.md | Terraform |
| auth14_entrega_tecnica_b2b_app_only.md | AUTH-14 base |