Межсотовая аутентификация WebSphere JAX-WS

Мы хотим создать интерфейсное веб-приложение для использования API-интерфейса HumanTask WPS с использованием JAX-WS. Это веб-приложение должно иметь возможность запрашивать текущие задачи для конкретного пользователя, запрашивать задачи, ранее не заявленные другим пользователем, выполнять задачи и так далее. Это веб-приложение будет развернуто на WAS 7.0 в другой ячейке, отличной от той, которая предоставляет службу HumanTask (в настоящее время мы используем другой экземпляр WPS в качестве WAS, но в конечном итоге это будет простой WAS без функций WPS). Мы синхронизировали ключи генерации LTPA с помощью следующих шагов:

  1. Вход в одну ячейку
  2. Перейдите в "Безопасность" > "Глобальная безопасность". В разделе "Аутентификация" нажмите "LTPA".
  3. В разделе "Кросс-ячейка единого входа"
    1. Установить пароль
    2. Подтвердите пароль
    3. Введите имя файла, в который будут экспортированы ключи LTPA
    4. Нажмите "Экспорт ключей"
  4. Выйти
  5. Скопируйте сгенерированный файл на другой сервер
  6. Войдите в другую ячейку
  7. Перейдите в "Безопасность" > "Глобальная безопасность". В разделе "Аутентификация" нажмите "LTPA".
  8. В разделе "Кросс-ячейка единого входа"
    1. Введите предыдущий пароль
    2. Подтвердите Пароль
    3. Введите имя файла с помощью экспортированных ключей LTPA
    4. Нажмите "Импортировать ключи"
  9. Перезагрузите сервер

Мы разработали простое веб-приложение с 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 предварительно заполнит аутентифицированную идентификационную информацию пользователя).

Надеюсь это поможет!

Другие вопросы по тегам