MVP4 — Identidade avançada (groups/claims)

Fase inicial do MVP4: mapeamento de groups e claims do token externo para tenant/role no provisionamento, e tabela identity_provider_link.

Backlog restante: access token Microsoft no gateway (M4-05/06), Microsoft Graph overage (M4-01), Admin UI (M4-10).

Funcionalidades implementadas

ID Item Status
M4-02 Mapeamento group → tenant + role ✅ YAML + env
M4-03 Mapeamento claim → tenant + role ✅ YAML + env
M4-08 Tabela identity_provider_link ✅ Flyway V0.7.00.9
M4-09 GroupMappingService / ClaimMappingService
M4-11 Provisionamento só com mapping (opcional) *_MAPPING_REQUIRED

Fluxo no external-login

  1. Valida token → ExternalIdentity (inclui groups e claims do JWT).
  2. Busca usuário por identity_provider_link (provider + externalId/oid/sub).
  3. Se não achar, busca por username/email.
  4. Se não existir e ECOSIF_AUTH_AUTO_PROVISION=true: - Resolve tenant/role via mapping (se habilitado). - Se *_MAPPING_REQUIRED=true e nenhum match → 404. - Cria gr_user e grava vínculo em identity_provider_link.
  5. Se usuário já existia, garante vínculo identity_provider_link no login.

Variáveis

ECOSIF_AUTH_GROUP_MAPPING_ENABLED=false
ECOSIF_AUTH_GROUP_MAPPING_REQUIRED=false
ECOSIF_AUTH_GROUP_MAPPING_FILE=/config/group-mapping.yaml

ECOSIF_AUTH_CLAIM_MAPPING_ENABLED=false
ECOSIF_AUTH_CLAIM_MAPPING_REQUIRED=false
ECOSIF_AUTH_CLAIM_MAPPING_FILE=/config/claim-mapping.yaml

Exemplos de arquivo

Azure Entra — claim groups

Configure o App Registration para emitir groups no ID token (ou use Graph overage no backlog).

Com ECOSIF_AUTH_AUTO_PROVISION=false, o mapping não cria usuário — apenas afeta tenant/role quando AUTO_PROVISION=true.

Próximos passos (MVP4)