Межсотовая аутентификация WebSphere JAX-WS
Мы хотим создать интерфейсное веб-приложение для использования API-интерфейса HumanTask WPS с использованием JAX-WS. Это веб-приложение должно иметь возможность запрашивать текущие задачи для конкретного пользователя, запрашивать задачи, ранее не заявленные другим пользователем, выполнять задачи и так далее. Это веб-приложение будет развернуто на WAS 7.0 в другой ячейке, отличной от той, которая предоставляет службу HumanTask (в настоящее время мы используем другой экземпляр WPS в качестве WAS, но в конечном итоге это будет простой WAS без функций WPS). Мы синхронизировали ключи генерации LTPA с помощью следующих шагов:
- Вход в одну ячейку
- Перейдите в "Безопасность" > "Глобальная безопасность". В разделе "Аутентификация" нажмите "LTPA".
- В разделе "Кросс-ячейка единого входа"
- Установить пароль
- Подтвердите пароль
- Введите имя файла, в который будут экспортированы ключи LTPA
- Нажмите "Экспорт ключей"
- Выйти
- Скопируйте сгенерированный файл на другой сервер
- Войдите в другую ячейку
- Перейдите в "Безопасность" > "Глобальная безопасность". В разделе "Аутентификация" нажмите "LTPA".
- В разделе "Кросс-ячейка единого входа"
- Введите предыдущий пароль
- Подтвердите Пароль
- Введите имя файла с помощью экспортированных ключей LTPA
- Нажмите "Импортировать ключи"
- Перезагрузите сервер
Мы разработали простое веб-приложение с GWT в качестве доказательства концепции с простым пользовательским интерфейсом и клиентом веб-службы, который использует службу HumanTask JAX-WS. Это веб-приложение защищено аутентификатором Siteminder (при первом входе в веб-приложение агент Siteminder перенаправляет на веб-форму с запросом учетных данных). Клиент веб-сервиса был разработан в соответствии со стандартами JAX-WS, никаких дополнительных зависимостей не было добавлено, мы полагаемся на реализацию WebSphere JAX-WS (Apache Axis2). После развертывания мы проверили два сценария без удачи:
Сценарий А:
- По умолчанию поставщик услуг WPS HumanTask подключен к набору политик "Веб-служба BPC" с отключенной привязкой набора политик по умолчанию и общим набором политик.
- Мы настраиваем наш сервисный клиент HumanTask для использования того же набора политик, что и для сервис-провайдера.
Войдите в пользовательское веб-приложение. При попытке запроса текущих задач мы получаем следующее исключение:
com.ibm.wsspi.wssecurity.core.SoapSecurityException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login Failure: all modules ignored ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityGeneratorHandler$2@6fef6fef
Нет сообщения об ошибке на стороне поставщика услуг.
Сценарий Б:
- Измените конфигурацию поставщика услуг WPS HumanTask, включив общий доступ к набору политик через HTTP GET. Таким образом, поставщик услуг WSDL содержит информацию о наборе политик.
- Измените конфигурацию набора политик на клиентском сервисе, чтобы получить набор политик от провайдера, используя HTTP GET.
Войдите в пользовательское веб-приложение. При попытке запроса текущих задач мы получаем следующее исключение:
javax.xml.ws.soap.SOAPFaultException: security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS6521E: The Login failed because of an exception: javax.security.auth.login.LoginException: Login module com.ibm.ws.wssecurity.wssapi.token.impl.UNTConsumeLoginModule login() method returned false ocurred while running action: com.ibm.ws.wssecurity.handler.WSSecurityConsumerHandler$1@54a054a0
До достижения точки, где сообщается о предыдущем исключении, мы видим следующее предупреждение в журналах клиента службы:
CWWSS7053W: No web services security custom bindings were found. Default bindings will be used.
В журналах поставщика услуг мы видим следующую ошибку:
CWWSS5514E: An exception while processing WS-Security message.
И набор FFDC генерируется, сообщая о том же исключении, которое мы получили на стороне клиента службы.
Кто-то, кто мог бы помочь нам, был бы великолепен!
1 ответ
У нас была та же проблема, но нам удалось решить ее с помощью следующих шагов. По сути, вам нужно изменить набор политик по умолчанию, применяемый к HTM JAXWS API (по умолчанию это просто пример), и использовать привязку настраиваемого поставщика, которая может извлекать идентификационные данные, содержащиеся в маркере LTPA, через "вызывающего". Шаги ниже:
Создать привязки настраиваемого набора политик
1) Нажмите "Службы" > "Наборы политик" > "Общие привязки набора политик поставщика". 2) Выберите привязку "Образец поставщика" и нажмите "Копировать...". 3) Введите имя как "Аутентифицированный вызывающий абонент LTPA" и нажмите кнопку "ОК". 4) Нажмите "LTPA Authenticated Caller" в списке привязок. 5) Нажмите "WS-Security", затем "Caller". 6) Нажмите "New" и введите следующие данные (оставьте другие поля пустыми). Имя: auth_ltpa Идентификатор вызывающего абонента. локальная часть: URI пространства имен идентификатора вызывающего абонента LTPAv2: http://www.ibm.com/websphere/appserver/tokentype Нажмите кнопку ОК.
Назначить набор политик и привязки
1) Разверните "Службы", нажмите "Поставщики услуг". 2) Нажмите "HTMJAXWSService". 3) Установите флажок, чтобы выбрать службу HTMJAXWSService в списке "Вложения набора политик", затем нажмите "LTPA WSSecurity default" в выпадающем списке "Набор политик подключения". 4) Установите флажок, чтобы выбрать службу HTMJAXWSService в списке вложений набора политик, затем нажмите "Аутентифицированный вызывающий абонент LTPA" в раскрывающемся списке "Назначить привязку". 5) Сохраните все изменения в главной конфигурации.
Назначить набор политик и привязки
1) Разверните "Службы", нажмите "Служба клиентов". 2) Нажмите ссылку "HTMJAXWSService", где столбец "Развернутый ресурс" соответствует модулю, содержащему клиент, которого вы хотите настроить. 3) Установите флажок, чтобы выбрать службу HTMJAXWSService в Список вложений набора политик, затем щелкните "LTPA WSSecurity default" в раскрывающемся списке "Набор политик вложений". Убедитесь, что этот параметр наследуется всеми дочерними уровнями (т. Е. Портом и всеми методами). 4) Установите флажок, чтобы выбрать службу HTMJAXWSService в списке вложений набора политик, затем нажмите "По умолчанию" в раскрывающемся списке "Назначить привязку". 5) Сохраните все изменения в основной конфигурации
Заключение
Теперь должна быть возможность звонить с вашего клиента через HTM API с использованием аутентификации LTPA. Чтобы сделать это, ваше клиентское приложение должно быть настроено так, чтобы оно требовало либо аутентификации, либо обеспечения аутентификации для неаутентифицированных URL-адресов (последний будет уместен для приложений, которые ожидают, что TAI SiteMinder предварительно заполнит аутентифицированную идентификационную информацию пользователя).
Надеюсь это поможет!