Pular para conteúdo

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:

  1. Multi-issuer JwtDecoder (Microsoft + Itaú STS).
  2. Classificador: iss Itaú + flow=CC → ramo AZURE_ENTERPRISE_APP.
  3. Validação por ECOSIF_AZURE_APP_REQUIRED_SCOPES (não roles).
  4. Allowlist e lookup por sub (client id).
  5. Audience Itaú: sem claim aud no token real — ECOSIF_ITAU_STS_AUDIENCE_MODE=NONE (default).
  6. Mesmo onboarding b2b-app-links e 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-auth para integrador.
  • ecosif-automations / ecosif-compliance.

6. Critérios de aceite (14.10.9)

  1. Humano Azure → API 200 (regressão).
  2. CC Itaú mesmo token → masterdata e querys 200 (sem auth intermediário).
  3. CC sem vínculo → 401.
  4. CC scope inválido → 403 gateway ou 401 backend.
  5. 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