Skip to main content

07. Especificación de Roles y Permisos: MDX-Cloud

Esta sección define la matriz de seguridad y el mecanismo de control de accesos para MDX-Cloud. El sistema garantiza que cada usuario interactúe exclusivamente con los endpoints y pantallas necesarios para su función operativa, protegiendo la integridad de las reglas de negocio.

07.1 Matriz de Permisos (RBAC)

⚠️ Nota Operativa (Permisos Dinámicos y Multi-Rol): La siguiente matriz representa el comportamiento estándar (plantillas base) del sistema. Sin embargo, dada la naturaleza dinámica del negocio donde "un empleado puede tener múltiples cachuchas" (ej. el Auxiliar cobra en mostrador los fines de semana), el sistema no tiene roles rígidos o estáticos en el código. En la base de datos y en JWT, los permisos son atómicos y granulares. Un administrador puede asignarle a un usuario específico la combinación exacta de permisos que necesite, creando perfiles híbridos a la medida.

A continuación se detalla la matriz de capacidades lógicas del sistema cruzada contra los siete (7) roles oficiales (como plantillas de partida):

Módulo / Capacidad del SistemaComprasAgente VentasAuxiliar AlmacénEncargado AlmacénCrédito CobranzaGerenciaRecepcionista
compras.CrearOrdenCompra
wms.VerLotesCaducidad
wms.AuditarInventarioCritico
ventas.CrearPedidoCampo
ventas.AsignarPreciosPerfil
credito_cobranza.VerEstadosCuenta
credito_cobranza.AprobarExcepcion
cfdi.DividirFoliosFiscales

Leyenda: ✅ = Acceso Autorizado | ❌ = Acceso Denegado por Política.


07.2 Flujo de Seguridad y Autorización en .NET 10

Sustituyendo el planteamiento preliminar basado en Filament PHP, la arquitectura desacoplada de MDX-Cloud delega la seguridad en dos capas coordinadas de forma asíncrona:

A. Autenticación Stateless (Backend API)

  1. Emisión de Tokens: Cuando un usuario inicia sesión, el host .WebApi valida las credenciales contra la tabla de identidades y genera un token JWT (JSON Web Token) firmado criptográficamente que incluye los Roles y Permisos (Claims) del usuario.
  2. Validación en cada Request: El frontend en React almacena este token de manera segura y lo inyecta automáticamente en la cabecera de cada petición HTTP (Authorization: Bearer <token>). La API de .NET 10 valida el token en milisegundos en memoria sin necesidad de consultar la base de datos PostgreSQL en cada clic.

B. Declaración de Políticas en C# (Código Limpio)

En lugar de validar roles directamente con textos planos (lo cual es considerado una mala práctica propensa a errores), .NET 10 utiliza Políticas basadas en requerimientos. La configuración en el archivo Program.cs del backend queda documentada de la siguiente manera:

// Configuración estricta de Políticas de Seguridad para MDX-Cloud
builder.Services.AddAuthorization(options =>
{
// Política para el módulo de Compras
options.AddPolicy("RequiereCrearOC", policy =>
policy.RequireClaim("Permission", "compras.CrearOrdenCompra"));

// Política para el flujo crítico de excepciones financieras
options.AddPolicy("RequiereAutorizacionGerencial", policy =>
policy.RequireClaim("Permission", "credito_cobranza.AprobarExcepcion"));
});