web-dev-qa-db-fra.com

Contrôle d'accès basé sur les rôles

Existe-t-il un PHP based open source, système de contrôle d'accès basé sur les rôles, utilisable pour CodeIgniter?

25
jerichorivera

Brandon Savage a présenté son PHP paquet " ApplicationACL " qui peut ou non permettre un accès basé sur les rôles. PHPGACL pourrait fonctionner aussi bien, mais je ne peux pas vous le dire avec certitude.

Ce que je peux vous dire, cependant, c'est que le composant Zend_ACL du Zend Framework effectuera les configurations basées sur les rôles (toutefois, vous devrez sous-classe pour vérifier plusieurs rôles à la fois). Sachant cela, vous devrez extraire Zend_ACL. Je ne crois pas qu'il ait des dépendances externes, à partir du téléchargement monolithique (ou de la commande SVN).

La bonne chose à propos de Zend_ACL est que son stockage est agnostique. Vous pouvez le reconstruire à chaque fois ou il est conçu pour être sérialisé (j'utilise une combinaison des deux, sérialisation pour le cache et reconstruction à partir de la base de données).

12
dcousineau

Je comprends peut-être mal la question, mais le contrôle d’accès basé sur les rôles (RBAC) n’a-t-il pas pour seul objectif de éviter Listes de contrôle d’accès (ACL)?

RBAC diffère des listes de contrôle d'accès (ACL) (...) en ce sens qu'il attribue des autorisations à des opérations spécifiques ayant une signification dans l'organisation, plutôt qu'à des objets de données de bas niveau. Par exemple, un accès La liste de contrôle peut être utilisée pour accorder ou refuser l’accès en écriture à un fichier système particulier, mais elle n’indique pas de quelle manière ce fichier peut être modifié. Dans un système basé sur RBAC, une opération peut consister à créer une transaction 'compte crédit' dans une application financière (...). L’attribution de l’autorisation d’exécuter une opération particulière est significative, car les opérations sont détaillées et ont elles-mêmes une signification dans l’application. (Quote: Wikipedia )

Je ne connais pas les spécificités de Zend_ACL ou des autres implémentations mentionnées, mais si elles sont basées sur ACL, je ne recommanderais pas de les utiliser pour une autorisation basée sur des rôles.

30
Jens Roland

J'ai créé un projet Open Source appelé PHP-Bouncer qui pourrait vous intéresser. Il est encore assez jeune, mais fonctionne bien et est facile à configurer. J'ai fini par le développer car aucune des solutions existantes ne semblait répondre à mes besoins. J'espère que ça aide!

2
Brendon Dugan

phpgacl http://phpgacl.sourceforge.net/ est un cadre de contrôle d'accès générique basé sur acl

bien que je ne connaisse aucune implémentation spécifique de CI, je sais que vous avez seulement besoin du fichier de classe principal pour que phpgacl fonctionne. Je pense donc que l’intégration avec CI ne sera pas un problème. (J'ai déjà travaillé avec CI)

1
paan

Voici deux bibliothèques RBAC pour PHP j'ai trouvé:

J'ai effectivement utilisé le premier en PolyAuth: https://github.com/Polycademy/PolyAuth/

Il s'agit d'une bibliothèque d'authentification complète comprenant le contrôle d'accès basé sur le niveau 1 du NIST. Et oui, RBAC n'est pas la même chose qu'une ACL. J'utilise aussi Codeigniter, tout ce que vous avez à faire est d'utiliser le pilote PDO et de transmettre l'identifiant de connexion. Voir ce tutoriel pour savoir comment faire cela: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

1
CMCDragonkai

RBAC! = ACL - Roland a la seule réponse correcte à cette question. 

BTW est bien sûr un élément essentiel d’un cadre pour la mise en oeuvre de tout type de système d’autorisation - au moins il n’est pas utile d’utiliser un cadre, s’il ne vous donne pas un système RBAC bien conçu - il serait peut-être préférable d’utiliser un simple modèle système avec n'importe quelle couche ORM alors.

C'est un anti-modèle commun dans le monde php, que des frameworks tels que Ruby ou Django ne soient "clonés" que comme un sous-ensemble de ce que ces frameworks modernes fournissent - en tant que syndrome typique, vous constaterez un manque d'intégration du ACL ou du RBAC dans ces frameworks - que est essentiellement une blague. Actuellement, seul le framework Yii PHP est fourni avec une implémentation RBAC décente. 

0
Gonzo Palermo

J'ai découvert Khaos ACL, une bibliothèque de CI ... Je vérifie également phpgacl et son utilisation pour CI ... Je n'ai pas encore vérifié Zend ACL. Mais peut-être qu'il peut être "porté" vers CI

0
jericho

Je sais que la piste est froide, mais un nouveau projet est apparu:

PHP-RBAC est un PHP _ Contrôle hiérarchique d’accès basé sur les rôles standard du niveau 2 du NIST et est assez mature. C'est aussi un projet OWASP.

J'espère que vous l'apprécierez sur http://phprbac.net

0
AbiusX

Essayez le plugin DX_Auth pour CodeIgniter. Je travaille sur un super-ensemble similaire aux fonctions de DX_Auth. Mon ensemble d'additifs CI comprend l'affichage de menus (pouvant être contrôlés via CSS), le contrôle d'accès aux bases de rôles avant que le contrôleur ne soit appelé et d'autres fonctionnalités. J'espère le publier bientôt. Donne l'URL du projet quand je le fais

0
Tapiwa Kelvin

http://www.jframework.info (lien mort)

jFramework possède un contrôle d'accès basé sur les niveaux NIST de niveau 2 standard avec les améliorations considérées comme étant les plus rapides disponibles (y compris les tests de performance). Il peut fonctionner sur un seul fichier de base de données SQLite.

Dépend de jFramework DBAL mais vous pouvez simplement remplacer les requêtes SQL DBAL dans le code par le DBAL souhaité et bien sûr, vous pouvez utiliser jFramework de manière SOP.

0
AbiusX