Saltar al contenido principal

Características clave

  • Gestión de Usuarios – Crear, actualizar y eliminar cuentas de usuario.
  • Control de Acceso Basado en Roles (RBAC) – Asignar roles predefinidos con permisos granulares.
  • Asociación de Grupos – Gestionar membresías de usuarios en aplicaciones.
  • Autenticación OAuth2 – Flujos de autenticación seguros usando tokens JWT.
  • Optimización de Rendimiento – Usa caché en memoria para manejo rápido de consultas.
  • Observabilidad – Integrado con OpenTelemetry para registro y rastreo.

Grupos de roles y permisos

El acceso de usuario en el ecosistema de Lerian es controlado por grupos de roles, definidos por aplicación (como Midaz, Motor de Tarifas, CRM y otros). Cada rol determina qué pueden ver o hacer los usuarios dentro de una aplicación específica. Los roles están vinculados a conjuntos de permisos, que son combinaciones predefinidas de acciones y recursos. Estos conjuntos de permisos se gestionan centralmente y no se pueden personalizar.

Niveles de roles

A cada usuario se le asigna uno de los siguientes roles:
  • Admin – Acceso completo a todos los recursos y acciones a nivel de sistema.
  • Editor – Puede crear, actualizar y eliminar recursos.
  • Contributor – Puede crear y actualizar recursos, pero no puede eliminar.
  • Viewer – Acceso de solo lectura; puede ver datos pero no puede hacer cambios.
Los roles tienen alcance por aplicación. Un usuario puede tener diferentes roles en diferentes aplicaciones. Por ejemplo, Editor en Midaz, Viewer en CRM y sin rol en Fees Engine.
Esto es lo que significa en la práctica:
RolMétodos Permitidos
AdminControl completo
EditorGET, POST, PATCH, DELETE
ContributorGET, POST, PATCH
ViewerGET, HEAD
Si un usuario no tiene un rol asignado en una aplicación dada, no tendrá acceso a ella, ni siquiera de solo lectura.

Conjuntos de permisos por aplicación

Detrás de cada rol hay un conjunto de permisos que especifica a qué recursos puede acceder el usuario y qué acciones se le permite realizar. Estos conjuntos se definen en el archivo init/casdoor/init_data.json. Expande la siguiente sección para la lista completa: Tabla de permisos
NombreNombre para MostrarRecursosAcciones
plugin-identity-editor-permissionPermiso Editor de Plugin Identityapplications, groups, users, update-password, reset-passwordget, post, patch, delete
plugin-identity-default-permissionPermiso Predeterminado de Plugin Identityupdate-passwordpatch
midaz-editor-permissionPermiso Editor de Midazaccounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operationsget, post, patch, delete, head
midaz-contributor-permissionPermiso Contributor de Midazaccounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operationsget, post, patch, head
midaz-viewer-permissionPermiso Viewer de Midazaccounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operationsget, head
routing-editor-permissionPermiso Editor de Plugin Routingaccount-types, transaction-routes, operation-routesget, post, patch, delete
routing-contributor-permissionPermiso Contributor de Plugin Routingaccount-types, transaction-routes, operation-routesget, post, patch
routing-viewer-permissionPermiso Viewer de Plugin Routingaccount-types, transaction-routes, operation-routesget
plugin-fees-editor-permissionPermiso Editor de Plugin Feespackages, fees, estimatespost, get, patch, delete
plugin-fees-contributor-permissionPermiso Contributor de Plugin Feespackages, fees, estimatespost, get, patch
plugin-fees-viewer-permissionPermiso Viewer de Plugin Feespackages, fees, estimatesget
plugin-crm-editor-permissionPermiso Editor de Plugin CRMholders, aliasespost, get, patch, delete
plugin-crm-contributor-permissionPermiso Contributor de Plugin CRMholders, aliasespost, get, patch
plugin-crm-viewer-permissionPermiso Viewer de Plugin CRMholders, aliasesget
plugin-smart-templates-viewer-permissionPermiso Viewer de Plugin Reportertemplates, reports, data-sourceget
plugin-smart-templates-contributor-permissionPermiso Contributor de Plugin Reportertemplates, reports, data-sourceget, post, patch
plugin-smart-templates-editor-permissionPermiso Editor de Plugin Reportertemplates, reports, data-sourceget, post, patch, delete

Cómo se estructuran los permisos

