Управление доступом на основе ролей

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


person jerichorivera    schedule 22.09.2008    source источник


Ответы (11)


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

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

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

person dcousineau    schedule 22.09.2008
comment
Роберт: Этот ответ настолько старый, что лучше не следовать его совету, даже если ссылки все еще работают. - person dcousineau; 01.10.2015

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

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

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

person Jens Roland    schedule 24.01.2009
comment
У меня также есть такое же мнение, что на этот вопрос принят неправильный ответ. ACL и RBAC сильно различаются, и решение ACL принимается для вопроса о RBAC. - person Syed Qarib; 13.08.2014
comment
Педантичность: я бы не рекомендовал использовать их для аутентификации на основе ролей. контроль доступа != аутентификация И да, что более важно, ACL != RBAC ^_^ - person Spain Train; 09.04.2015
comment
@SpainTrain: Вы, конечно, правы - я изменил авторизацию на ролевую - person Jens Roland; 11.12.2015

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

person Brendon Dugan    schedule 28.07.2012
comment
какие потребности у вас были, что ваш проект удовлетворяет? В противном случае это просто реклама. - person ftrotter; 01.01.2013
comment
Поскольку ОП просил систему управления доступом на основе ролей с открытым исходным кодом, основанную на PHP, а PHP-Bouncer — это система управления доступом на основе ролей с открытым исходным кодом, основанная на PHP, я подумал, что это будет довольно подходящим. - person Brendon Dugan; 02.01.2013
comment
Некоторое время назад PHP-Bouncer был перенесен на Github, я обновил ссылку. Спасибо, что обратили на это мое внимание! - person Brendon Dugan; 07.08.2017

phpgacl http://phpgacl.sourceforge.net/ — это универсальная структура управления доступом на основе ACL.

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

person paan    schedule 22.09.2008

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

На самом деле я использовал первый в PolyAuth: https://github.com/Polycademy/PolyAuth/

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

person CMCDragonkai    schedule 30.05.2013

Узнал о Khaos ACL, который является библиотекой CI... Я также проверяю phpgacl и как его использовать для CI... Еще не проверял Zend ACL. Но может его можно "портировать" на CI

person Community    schedule 23.09.2008

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

person Community    schedule 18.05.2009

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

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

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

person Community    schedule 14.09.2009

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

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

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

person AbiusX    schedule 28.02.2013
comment
Вы опубликовали тот же ответ на другие вопросы. Вы разработчик? - person Luciano; 01.10.2013
comment
Я один из разработчиков. - person AbiusX; 23.03.2014

http://www.jframework.info (мертвая ссылка)

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

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

person AbiusX    schedule 05.08.2010

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

person almix    schedule 01.08.2012