2009-11-05 3 views
2

Я ищу структуру безопасности для веб-приложения Java с детализацией объектов.Структура безопасности для java с детализацией объекта

Что это значит, так это то, что я не просто хочу фильтровать по URL-адресам или по ролям, но по конкретному пользователю, владеющему предметами домена внутри системы.

Например, если есть Message объект, который имеет Sender пользователя и Receiver пользователя, я хотел бы, чтобы иметь возможность настроить его так, что каждое сообщение может быть RW его отправителем и RO по его приемником.

Или, например, все профили пользователей доступны для просмотра всеми пользователями, но редактируются только владельцем.

Эти правила, конечно, я хотел бы определить их с помощью метаданных (аннотаций, xml-файлов и т. Д.) И не встроенных в мою бизнес-логику.

Есть ли такой зверь там? Предпочтительно открытый источник.

+1

Я поддержал Мэтта Б, но я бы сказал, что нет ничего плохого в создании собственного решения на заказ. Часто существует общая тенденция пытаться ломаться в общей структуре, когда на самом деле часто бывает меньше времени на риск/меньше времени разработки, чтобы просто написать свой собственный, особенно в этом случае, когда ваша модель прав звучит довольно просто. – Adamski

+0

В то же время, вполне возможно, что общая структура действительно подходит для вашего случая использования, и, возможно, не стоит времени изобретать колесо и сталкиваться и решать все проблемы, которые авторы библиотеки уже решили. Как и во всем, это баланс и решение сделать. –

ответ

0

Проверьте эту ссылку Acegi Security Fundementals - она ​​немного устарела, но по-прежнему дает вам основные концепции механизмов авторизации уровня объекта Spring Security.

1

Вы ищете списки управления доступом (ACL). Как и другие респонденты, я думаю, что Spring Security стоит проверить здесь - Acegi - это именно то, что раньше называли Spring Security, прежде чем они переименовали его. Spring Security имеет явную поддержку ACL (в дополнение к элементам управления доступом на основе URL-адресов, на основе ролей и групп). Он поддерживает как XML, так и конфигурацию на основе аннотаций. И вы можете применить фильтрацию ACL к представлению (используя taglibs, чтобы решить, что делать или подавлять в JSP), методам, возвращающим один объект домена (решить, разрешить ли вызов метода успешным) и методам, возвращающим (решить, какие объекты фильтровать из коллекции, прежде чем возвращать).

Возможно, вам удастся свернуть свой собственный код ACL для простых требований, но, на мой взгляд, ACL могут оказаться довольно сложными. Особенно, если у вас много доменных объектов, и вы должны серьезно приступить к управлению производительностью.

+0

После просмотра классов ACL в Spring Security я должен сказать, что я не думаю, что они готовы к прайм-тайм. Мне было гораздо проще просто использовать перехватчики Security/Method и создать свою собственную бизнес-логику в отношении моих бизнес-объектов. – Gandalf

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