Существует ли какая-либо 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 для их использования и управления. Но вы можете побелить свои функции.