Существует ли какая-либо PHP based система управления доступом на основе ролей с открытым исходным кодом, которую можно использовать для CodeIgniter?
Управление доступом на основе ролей
Ответы (11)
Брэндон Сэвидж провел презентацию своего пакета PHP "ApplicationACL", который может выполнять или не выполнять ролевую доступ. PHPGACL тоже может работать, но я не могу вам сказать наверняка.
Однако я могу вам сказать, что компонент Zend_ACL Zend Framework будет выполнять настройки на основе ролей (однако вам придется создать подкласс, чтобы проверить несколько ролей одновременно). Конечно, вам придется вытащить Zend_ACL, я не верю, что он имеет какие-либо внешние зависимости, из монолитной загрузки (или проверки SVN).
Хорошая особенность Zend_ACL заключается в том, что он не зависит от хранилища. Вы можете либо пересобирать его каждый раз, либо он предназначен для сериализации (я использую комбинацию обоих, сериализую для кеша и перестраиваю из БД).
Возможно, я неправильно понимаю вопрос, но разве весь смысл управления доступом на основе ролей (RBAC) не заключается в том, чтобы избегать списков управления доступом (ACL)?
RBAC отличается от списков управления доступом (ACL) (...) тем, что он назначает разрешения для определенных операций, имеющих значение в организации, а не для объектов данных низкого уровня. Например, список управления доступом может использоваться для предоставления или запрещения доступа на запись к конкретному системному файлу, но в нем не будет указано, каким образом этот файл может быть изменен. В системе на основе RBAC операция может заключаться в создании транзакции «кредитного счета» в финансовом приложении (...). Назначение разрешения на выполнение конкретной операции имеет смысл, поскольку операции детализированы и сами по себе имеют значение в приложении. (Цитата: Википедия)
Я не знаю особенностей Zend_ACL или других упомянутых реализаций, но если они основаны на ACL, я бы не рекомендовал использовать их для авторизации на основе ролей.
Я создал проект с открытым исходным кодом под названием PHP-Bouncer, который может вас заинтересовать. Он все еще довольно молодой, но работает хорошо и его легко настроить. В итоге я разработал его, потому что ни одно из существующих решений не соответствовало моим потребностям. Надеюсь, это поможет!
phpgacl http://phpgacl.sourceforge.net/ — это универсальная структура управления доступом на основе ACL.
хотя я не знаю о какой-либо конкретной реализации CI, я знаю, что вам нужен только файл основного класса, чтобы заставить phpgacl работать. Так что я считаю, что интеграция с CI не будет проблемой. (я работаю мимоходом с CI)
Вот две библиотеки RBAC для PHP, которые я нашел:
На самом деле я использовал первый в PolyAuth: https://github.com/Polycademy/PolyAuth/
Это полнофункциональная библиотека аутентификации, включающая RBAC уровня 1 NIST. И да, RBAC — это не то же самое, что ACL. Я также использую Codeigniter, все, что вам нужно сделать, это использовать драйвер PDO и передать идентификатор соединения. Как это сделать, смотрите в этом руководстве: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo
Узнал о Khaos ACL, который является библиотекой CI... Я также проверяю phpgacl и как его использовать для CI... Еще не проверял Zend ACL. Но может его можно "портировать" на CI
Попробуйте плагин DX_Auth для CodeIgniter. Я работаю над аналогичным (скорее надмножеством) функций, которые есть у DX_Auth. Мой набор дополнений CI включает в себя отображение меню (которыми можно управлять с помощью CSS), управление доступом на основе ролей до вызова контроллера и другие функции. Я надеюсь опубликовать его в ближайшее время. Когда я это сделаю, я дам URL-адрес проекта.
RBAC != ACL — у Роланда есть единственный правильный ответ на этот вопрос.
Кстати, конечно, это неотъемлемая часть фреймворка для реализации любой системы разрешений — по крайней мере, нет смысла использовать фреймворк, если он не дает вам хорошо спроектированную систему RBAC — возможно, лучше использовать простой шаблон. систему с любым уровнем ORM.
Распространенным антипаттерном в мире php является то, что такие фреймворки, как Ruby или Django, «клонируются» только как подмножество того, что предоставляют эти современные фреймворки. по сути шутка. В настоящее время существует только Yii PHP Framework с достойной реализацией RBAC.
Я знаю, что путь остыл, но появился новый проект:
PHP-RBAC — это PHP Hierarchical NIST уровня 2, основанный на стандартном управлении доступом на основе ролей, и он довольно зрелый. Это также проект OWASP.
Надеюсь, вам понравится на http://phprbac.net.
http://www.jframework.info (мертвая ссылка)
jFramework имеет стандартный RBAC уровня 2 NIST с улучшениями, который считается самым быстрым из доступных (включая тесты), он может работать с одним файлом базы данных SQLite и тщательно протестирован, работает как перчатка.
Имеет зависимость от jFramework DBAL, но вы можете просто заменить DBAL SQL Queries в коде на желаемый DBAL и, конечно же, вы можете использовать jFramework в стиле SOP.
Библиотека Ion Auth использует пользователей и группы — https://github.com/benedmunds/CodeIgniter-Ion-Auth но нет работающей системы RBAC для их использования и управления. Но вы можете побелить свои функции.