webentwicklung-frage-antwort-db.com.de

Rollenbasierte Zugriffssteuerung

Gibt es ein rollenbasiertes Open Source PHP based-Zugriffskontrollsystem, das für CodeIgniter verwendet werden kann?

25
jerichorivera

Brandon Savage hielt eine Präsentation zu seinem PHP -Paket " ApplicationACL ", das möglicherweise einen rollenbasierten Zugriff durchführt. PHPGACL könnte auch funktionieren, aber ich kann es dir nicht sicher sagen.

Was ich Ihnen sagen kann, ist jedoch, dass die Komponente Zend_ACL von Zend Framework rollenbasierte Setups durchführt (allerdings müssen Sie eine Unterklasse erstellen, um mehrere Rollen gleichzeitig zu überprüfen). Zugegeben, der Schmerz ist, dass Sie Zend_ACL herausziehen müssen, ich glaube nicht, dass es irgendwelche externen Abhängigkeiten vom monolithischen Download (oder SVN-Checkout) hat.

Das Schöne an Zend_ACL ist, dass der Speicher nicht agiert. Sie können es entweder jedes Mal neu erstellen, oder es ist für die Serialisierung konzipiert (ich verwende eine Kombination aus beiden, Serialisierung für den Cache und die Neuerstellung aus der Datenbank).

12
dcousineau

Vielleicht missverstehe ich die Frage falsch, aber ist nicht der Sinn von rollenbasierter Zugriffskontrolle (RBAC) auf Vermeiden Zugriffskontrolllisten (ACLs)?

RBAC unterscheidet sich von Zugriffssteuerungslisten (ACLs) (...) dahingehend, dass Berechtigungen bestimmten Operationen mit Bedeutung in der Organisation zugewiesen werden und nicht Datenobjekten niedriger Ebene, beispielsweise einem Zugriff Die Kontrollliste kann verwendet werden, um Schreibzugriff auf eine bestimmte Systemdatei zu gewähren oder zu verweigern, würde jedoch nicht sagen, auf welche Weise die Datei geändert werden könnte In einem RBAC-basierten System kann es vorkommen, eine Transaktion "Guthabenkonto" in zu erstellen eine finanzielle Anwendung (...). Die Zuweisung der Erlaubnis zur Durchführung einer bestimmten Operation ist sinnvoll, da die Operationen feinkörnig sind und selbst innerhalb der Anwendung eine Bedeutung haben. (Zitat: Wikipedia )

Ich kenne die Besonderheiten von Zend_ACL oder den anderen genannten Implementierungen nicht, aber wenn sie ACL-basiert sind, würde ich nicht empfehlen, sie für eine rollenbasierte Autorisierung zu verwenden.

30
Jens Roland

Ich habe ein Open Source-Projekt namens PHP-Bouncer erstellt, das für Sie von Interesse sein kann. Es ist noch relativ jung, funktioniert aber gut und lässt sich leicht konfigurieren. Ich habe es schließlich entwickelt, weil keine der vorhandenen Lösungen meine Bedürfnisse zu erfüllen schien. Ich hoffe das hilft!

2
Brendon Dugan

phpgacl http://phpgacl.sourceforge.net/ ist ein generisches Zugriffssteuerungs-Framework auf Acl-Basis

ich weiß zwar nichts über eine spezifische CI-Implementierung, aber ich weiß, dass Sie nur die Hauptklassendatei benötigen, um phpgacl zum Laufen zu bringen. Ich glaube also, dass die Integration mit CI kein Problem sein wird. (Ich habe passiv mit CI gearbeitet)

1
paan

Hier sind zwei RBAC-Bibliotheken für PHP, die ich gefunden habe:

Ich habe die erste in PolyAuth verwendet: https://github.com/Polycademy/PolyAuth/

Es ist eine voll ausgestattete auth-Bibliothek, die NIST Level 1 RBAC enthält. Und ja, RBAC ist nicht dasselbe wie eine ACL. Ich benutze auch Codeigniter. Alles was Sie tun müssen, ist den PDO-Treiber zu verwenden und die Verbindungs-ID zu übergeben. In diesem Tutorial erfahren Sie, wie das geht: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

1
CMCDragonkai

RBAC! = ACL - Roland hat für diese Frage die einzig richtige Antwort. 

Übrigens ist es natürlich ein wesentlicher Bestandteil eines Frameworks, um ein beliebiges Genehmigungssystem zu implementieren. Zumindest hat es keinen Sinn, ein Framework zu verwenden, wenn es nicht zu einem gut entwickelten RBAC-System führt - es könnte besser sein, eine einfache Vorlage zu verwenden System mit einer beliebigen ORM-Schicht dann.

Es ist ein weit verbreitetes Muster in der PHP-Welt, dass Frameworks wie Ruby oder Django nur als Untermenge dessen, was diese modernen Frameworks liefern, "geklont" werden - als typisches Syndrom sehen Sie einen Mangel an guter ACL- oder RBAC-Integration in diesen Frameworks - was Im Wesentlichen ist ein Witz. Derzeit gibt es nur das Yii PHP Framework, das mit einer anständigen RBAC-Implementierung geliefert wird. 

0
Gonzo Palermo

Ich habe auch herausgefunden, dass es sich bei Khaos ACL um eine CI-Bibliothek handelt ... Ich überprüfe auch phpgacl und wie man es für CI verwendet ... Ich habe Zend ACL noch nicht überprüft. Aber vielleicht kann es auf CI "portiert" werden

0
jericho

Ich weiß, dass die Spur kalt ist, aber ein neues Projekt ist aufgetaucht:

PHP-RBAC ist eine PHP Hierarchische, rollenbasierte Zugriffskontrolle auf NIST Level 2-Standardebene und ist ziemlich ausgereift. Es ist auch ein OWASP-Projekt.

Ich hoffe es gefällt euch bei http://phprbac.net

0
AbiusX

Testen Sie das DX_Auth-Plugin für CodeIgniter. Ich arbeite an einem ähnlichen (eher Superset) der Funktionen, die DX_Auth hat. Mein Set von CI-Addons umfasst die Anzeige von Menüs (die über CSS gesteuert werden können), die Steuerung der Rollenbasiszugriffe vor dem Aufrufen des Controllers und andere Funktionen. Ich hoffe, es bald veröffentlichen zu können. Wird die Projekt-URL angeben, wenn ich dies tue

0
Tapiwa Kelvin

http://www.jframework.info (Deadlink)

jFramework verfügt über ein standardmäßiges NIST-Level-2-RBAC mit Verbesserungen, das als das schnellste verfügbare (einschließlich Benchmarks) gilt. Es kann mit einer einzigen SQLite-Datenbankdatei arbeiten und wird gründlich getestet und funktioniert wie ein Handschuh.

Hat eine Abhängigkeit von jFramework DBAL, aber Sie können DBAL-SQL-Abfragen im Code einfach durch Ihre gewünschte DBAL ersetzen, und Sie können jFramework natürlich auf SOP-Weise verwenden.

0
AbiusX