UMS debe proporcionar un mecanismo seguro, configurable y auditable para gestionar parámetros a nivel de sistema y específicos de tenant. Los administradores de plataforma internos pueden gestionar parámetros globales y específicos de tenant a través del scope interno de gestión de UMS, mientras que los administradores de tenant solo pueden gestionar parámetros dentro de su propio scope cuando el tenant es responsable de su propia gestión. Todos los cambios de parámetros deben ser rastreados para cumplimiento y depuración.
| Actor | Responsabilidad |
|---|---|
| Administrador de Plataforma Interno | Gestiona parámetros globales del sistema y parámetros específicos de cualquier tenant a través del scope interno del portal. |
| Administrador de Tenant | Gestiona parámetros dentro de su propio scope de tenant únicamente cuando el tenant puede gestionar su propio scope de UMS. No puede acceder a configuraciones globales ni de otros tenants. |
| Sistema | Consume los parámetros configurados para determinar comportamiento, reglas, límites y permisos. |
CAN_MANAGE_GLOBAL_CONFIGURATION (para config global) o CAN_MANAGE_TENANT_CONFIGURATION (para config específica de tenant).Tenant.IsManagementOwner=true.OrganizationId coincide con el tenant objetivo para operaciones específicas de tenant.CAN_MANAGE_GLOBAL_CONFIGURATION.Scope = Global).OrganizationId == targetTenantId y que el tenant puede gestionar su propio scope.Scope = Tenant y TenantId = targetTenant.Si un administrador de tenant intenta acceder a configuración global, UMS devuelve un error 403 con mensaje “La configuración global solo es accesible mediante el scope interno de gestión.”
Si un administrador de tenant intenta acceder a la configuración de otro tenant, UMS devuelve un error 403 con mensaje “No tiene permiso para acceder a la configuración de este tenant.”
Si el administrador solicita un parámetro que no existe, UMS devuelve un error 404.
Si dos administradores modifican el mismo parámetro simultáneamente, UMS devuelve un error 409 Conflict con información de conflicto de ETag.
Los parámetros solo pueden ser modificados cuando están en estado Draft. Los parámetros publicados requieren crear una nueva versión Draft.
Si un admin interno intenta crear un parámetro con Scope Tenant sin especificar TenantId, UMS devuelve un error de validación.
TenantId, sin SystemSuiteId y sin ModuleId son Globales. Solo administradores del portal interno pueden gestionarlos.TenantId son específicos de tenant. Tanto admins internos como de tenant pueden gestionarlos cuando el tenant está marcado como responsable de gestión (admins limitados a su tenant).IsInheritable=true, configuraciones hijas pueden sobrescribir el parámetro.IsEncrypted=true, el valor se almacena encriptado y se desencripta solo cuando se consume.Major.Minor.Patch). Las actualizaciones a Draft incrementan la versión menor.En todos los endpoints de AppConfiguration, agregar inyección de ITenantContext y verificar:
// Para configs globales
if (scope == "Global" && !hasInternalPortalScope)
return Results.Forbid();
// Para configs de tenant
if (targetTenantId != organizationId && !hasInternalPortalScope)
return Results.Forbid();
| Método | Endpoint | Descripción | Autorización |
|---|---|---|---|
| GET | /app-configurations |
Listar configuraciones (filtradas por scope y permisos de usuario) | Basado en scope |
| GET | /app-configurations/{id} |
Obtener una configuración | Basado en scope y propiedad |
| POST | /app-configurations |
Crear nueva configuración | Admin interno o admin de tenant para su propio scope de gestión |
| PUT | /app-configurations/{id} |
Actualizar configuración draft | Igual que crear |
| POST | /app-configurations/{id}/publish |
Publicar configuración | Igual que crear |
| POST | /app-configurations/{id}/archive |
Archivar configuración | Igual que crear |
| Parámetro | Comportamiento |
|---|---|
scope=Global |
Solo administradores del portal interno pueden consultar; retorna todas las configs globales |
scope=Tenant&tenantId={id} |
Administradores del portal interno obtienen todas las configs de tenant; admins de tenant obtienen solo su tenant cuando está permitido |
| Sin filtro de scope | Retorna configs basadas en los permisos del usuario |
| Hardcode Actual | Código de Parámetro | Valor Default |
|---|---|---|
ACCESS_TOKEN_DURATION (frontend) |
ACCESS_TOKEN_DURATION_MS |
3600000 (1 hora) |
REFRESH_TOKEN_DURATION (frontend) |
REFRESH_TOKEN_DURATION_MS |
604800000 (7 días) |
MIN_PASSWORD_LENGTH |
MIN_PASSWORD_LENGTH |
12 |
MAX_VALIDITY_PERIOD_DAYS |
MAX_VALIDITY_PERIOD_DAYS |
365 |
| Evento | Campos |
|---|---|
APP_CONFIG_CREATED |
adminUserId, configId, code, scope, timestamp |
APP_CONFIG_UPDATED |
adminUserId, configId, code, oldVersion, newVersion, timestamp |
APP_CONFIG_PUBLISHED |
adminUserId, configId, code, version, timestamp |
APP_CONFIG_ARCHIVED |
adminUserId, configId, code, version, timestamp |
| Flag | Descripción | Default |
|---|---|---|
ALLOW_GLOBAL_CONFIG_MANAGEMENT |
Habilitar gestión de configuración global | true |
ALLOW_TENANT_CONFIG_MANAGEMENT |
Habilitar gestión de configuración específica de tenant | true |
AppConfiguration, AuditRecorddocs/domain/identity/tenant.md sección 10 - agregar reglas de gestión de parámetros