Domanda

Esistono sistemi di controllo degli accessi basati su ruoli basati su PHP che possono essere utilizzati per CodeIgniter ?

È stato utile?

Soluzione

Brandon Savage ha fatto una presentazione sul suo pacchetto PHP " ApplicationACL " che può o meno ottenere un accesso basato sui ruoli. Anche PHPGACL potrebbe funzionare, ma non posso dirtelo con certezza.

Quello che posso dirti, tuttavia, è il componente Zend_ACL di Zend Framework eseguirà impostazioni basate sui ruoli (tuttavia dovrai sottoclassare per controllare più ruoli contemporaneamente). Concesso il dolore di questo è che dovrai estrarre Zend_ACL, non credo che abbia dipendenze esterne, dal download monolitico (o dal checkout SVN).

La cosa bella di Zend_ACL è però la sua memoria agnostica. Puoi ricostruirlo ogni volta o è progettato per essere serializzato (io uso una combinazione di entrambi, serializzo per la cache e ricostruisco dal DB).

Altri suggerimenti

Forse sto fraintendendo la domanda, ma non è tutto il punto del controllo di accesso basato sui ruoli (RBAC) per evitare gli elenchi di controllo di accesso (ACL)?

  

RBAC differisce dagli elenchi di controllo di accesso (ACL) (...) in quanto assegna autorizzazioni a operazioni specifiche con significato nell'organizzazione, piuttosto che a oggetti dati di basso livello. Ad esempio, un elenco di controllo di accesso potrebbe essere utilizzato per concedere o negare l'accesso in scrittura a un determinato file di sistema, ma non direbbe in che modo tale file potrebbe essere modificato. In un sistema basato su RBAC un'operazione potrebbe essere quella di creare una transazione "conto di credito" in un'applicazione finanziaria (...). L'assegnazione dell'autorizzazione per eseguire una determinata operazione è significativa, poiché le operazioni sono ben definite e hanno un significato all'interno dell'applicazione.   (Citazione: Wikipedia )

Non conosco i dettagli su Zend_ACL o le altre implementazioni menzionate, ma se sono basati su ACL, non consiglierei di usarli per l'autorizzazione basata sui ruoli.

Ho creato un progetto Open Source chiamato PHP-Bouncer che potrebbe interessarti . È ancora abbastanza giovane, ma funziona bene ed è facile da configurare. Ho finito per svilupparlo perché nessuna delle soluzioni esistenti sembrava soddisfare le mie esigenze. Spero che questo aiuti!

phpgacl http://phpgacl.sourceforge.net/ è un framework di controllo di accesso basato su acl generico

mentre non conosco alcuna implementazione specifica di CI, so che hai bisogno solo del file di classe principale per far funzionare phpgacl. Quindi credo che l'integrazione con CI non sarà un problema. (Ho lavorato passivamente con CI)

Ecco due librerie RBAC per PHP che ho trovato:

In realtà ho usato il primo in PolyAuth: https://github.com/Polycademy/PolyAuth/

È una libreria di autenticazione completa che include RBAC di livello 1 NIST. E sì, RBAC non è lo stesso di un ACL. Uso anche Codeigniter, tutto quello che devi fare è utilizzare il driver PDO e passare l'id di connessione. Vedi questo tutorial per come farlo: http://codebyjeff.com/blog/ 2013/03 / CodeIgniter-con-PDO

Ho scoperto Khaos ACL che è una libreria CI ... Sto anche controllando phpgacl e come usarlo per CI ... Non ho ancora controllato Zend ACL. Ma forse può essere "quotato" " a CI

Prova il plug-in DX_Auth per CodeIgniter. Sto lavorando a un simile (piuttosto, superset) delle funzioni che DX_Auth ha. La mia serie di componenti aggiuntivi per CI include la visualizzazione di menu (che possono essere controllati tramite CSS), il controller di accesso basato sui ruoli prima che il controller venga richiamato e altre funzionalità. Spero di pubblicarlo presto. Fornirò l'URL del progetto quando lo faccio

RBAC! = ACL - Roland ha l'unica risposta corretta per questa domanda.

A proposito ovviamente è una parte essenziale di un framework implementare qualsiasi tipo di sistema di autorizzazione - almeno non ha senso usare un framework, se non ti dà un sistema RBAC ben sviluppato - potrebbe essere meglio usare un semplice sistema di template con qualsiasi livello ORM allora.

È un antipattern comune nel mondo php, che framework come Ruby o Django sono "clonati" solo come un sottoinsieme di ciò che offrono questi quadri moderni - come una tipica sindrome si vede una mancanza di una buona integrazione ACL o RBAC in questi quadri - ciò che essenzialmente è uno scherzo. Al momento esiste solo il framework Yii PHP fornito con un'implementazione decente di RBAC.

So che la pista è fredda, ma è spuntato un nuovo progetto:

PHP-RBAC è un controllo di accesso basato su ruoli standard gerarchico NIST livello 2 PHP ed è abbastanza maturo. È anche un progetto OWASP.

Spero che ti piaccia su http://phprbac.net

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

jFramework ha un RBAC standard di livello 2 NIST con miglioramenti che si dice sia il più veloce disponibile (include benchmark) che può operare su un singolo file di database SQLite ed è testato a fondo, funziona come un guanto.

Ha una dipendenza da DBF jFramework ma puoi semplicemente sostituire le query SQL DBAL nel codice con il DBAL desiderato e ovviamente puoi usare jFramework in modo SOP.

Ion Auth Library utilizza utenti e gruppi - https://github.com/benedmunds/CodeIgniter- Ion-Auth ma non esistono sistemi RBAC funzionanti per utilizzarli e gestirli. Ma puoi rendere bianche le tue funzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top