Todos los conjuntos de permisos siguen la misma lógica:
RolMétodos Típicos
ViewerGET, HEAD
ContributorGET, POST, PATCH, HEAD
EditorGET, POST, PATCH, DELETE, HEAD
Esta estructura consistente facilita el razonamiento sobre el acceso en diferentes plugins.

Recursos a nivel de plugin

Aquí hay una referencia rápida de los recursos que gestiona cada plugin:
PluginRecurso
Access Managerapplications, groups, users, update-password, reset-password
Midazaccounts, organizations, ledgers, assets, asset-rates, portfolios, segments, balances, transactions, operations, account-types, transaction-routes, operation-routes
Feespackages, fees, estimates
CRMholders, aliases
Reportertemplates, reports, data-source

Arquitectura y flujo de identidad

Identity sigue un patrón de arquitectura limpia con el siguiente flujo de solicitudes:

Figura 1. Flujo de Identity

Flujo de solicitudes

  1. Entrada de solicitud HTTP
    • Los endpoints de la API procesan las solicitudes entrantes.
    • El middleware maneja CORS, registro y telemetría.
    • El middleware de autorización aplica las políticas de acceso.
  2. Procesamiento de solicitudes
    • Los manejadores validan la entrada y extraen parámetros.
    • La capa de servicio ejecuta la lógica de negocio.
    • La capa de adaptador traduce las llamadas de servicio al sistema IAM externo.
  3. Flujo de autenticación
    • Las aplicaciones cliente se autentican usando OAuth2.
    • Los tokens JWT se validan con certificados incrustados.
    • Los permisos se aplican según las definiciones de roles.
  4. Flujo de respuesta
    • Los datos se transforman en modelos de respuesta de la API.
    • Las respuestas HTTP estandarizadas garantizan consistencia.
    • El registro y la telemetría rastrean el ciclo de vida de la solicitud.

Dependencias externas

  • Almacenamiento primario – Sistema centralizado de gestión de identidades.
  • Caché – Optimizado con un almacén de datos en memoria.
  • Rastreo y monitoreo – Integrado con OpenTelemetry.
  • Despliegue – Kubernetes para la gestión de infraestructura.

Descripción general de la API

Identity proporciona gestión centralizada de identidad y acceso para aplicaciones distribuidas. Las APIs admiten:
  • Gestión de cuentas de usuario y autenticación.
  • Control de acceso basado en roles y aplicación de permisos.
  • Operaciones de identidad de grupos y aplicaciones.
El acceso está asegurado mediante controles de permisos estrictos. Para detalles técnicos, consulte la documentación de la API de Identity.

Almacenamiento y modelado de datos

Identity no almacena datos por sí solo—se conecta con sistemas externos para manejar identidad y caché.

Almacenamiento primario

El servicio depende de un sistema externo de gestión de identidades como su almacén de datos principal. Gestiona entidades clave como usuarios, grupos y aplicaciones:
  • Entidad de usuario
    • Propiedades clave: ID, nombre, apellido, nombre de usuario, correo electrónico, contraseña hasheada y membresías de grupo.
    • Mapeo: Corresponde directamente a los objetos de usuario en el sistema de identidad.
    • Operaciones: Admite acciones de crear, leer, actualizar y eliminar a través de la API.
  • Entidad de grupo
    • Propiedades clave: ID, nombre, nombre para mostrar, fecha de creación y usuarios asociados.
    • Mapeo: Corresponde directamente a los objetos de grupo en el sistema de identidad.
    • Operaciones: Operaciones de lectura disponibles a través de la API.
  • Entidad de aplicación
    • Propiedades clave: ID, nombre, descripción, credenciales de cliente y fecha de creación.
    • Mapeo: Corresponde directamente a los objetos de aplicación en el sistema de identidad.
    • Operaciones: Admite acciones de crear, leer y eliminar a través de la API.

Almacenamiento secundario

Se integra una base de datos basada en documentos para admitir necesidades adicionales de persistencia de datos.

Caché

Se utiliza una capa de caché para mejorar el rendimiento, gestionando datos temporales de manera eficiente. Las conexiones y consumidores de caché se manejan programáticamente dentro de Identity.

Despliegue y operaciones

  • Escalabilidad y confiabilidad – Gestionado a través de Kubernetes.
  • Observabilidad – Integrado con OpenTelemetry.
  • Seguridad – Alineado con las mejores prácticas de la industria para autenticación y autorización.
Identity garantiza una autenticación segura y eficiente en aplicaciones distribuidas, simplificando la gestión de identidades con un diseño robusto y escalable.
I