Pular para conteúdo

Spike AUTH-14.10 — claims Itaú STS CC e convivência dual-issuer

PLANID: AUTH-14.10.1
Data: 2026-09-02
Escopo: contrato de claims Itaú CC; gap vs AUTH-14 Entra; matriz de classificação humano vs M2M.


1. Contexto

Cliente Itaú informou que não possui permissão para criar service principal com App role Entra. O integrador B2B usa STS interno (openid.itau.com.br) com Client Credentials e claim scope — mesmo namespace de scopes do QW4 humano.

AUTH-14 (0.7.08.202608301) implementa perfil Microsoft app-only (roles). Este spike documenta o segundo perfil necessário.


2. Respostas do cliente (2026-09-02)

# Pergunta Resposta
1 Login humano — qual issuer? Somente Azure (login.microsoftonline.com)
2 Gateway Valida scope no authorizer
3 Token Itaú Payload CC fornecido (ver §3)
4 aud Emissor não envia aud — backend usa NONE (sem validação de audience)
5 Identificador integrador sub = client id de quem chama; DEV fixo (lambda emissora)
6 Scopes Mesmos scopes do humano QW4

3. Payload referência (DEV)

{
  "iss": "https://openid.itau.com.br/api/oauth/token",
  "sub": "e19c3d92-3603-4a89-923a-1a4bba633591",
  "exp": 1788290226,
  "iat": 1788286626,
  "Access_Token": "2aa3fe95.0d7e7bba-19f9-4017-970b-205406e5442c",
  "usr": "null",
  "flow": "CC",
  "source": "INT",
  "site": "ctmm1",
  "env": "D",
  "mbi": "true",
  "aut": "",
  "scope": "appid-42e02f44-8897-4513-978b-3ce788b41e27 qw4-balancetes-fundos-investimentos.read resource.READ"
}

4. Classificação de perfil (alvo implementação)

Critério Humano Azure M2M Itaú CC
iss login.microsoftonline.com/... openid.itau.com.br/...
flow CC
usr usuário presente "null"
Autorização scp (delegated) scope (string)
aud api://{client-id} típico omitido — identidade M2M via sub + scope
Lookup BD AZURE_ENTERPRISE AZURE_ENTERPRISE_APP
Chave vínculo oid / sub pessoa sub client id

5. Gap vs código atual (AUTH-14.3)

Capacidade Estado Gap
Detector isAppOnlyToken roles / idtyp / ausência scp Token Itaú tem scope, não rolesnão detectado
validateAccess ECOSIF_AZURE_APP_REQUIRED_ROLES Precisa REQUIRED_SCOPES
Allowlist appid/azp Precisa sub
JwtDecoder Issuer Microsoft único Precisa multi-issuer + JWKS Itaú
Audience ECOSIF_AZURE_API_AUDIENCE Perfil Itaú: ECOSIF_ITAU_STS_AUDIENCE_MODE=NONE (sem aud)
Propagação 5 APIs via starter OK após implementar no starter

6. Matriz HTTP esperada (pós-14.10)

Cenário Gateway Backend
Humano Azure OK 200 200
CC scope OK + vínculo 200 200
CC scope OK sem vínculo 200 401 AUTH_IDP_NOT_LINKED
CC scope insuficiente 403 — ou 401
CC flag off 200 401 app_only_disabled
JWT ECOSIF 401

7. Pendências cliente

  • [ ] URL JWKS openid.itau.com.br
  • [ ] sub PROD
  • [ ] Obrigatoriedade de resource.READ e appid-{guid} no scope
  • [ ] Confirmação: backend revalida JWT ou confia só gateway?

8. Referências

Documento Conteúdo
integracao_b2b_itau_sts_cc.md Desenho
auth14_10_entrega_tecnica_itau_sts_cc.md Implementação planejada
spike_auth14_claims_app_only.md Perfil Entra (AUTH-14.1)