У меня есть два приложения, работающих в одном экземпляре сервера WAS 7.0, одним из которых является IBM Business Space (что в данном случае не имеет значения, но в любом случае), другое один - служба RESTful, которую я разрабатываю. Оба приложения взаимодействуют с FileNet Content Engine. Я знаю, что Business Space использует JAAS для использования задач аутентификации и авторизации, а также для моей службы. Требования при доступе к службе выполняют запросы к FileNet из службы, используя маркер безопасности пользователя, который уже был зарегистрирован в Business Space. У меня нет глубокого понимания механизма JAAS и вы можете ошибаться, но быстрый поиск в Google говорит, что можно получить JAAS Subject зарегистрированного пользователя и передать его в UserContext моей службы. Код, я использую следующий:JAAS Авторизация в веб-сервисе, взаимодействующем с FileNet Content Engine
if (userContext == null) {
userContext = UserContext.get();
if (userContext.getSubject() == null) {
LoginContext loginContext = new LoginContext("config");
loginContext.login();
userContext.pushSubject(loginContext.getSubject());
}
}
UserContext.set(userContext);
Соответствующий JAAS файл конфигурации:
config {
com.filenet.api.util.WSILoginModule required;
};
У меня есть следующие вопросы:
- Должен ли я пройти обработчик обратного вызова конструктора LoginContext если я не хочу предлагать пользователю вводить учетные данные, если он не был зарегистрирован в приложении Business Space?
- Должен ли я настроить любые настройки WAS, чтобы этот сценарий работал?
UPDATE
Я установил:
- BASIC метод аутентификации в web.xml запрашивать учетные данные пользователя с помощью браузера конкретного диалогового
- путь к JAAS. conf, в котором указывается, какая реализация класса LoginModule для использования
Когда я проверить это решение, он не со следующей ошибкой:
javax.security.auth.login.LoginException: Error: no CallbackHandler available to get authentication information
При условии авторизации обратного вызова успешно, это означает, что по какой-то причине службы не может получить необходимый объект JAAS.
Что мне не хватает?
Кроме того, я наткнулся на следующее заявление на веб-сайте IBM:
One of the advantages inherent to the EJB transport layer is the ability to leverage Java™ Authentication and Authorization Service (JAAS)-based authentication.
Это не государство, однако, что это невозможно использовать JAAS при использовании WS транспорта. Или это?
ли я получить это право, что вы используете WSI транспорт, а не один EJB? – fnt
fnt, да, я использую WSI. – koss
Непонятно, как осуществляется доступ к вашему сервису и откуда. Это вызов удаленной конечной точки HTTP? Просьба уточнить это и показать код. – fnt