Pregunta

¿Existe algún código abierto? PHP based, sistema de control de acceso basado en roles que se puede utilizar para CodeIgniter?

¿Fue útil?

Solución

Brandon Savage hizo una presentación sobre su paquete PHP "AplicaciónACL" que puede o no lograr el acceso basado en roles. PHPGACL Podría funcionar también, pero no puedo decirte con seguridad.

Lo que sí puedo decirles, sin embargo, es la Zend_ACL El componente de Zend Framework realizará configuraciones basadas en roles (sin embargo, tendrá que crear una subclase para verificar múltiples roles a la vez).Por supuesto, lo complicado de esto es que tendrás que sacar Zend_ACL, no creo que tenga dependencias externas, de la descarga monolítica (o pago SVN).

Lo bueno de Zend_ACL es que es independiente del almacenamiento.Puede reconstruirlo cada vez o está diseñado para ser serializado (yo uso una combinación de ambos, serializar para el caché y reconstruir desde la base de datos).

Otros consejos

Tal vez estoy entendiendo mal la pregunta, pero ¿no es el objetivo del control de acceso basado en roles (RBAC) evitar ¿Listas de control de acceso (ACL)?

RBAC se diferencia de las listas de control de acceso (ACL) (...) en el sentido de que asigna permisos a operaciones específicas con significado en la organización, en lugar de a objetos de datos de bajo nivel.Por ejemplo, se podría usar una lista de control de acceso para otorgar o denegar acceso de escritura a un archivo del sistema en particular, pero no diría de qué manera se podría cambiar ese archivo.En un sistema basado en RBAC una operación podría ser crear una transacción de 'cuenta de crédito' en una aplicación financiera (...).La asignación de permiso para realizar una operación particular es significativa, porque las operaciones son detalladas y en sí mismas tienen significado dentro de la aplicación.(Cita: Wikipedia)

No conozco los detalles de Zend_ACL ni de las otras implementaciones mencionadas, pero si están basadas en ACL, no recomendaría usarlas para autorización basada en roles.

Creé un proyecto de código abierto llamado PHP-Bouncer que puede ser de su interés.Es todavía bastante joven, pero funciona bien y es fácil de configurar.Terminé desarrollándolo porque ninguna de las soluciones existentes parecía satisfacer mis necesidades.¡Espero que esto ayude!

phpgacl http://phpgacl.sourceforge.net/ es un marco de control de acceso genérico basado en ACL

Si bien no conozco ninguna implementación específica de CI, sé que solo necesitas el archivo de clase principal para que phpgacl funcione.Entonces creo que la integración con CI no será ningún problema.(He trabajado de pasada con CI)

Aquí hay dos bibliotecas RBAC para PHP que encontré:

De hecho, utilicé el primero en PolyAuth: https://github.com/Polycademy/PolyAuth/

Es una biblioteca de autenticación con todas las funciones que incluye RBAC de nivel 1 de NIST.Y sí, RBAC no es lo mismo que ACL.También uso Codeigniter, todo lo que tienes que hacer es usar el controlador PDO y pasar la identificación de la conexión.Vea este tutorial para saber cómo hacerlo: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

Descubrí Khaos ACL, que es una biblioteca de CI...También estoy revisando phpgacl y cómo usarlo para CI...Aún no he comprobado Zend ACL.Pero tal vez se pueda "portar" a CI

Pruebe el complemento DX_Auth para CodeIgniter.Estoy trabajando en un similar (más bien, un superconjunto) de funciones que tiene DX_Auth.Mi conjunto de complementos de CI incluye visualización de menús (que se pueden controlar mediante CSS), control de acceso basado en roles antes de invocar el controlador y otras funciones.Espero publicarlo pronto.Daré la URL del proyecto cuando lo haga.

RBAC != ACL - Roland tiene la única respuesta correcta para esta pregunta.

Por cierto, por supuesto, es una parte esencial de un marco para implementar cualquier tipo de sistema de permisos; al menos no tiene sentido usar un marco, si no proporciona un sistema RBAC bien diseñado; podría ser mejor usar una plantilla simple. sistema con cualquier capa ORM entonces.

Es un antipatrón común en el mundo php, que frameworks como Ruby o Django sean "clonados" sólo como un subconjunto de lo que ofrecen estos frameworks modernos - como síndrome típico se ve una falta de buena integración de ACL o RBAC en estos frameworks - lo que esencialmente es una broma.Actualmente sólo existe Yii PHP Framework que viene con una implementación RBAC decente.

Sé que el camino está frío, pero ha aparecido un nuevo proyecto:

PHP-RBAC es un control de acceso basado en roles estándar PHP jerárquico NIST nivel 2 y es bastante maduro.También es un proyecto de OWASP.

Espero que lo disfrutes en http://phprbac.net

http://www.jframework.info (enlace muerto)

jFramework tiene un RBAC estándar NIST nivel 2 con mejoras que se dice que es el más rápido disponible (incluye puntos de referencia), puede operar en un solo archivo de base de datos SQLite y se prueba exhaustivamente, funciona como un guante.

Depende de jFramework DBAL, pero puede simplemente reemplazar las consultas DBAL SQL en el código con el DBAL que desee y, por supuesto, puede usar jFramework de manera SOP.

La biblioteca de autenticación de Ion utiliza usuarios y grupos: https://github.com/benedmunds/CodeIgniter-Ion-Authpero no existe un sistema RBAC que funcione para usarlos y administrarlos.Pero puedes blanquear tus funciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top