Ролевое управление доступом - PullRequest
25 голосов
/ 22 сентября 2008

Существует ли система управления доступом на основе ролей с открытым исходным кодом, PHP based, которая может использоваться для CodeIgniter?

Ответы [ 11 ]

30 голосов
/ 24 января 2009

Может быть, я неправильно понимаю вопрос, но разве не весь смысл управления доступом на основе ролей (RBAC) - избегать списков контроля доступа (ACL)?

RBAC отличается от списков управления доступом (ACL) (...) тем, что он назначает разрешения для определенных операций, имеющих значение в организации, а не для объектов данных низкого уровня. Например, список контроля доступа можно использовать для предоставления или запрета доступа для записи к определенному системному файлу, но в нем не будет указано, каким образом этот файл можно изменить. В системе на основе RBAC операция может заключаться в создании транзакции «кредитный счет» в финансовом приложении (...). Назначение разрешения на выполнение определенной операции имеет смысл, потому что операции являются мелкозернистыми и сами по себе имеют значение в приложении. (Цитата: Википедия )

Я не знаю особенностей Zend_ACL или других упомянутых реализаций, но если они основаны на ACL, я бы не рекомендовал использовать их для авторизации на основе ролей.

12 голосов
/ 22 сентября 2008

Брэндон Сэвидж выступил с сообщением о своем пакете PHP " ApplicationACL ", который может или не может осуществлять доступ на основе ролей. PHPGACL может также работать, но я не могу сказать вам точно.

Однако я могу сказать, что компонент Zend Framework Zend_ACL будет выполнять установки на основе ролей (однако вам придется создать подкласс для проверки нескольких ролей одновременно). Разумеется, вам придется вытащить Zend_ACL, я не верю, что у него есть какие-либо внешние зависимости, от монолитной загрузки (или проверки SVN).

Приятной особенностью Zend_ACL является то, что он не зависит от хранилища. Вы можете либо перестроить его каждый раз, либо он предназначен для сериализации (я использую комбинацию обоих: сериализацию для кеша и перестройку из БД).

2 голосов
/ 28 июля 2012

Я создал проект с открытым исходным кодом под названием PHP-Bouncer , который может вас заинтересовать. Это все еще довольно молодой, но работает хорошо и прост в настройке. Я закончил разработку, потому что ни одно из существующих решений не отвечало моим потребностям. Надеюсь, это поможет!

1 голос
/ 31 мая 2013

Вот две библиотеки RBAC для PHP, которые я нашел:

Я фактически использовал первый в PolyAuth: https://github.com/Polycademy/PolyAuth/

Это полнофункциональная библиотека аутентификации, включающая RBAC уровня 1 NIST. И да, RBAC - это не то же самое, что ACL. Я также использую Codeigniter, все, что вам нужно сделать, это использовать драйвер PDO и передать идентификатор соединения. Посмотрите этот урок, чтобы узнать, как это сделать: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

1 голос
/ 22 сентября 2008

phpgacl http://phpgacl.sourceforge.net/ - это общая структура управления доступом на основе acl

хотя я не знаю ни о какой конкретной реализации CI, я знаю, что вам нужен только файл основного класса, чтобы заставить работать phpgacl Поэтому я верю, что интеграция с КИ не будет проблемой. (Я схожу с CI)

0 голосов
/ 28 февраля 2013

Я знаю, что тропа холодная, но появился новый проект:

PHP-RBAC - это стандартное управление доступом на основе ролей, стандартное иерархическое управление уровнями NIST уровня 2, и оно достаточно развито. Это также проект OWASP.

Надеюсь, вам понравится http://phprbac.net

0 голосов
/ 01 августа 2012

Ion Auth Library использует пользователей и группы - https://github.com/benedmunds/CodeIgniter-Ion-Auth но нет работающей системы RBAC для их использования и управления. Но вы можете побелить свои функции.

0 голосов
/ 05 августа 2010

http://www.jframework.info (ссылка)

jFramework имеет стандартный RBAC NIST уровня 2 с улучшениями, который считается самым быстрым из доступных (включая тесты), он может работать с одним файлом базы данных SQLite и тщательно протестирован, работает как перчатка.

Имеет зависимость от jFramework DBAL, но вы можете просто заменить DBAL SQL Queries в коде на желаемый DBAL и, конечно, вы можете использовать jFramework в режиме SOP.

0 голосов
/ 14 сентября 2009

RBAC! = ACL - Роланд имеет единственный правильный ответ на этот вопрос.

Кстати, конечно, это неотъемлемая часть фреймворка для реализации любого вида системы разрешений - по крайней мере, нет смысла использовать фреймворк, если он не дает вам хорошо разработанную систему RBAC - может быть, лучше использовать простая система шаблонов с любым слоем ORM.

Это распространенный антипаттерн в мире php, что фреймворки, такие как Ruby или Django, «клонируются» только как часть того, что предоставляют эти современные фреймворки - как типичный синдром, вы видите отсутствие хорошей интеграции ACL или RBAC в рамки - что по сути является шуткой. В настоящее время существует только Yii PHP Framework, который поставляется с достойной реализацией RBAC.

0 голосов
/ 18 мая 2009

Попробуйте плагин DX_Auth для CodeIgniter. Я работаю над подобным (скорее надмножеством) функций, которые есть у DX_Auth. Мой набор аддонов CI включает отображение меню (которым можно управлять с помощью CSS), управление доступом на основе ролей до вызова контроллера и другие функции. Я надеюсь опубликовать его в ближайшее время. Придет URL проекта, когда я это сделаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...