• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Programación de autenticación por roles o RBAC

maceh

De profesión Chapuzas
Registrado
17 Ene 2017
Mensajes
256
Puntos
28
Edad
43
Hola,

estamos actualizando en mi trabajo el sistema de permisos que utilizamos en nuestras aplicaciones puesto que hoy en día los clientes demandan cada vez combinaciones de permisos más locas, el caso es que estamos interesados en aplicar el esquema RBAC o lo que viene siendo lo mismo el sistema de permisos por roles (Pagína no disponible criptored.

He estado leyendo documentación y demás, mas o menos tengo ya generado el esquema para almacenar los permisos pero tengo una duda, en cualquier documentación de RBAC se refiere a aquello que quieres proteger como los "objetos", pero en nuestro caso, vamos a proteger los registros de una tabla de digamos, clientes, dicha tabla tiene algunos campos donde aplicaremos los permisos, por ejemplo, en el caso de los clientes, existirá un campo con el ref_grupo del grupo de usuarios que puede ver ese registro, o ref_empresa de la empresa con la que está asociada el cliente.

Mi solución ha sido algo así como cuando un rol se ha relacionado con permisos relacionarlo con una serie de valores que deben tener sus atributos (los cuales ya se especifican sus nombres en la tabla de objetos a proteger), por ejemplo, el objeto cliente tiene los atributos [ref_emp][ref_grupo], cuando se relaciona el usuario, el rol y el permiso se asocia con una tabla donde se especifica que se debe filtrar por ref_emp in (1) and ref_grupo in (1, 2) y con ref_emp in (2) and ref_grupo in (2, 3) por ejemplo.quedando la SQL de esta manera: SELECT * FROM clientes WHERE (ref_emp in (1) and ref_grupo in (1, 2)) OR (ref_emp in (2) and ref_grupo in (2, 3)).

¿Como lo veis?

Un saludo.
 
Si estas usando algun framework, que sería lo más normal, la mayoría tienen paquetes para la gestión de usuarios y roles.
 
Arriba