2013-03-31 2 views
9

Я ищу инфраструктуру безопасности, которая обеспечивает защиту на основе ролей для служб OSGi, а также веб-сервисов CXF. Некоторое время назад я уже использовал весеннюю безопасность, но, поскольку мы теперь перешли на чертеж, я больше не вариант, насколько я понял. Чтобы настроить правила доступа, я бы хотел в основном использовать стандарт @RolesAllowed annotation. Итак, каковы мои лучшие отправные точки? Я также подумал о том, чтобы реализовать это как расширение чертежа, но я предпочел бы существующее решение.Безопасность на основе ролей для OSGi

+0

Я сконфигурировал Shiro в своем приложении, работая на Karaf. Мне удается настроить диспетчер безопасности, поэтому я могу войти в систему/выйти из системы, используя учетные данные, хранящиеся в БД. Теперь я изо всех сил пытаюсь найти способ использовать эти аннотации. Вы нашли решение? – jhamon

+0

Я не использовал сиро в конце. Вместо этого я использовал CXF JaasLoginFeature. Он выполняет вход в jaas, используя учетные данные, которые затем могут быть извлечены из одного потока. Например, модуль blue-authz для арий использует вход в jaas. –

+0

CXF Jaas также поддерживает функцию, похожую на «сессию», предоставляемую Сиро? – jhamon

ответ

8

Я предлагаю вам пойти с Apache Shiro вместо этого, http://shiro.apache.org/.

Он предоставляет простые API для аутентификации, авторизации, криптографии и управления сеансами. Его также можно легко развернуть внутри контейнера OSGI. Некоторые плюсы Apache Shiro перечислены здесь Apache Shiro vs Java EE native APIs

+0

Сиро находится в списке фреймворков, которые я изучаю. Есть ли какая-то документация, как настроить ее для OSGi? Особенно я ищу несколько примеров/подсказок о том, как использовать его для простых служб OSGi и для служб CXF. Приведенные примеры всегда относятся к приложениям Java (сервлета). Так, например, если я создаю службу OSGi, как мне включить сиро на нее и как я могу удостоверить ее аннотации RolesAllowed? Или, если я позвоню в службу OSGi, как мне пройти аутентификацию. Я предполагаю, что будет какая-то локальная локация для хранения моей информации об аутентификации. –

5

В то же время я создал расширение чертежа для авторизации на основе JAAS и Java EE annoations (@RolesAllowed, @PermitAll, @DenyAll). Вы можете добавить расширение в любой файл чертежа. Затем он сканирует все бобы для этих аннотаций и перехватывает вызовы, если они будут найдены. Он использует существующий контекст JAAS для получения ролей пользователя.

Таким образом, предварительное условие для этого - вход в систему JAAS. Я также создал функцию CXF JAASAuthentication, которая регистрируется пользователем на основе основного принципала имени пользователя auth или ws. Модуль работает вместе с поддержкой Apache Karaf JAAS. Таким образом, все пользователи и роли karaf применяются.

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

КПП. Другим подходом для karaf является контроль доступа на основе роли для служб OSGi, который встроен в karaf 3+. Он не работает с аннотациями, но также прост в использовании. См. http://coderthoughts.blogspot.de/2013/10/role-based-access-control-for-karaf.html

+0

Кристиан, у вас есть ссылка на то, что вы сделали, так как мне было бы интересно делать то же самое, что и это (что означает расширение вашего плана). Спасибо. –

+0

Это должно помочь https://github.com/cschneider/Karaf-Tutorial/blob/master/cxf/personservice/server/src/main/resources/OSGI-INF/blueprint/blueprint.xml. Записанные конфигурации активируют модуль authz, чтобы разрешить @RolesAllowed, а JAASAuthenticationFeature заботится о логине. –