2016-04-05 2 views
1

Я ищу создание безопасного приложения, которое будет работать на Karaf. Будучи человеком, который никогда не использовал JAAS (работая только с Сиро), у меня много проблем с тем, чтобы на самом деле реализовать что-либо в JAAS. Google не очень помогает, так как он приветствует Spring, JavaEE и Struts каждый раз, когда он видит что-либо, что даже Rimes с JAAS :) Я думаю, что я понял, как управлять областями и модулями входа с помощью Karaf, но у меня есть некоторые вопросы к остальная часть задачи:Как использовать JAAS с авторизацией на основе разрешения в OSGi

  1. Как я на самом деле сеанс для моего приложения? Часть приложения будет использовать сервисы CXF REST для общения, что кажется довольно простым, но я также создам веб-интерфейс с поддержкой Wicket (я угадываю через pax-web). Как сделать сеансы JAAS в этом случае, чтобы избежать постоянных входов в систему?

  2. Безопасность на основе разрешений с использованием JAAS в Карафе. Используя Сиро, я привык к авторизации на основе разрешений (или на основе действий), где у субъекта есть несколько ролей, и у тех есть разрешения, которые вы фактически проверяете. Кажется, JAAS не поддерживает это из коробки. Есть ли способ реализовать это, снова используя JAAS в Karaf. Где я могу указать, какие разрешения идут с каждой ролью?

  3. Это может показаться глупым вопросом, но, пожалуйста, старайтесь не слишком хихикать, я действительно чувствую, что в настоящее время я тону в JAAS. Каков правильный способ проверки подлинности? Я вижу, что AccessController и Subject.doAsPriviledged используются в разных контекстах, и у меня возникают проблемы с определением разницы, если таковые имеются.

ответ

1

Вы можете использовать CXF JAAS Login Feature. Он делает логин JAAS против бэкэнда Karaf JAAS без дополнительной настройки. Результатом является вход в текущий поток.

Субъект может быть получен с помощью:

Subject subject = Subject.getSubject(AccessController.getContext()); 

Вы можете извлечь из принципалов субъекта. Обычно на принципалах находится пользователь, а остальные - роли.

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

Овен также имеет модуль blueprint authz, который позволяет выполнять авторизацию на основе ролей с помощью @RolesAllowed. В фоновом режиме он использует роли объекта JAAS.

Я также нашел an example для полного небольшого приложения.

+0

Привет, христианин. Спасибо за быстрый ответ. Вы знаете, как обращаться с JAAS в карафе с веб-интерфейсами. Для этого потребуются некоторые пользовательские функции входа в систему, а также управление сеансом. Мне очень трудно найти конкретную информацию об этом. –

+0

Одним из источников информации может быть интеграция веб-консоли karaf. Он также использует JAAS для входа. См. Https://github.com/apache/karaf/blob/master/webconsole/console/src/main/java/org/apache/felix/webconsole/internal/servlet/JaasSecurityProvider.java –

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