Contexto Delimitado: Configuración
Raíz de Agregado: IdpConfiguration
Módulo: Ums.Domain.Configuration.IdpConfiguration
Estado: Producción
El agregado IdpConfiguration almacena una regla de resolución de proveedor de identidad asociada a un tenant y a una suite. Encapsula tipo de proveedor, domain hints, payload externo de configuración, referencia de secreto, estado de activación, encadenamiento por fallback, prioridad de resolución y versionado.
IdpConfiguration es la raíz del agregado. Las referencias de secreto, cambios de payload, domain hints y transiciones de ciclo de vida se coordinan a través de ella.
TenantId, SystemSuiteId y ProviderType son obligatorios.ConfigPayload no puede estar vacío.Draft.Draft e Inactive pueden actualizarse.Active.Version numérica.| Entidad / VO | Tipo | Propiedad |
|—|—|—|
| IdpConfigurationId | Objeto de Valor | Identificador del agregado |
| TenantId | Objeto de Valor | Límite de pertenencia del tenant |
| SystemSuiteId | Objeto de Valor | Límite de pertenencia de la suite |
| ProviderType | Enumeración | Clasificación del proveedor |
| IdpConfigStatus | Enumeración | Draft, Active, Inactive |
| Evento | Disparador |
|—|—|
| IdpConfigRegisteredEvent | Nueva configuración creada |
| IdpConfigActivatedEvent | Configuración activada |
| IdpConfigDeactivatedEvent | Configuración desactivada |
| IdpConfigUpdatedEvent | Configuración mutable actualizada |
IdpConfiguration (Raíz de Agregado)
└── Props: IdpConfigurationProps
├── Id: IdValueObject
├── TenantId: TenantId
├── SystemSuiteId: SystemSuiteId
├── ProviderType: ProviderType
├── DomainHints: string[]
├── ConfigPayload: string
├── SecretRef: string
├── Status: IdpConfigStatus
├── ResolutionPriority: int
├── FallbackToId?: Guid
├── Version: int
└── Audit: AuditValueObject
classDiagram
class IdpConfiguration {
+Guid Id
+Guid TenantId
+Guid SystemSuiteId
+ProviderType ProviderType
+string[] DomainHints
+string ConfigPayload
+string SecretRef
+IdpConfigStatus Status
+int ResolutionPriority
+Guid FallbackToId
+int Version
+Create(tenantId, systemSuiteId, providerType, domainHints, configPayload, secretRef, resolutionPriority, fallbackToId, actor)
+Update(configPayload, secretRef, domainHints, actor)
+Activate(actor)
+Deactivate(actor)
}
sequenceDiagram
participant C as Cliente
participant H as Handler
participant R as IIdpConfigurationRepository
participant I as IdpConfiguration (AR)
C->>H: UpdateIdpConfiguration(id, payload, secretRef, domainHints)
H->>R: GetById(id)
R-->>H: IdpConfiguration
H->>I: Update(payload, secretRef, domainHints, actor)
I->>I: Validar estado mutable y payload
I->>I: Incrementar Version
I->>I: Levantar IdpConfigUpdatedEvent
H->>R: Update(configuration)
erDiagram
TENANT ||--o{ IDP_CONFIGURATION : "posee"
SYSTEM_SUITE ||--o{ IDP_CONFIGURATION : "delimita"
IDP_CONFIGURATION {
uniqueidentifier Id PK
uniqueidentifier TenantId FK
uniqueidentifier SystemSuiteId FK
int ProviderTypeId
nvarchar DomainHintsJson
nvarchar ConfigPayload
nvarchar SecretRef
int StatusId
int ResolutionPriority
uniqueidentifier FallbackToId
int Version
nvarchar CreatedBy
datetime2 CreatedAtUtc
nvarchar UpdatedBy
datetime2 UpdatedAtUtc
nvarchar AuditTimeSpan
}
TenantId.SystemSuiteId concreto.ResolutionPriority y FallbackToId.SecretRef es la referencia sensible de integración y debe resolverse mediante infraestructura segura de gestión de secretos.ConfigPayload es autoritativo para el comportamiento runtime del proveedor y debe controlarse administrativamente.