2016-02-22 2 views
0

Я работаю над приложением, которое использует групповую модель для назначения права собственности на объекты домена. Я ищу помощь в определении пригодности Spring Security для авторизации.Реализация авторизации Spring Security с моделью владения группой

Группа:

В системе есть группы. Группа представляет собой коллекцию пользователей, у которых есть какая-то авторизация, чтобы делать что-то в этой группе. Например, пользователь «Салли» может быть членом группы «Группа А» и иметь роль «DATA_EDITING» в этой группе.

Данные, вводимые в систему, назначаются группе, а члены этой группы «владеют» этими данными и могут работать на нее в соответствии с их ролью в группе. Так, например, пользователь «Салли» выше может редактировать (CRUD) все данные, назначенные «Группе А».

Другими словами, каждому объекту домена присваивается «группа», и каждая группа имеет один или несколько членов (пользователей) с одной или несколькими ролями.

Это означает, что отдельный объект домена «принадлежит» 1 или более «принципалам», но только транзитно через доменную группу и общую группу участника.

Мой Текущие исследования:

При чтении Spring Docs, представляется, что наиболее подходящей особенностью Spring Security для этой модели Spring списки управления доступом. Мое понимание заключается в том, что я мог бы создавать ACL с AC/AC на основе пользователя/на основе (в DAOS), которые используют мои «группы» таким образом, что Spring Security действительно не имеет представления о нашей групповой модели, но с точки зрения нашего пользователя ничего не изменится. Другими словами, вышеприведенная «Салли» все равно сможет «думать» в группах, но на уровне базы данных авторизация будет по-прежнему выполняться с помощью ACL, основанного на пользователе/​​принципе. DAO объекта домена переводит членство группы Sally в стандартный ACL для этого объекта домена.

Этот подход возможен или есть лучший подход (который сохраняет групповую модель) с использованием Spring Security или другого продукта?

ответ

0

Весна Безопасность в некоторой степени группы поддержки.

Власти находятся в типичных случаях, таких как ROLE_USER и ROLE_ADMIN, но также могут быть членами группы, такими как GROUP_A. В основном вы можете заполнить объект Authentication тем, что вы хотите во время аутентификации.

Запись ACL прилагается к идентификатору безопасности (sid для краткости). Идентификатор безопасности может быть либо основным (единственным пользователем) , либо. В вашем случае это похоже на то, что вы хотите использовать позже, чтобы применить правило ACL к группе.

Так что да, вы можете контролировать доступ на уровне группы в Spring Security.

Смежные вопросы