Системы управления ролями Java EE — существуют ли они?

Я рассматриваю создание децентрализованной системы управления ролями, которая интегрируется с ролями Java EE. Существует ли что-нибудь подобное?

Примеры использования:

Система A — это система с ограниченным доступом, в которой используются корпоративные роли. Джон присоединяется к команде, и для выполнения его функций требуется SYSTEM_A_READONLY. Он входит в децентрализованную систему управления ролями и отправляет запрос SYSTEM_A_READONLY. Билл является администратором Системы А и получает уведомление о том, что Джон подал заявку на этот доступ. Затем он может войти в ту же систему и одобрить запрос. Теперь у Джона есть доступ к Системе А.

Система B — это чувствительная система управления клиентами. У него есть 1 роль для каждой компании, которую он обслуживает. В настоящее время у него есть SYSTEM_B_CLIENT_FOO, SYSTEM_B_CLIENT_BAR и т. д. Грег является администратором этой системы, и отдел продаж уведомил его о том, что TNT зарегистрировалась в качестве клиента. Он входит в систему управления ролями и добавляет нового клиента. Веб-приложение C (размещенное удаленно, но по-прежнему использующее корпоративные роли) обнаруживает новую роль и добавляет ее в качестве опции для своих пользователей.

Надеюсь, это имеет смысл. Я пытался сделать это сам, но это похоже на требование, которое должно быть довольно распространенным.


person Robert Wilson    schedule 07.01.2010    source источник


Ответы (5)


Вы можете посмотреть Apache Shiro http://incubator.apache.org/shiro/, хотя я Я не уверен, что он либо готов к прайм-тайму, либо полностью делает то, что вы ищете, из коробки.

Вы можете разработать компоненты авторизации с помощью Spring Security, в частности, внедрив собственные AccessDecisionVoter и UserDetailsService. Сущности, постоянство и компоненты веб-интерфейса довольно просты, вы можете делать их в любой удобной для вас среде.

person Lance Weber    schedule 13.01.2010
comment
Похоже, довольно хорошая база для работы - спасибо. Здесь много хороших ответов, но ваш выглядит самым интересным. - person Robert Wilson; 18.01.2010

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

В зависимости от требований, он также может быть достаточно простым в настройке. Если «подача запроса» просто означает «отправлено электронное письмо администратору», а «добавление клиента» означает вход в систему с использованием простой, сгенерированной CRUD-инфраструктуры, администрирование и заполнение формы, то вы уже сделали это.

person Confusion    schedule 12.01.2010

Есть несколько продуктов, которые могут вам помочь, например, crosslogix от bea.

Как правило, это механизмы логического принятия решений, которые позволяют создавать сложные правила, позволяющие вкладывать и иерархизировать такие вещи, как роли и разрешения. они также (как правило) допускают параметризованные проверки разрешений, например пользователь находится в роли ACCOUNT_APPROVER, если это последняя неделя месяца.

«Обнаружение новых ролей» обычно является побочным продуктом наличия централизованной системы — т. е. все просто запрашивает ее, а API работает очень быстро, специально для того, чтобы сделать запрос «дешевой» операцией.

В чем они, как правило, не так хороши (думаю, поскольку они считают, что это не в их компетенции), так это в рабочем процессе, связанном с утверждением доступа к этим ролям. Как правило, они предоставляют вам консоль (и API) для их изменения, но оставляют рабочий процесс утверждения на ваше усмотрение.

Как сказал предыдущий автор, проблема с битом утверждения заключается в том, что он, как правило, очень специфичен для компании, поэтому его часто оставляют как API.

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

-туз

person phatmanace    schedule 12.01.2010

Для меня такая система существует и называется LDAP (группы LDAP обычно сопоставляются с ролями J2EE). Но я признаю, что движок LDAP не обеспечивает всех возможностей и рабочих процессов, о которых вы упомянули. На самом деле, мой опыт показывает, что они специфичны для каждой компании (возможно, из-за отсутствия «универсального» инструмента), и в большинстве случаев компании, в которых я работал, имели специальные приложения для администрирования и настраиваемые API для взаимодействия с ним из приложений.

person Pascal Thivent    schedule 13.01.2010

Мы использовали что-то очень похожее на то, о чем вы спрашиваете. Icefaces имеет свойство renderonUserRole для своих компонентов, это можно комбинировать с Spring Security для достижения части того, что вам нужно. см. это

person Mite Mitreski    schedule 07.01.2010
comment
Спасибо, это выглядит полезно, но я действительно ищу что-то для управления ролями (т.е. не жестко запрограммированное в конфигурации). - person Robert Wilson; 07.01.2010