понедельник, 17 декабря 2012 г.

Добавляем поддержку OWSM к ADF-домену

В предыдущем посте мы рассмотрели базовые аспекты создания Weblogic-домена для развертывания в нем Oracle ADF-приложений. При этом мы не затронули специфичные особенности, одной из которых является поддержка Oracle Web Services Manager.  Зачем нам может понадобиться данная функциональность? Я вижу как минимум 2 применения:
Рассмотрим процесс настройки OWSM в нашем домене.
Вспомним, что при создании домена мы выбирали в списке продуктов Oracle JRF и Enterprise Manager:
Запустим Admin Server и Managed Server нашего домена, откроем Fusion Middleware Control (http://<admin_server_host>:<admin_server_port>/em) и попробуем просмотреть OWSM-политики домена:
В результате выбора пункта меню Web Services -> Policies мы получим ошибку Cannot locate policy manager query/update service. Policy manager service look up did not find a valid service, due to: Unable to connect to WS Policy Manager. <- oracle.wsm.policymanager.PolicyManagerException: WSM-02118 : The query service cannot be created. <- javax.naming.NameNotFoundException: While trying to lookup 'QueryService#oracle.wsm.policymanager.ejb.IStringQueryServiceRemote' didn't find subcontext 'QueryService#oracle'. Resolved ''; remaining name 'QueryService#oracle/wsm/policymanager/ejb/IStringQueryServiceRemote.

Причина возникновения ошибки в том, что в нашем в домене не настроено приложение OWSM  Policy Manager, следует его добавить. Предварительно остановим все сервера домена.
Политикам Web Service Manager надо где-то хранится, и этим хранилищем является репозиторий метаданных (MDS), создать в БД схему для MDS-репозитория можно с использованием утилиты RCU (Repository Creation Utility). RCU сейчас используется для создания всех схем БД, необходимых для Oracle Fusion Middleware-продуктов. Версия RCU должна соответствовать версии инсталлятора ADF Runtime. В нашем случае имеем домен ADF 11.1.2.3, созданный с помощью ADF Runtime 11.1.1.6 и патчей сверху. Поэтому скачиваем RCU 11.1.1.6,  например со станицы Oracle SOA Suite downloads (ссылку на RCU найдете раскрыв список Prerequisites & Recommended Install Process).  RCU – довольно простая утилита, вот в этом посте хорошо описаны базовые операции и  показан пример создания схем для Oracle SOA – продуктов, так что  детально этот процесс не описываю. Мы создадим всего лишь одна схему для нашего MDS:

Теперь запускаем Configuration Wizard (<MW_HOME>\oracle_common\common\bin\config.cmd) и
выбираем опцию расширения существующего домена.
Выбираем каталог нашего ADF-домена и через 1 шаг в окне добавления новых продуктов включаем поддержку Oracle WSM Policy Manager.
Далее в мастере нам нужно прописать детали соединения с нашей MDS-схемой, которую мы создали ранее.

На следующем шаге проходим тестирование соединения, и в конце остается только нажать Extend.
Запускаем AdminServer и Manager Server, после чего переходим в FMW Control и убеждаемся, что теперь OWSM-политики корректно отображаются:
Теперь можно развернуть в нашем ADF-домене тестовое приложение (код приложения доступен по данной ссылке ). В этом простом ADF-приложении Application Module HRService опубликован как SDO Web Service (точнее не весь Application Module, а некоторые операции View Object Instances, которые в него включены). В результате автоматически сгенерированы WSDL-файл web-сервиса, XML-схема с типами данных и 2 java-класса:
В java-классе с реализацией Web-сервиса мы добавили аннотацию SecurityPolicy и указали стандартную OWSM-политику oracle/wss_username_token_service_policy.

Данная политика проверяет, присутствует ли в SOAP-заголовке WS-Security Username Token и соответствует ли  логин/пароль в токене какому-либо реальному пользователю в Identity Store. После развертывания приложения в нашем ADF-домене можно провести вызов Web-сервиса через стандартный интерфейс тестирования web-сервиса. Выберем операцию getDepartmentsView1 и вызовем ее, передав некоторое корректное значение в качестве идентификатора отдела:
В ответ получим Invalid Security Fault, что не удивительно, так как сервис защищен политикой, а мы не передали WS-Security Username Token в составе нашего запроса:
Между прочим, если бы мы ранее не произвели настройку OWSM в нашем ADF-домене, то мы получили бы при вызове сервиса другую ошибку: PolicySet   Invalid:  WSM-06102  PolicyReference  The  policy reference URI "oracle/wss_username_token_service_policy" is not valid.  
Вызовем сервис еще раз, теперь передав в WS-Security заголовке корректный логин/пароль пользователя:
Теперь все требования политики соблюдены, и мы получим ответ от нашего сервиса:






7 комментариев:

  1. Дмитрий, подскажите пожалуйста, какой продукт нужно установить, чтобы стали доступны EM и OWSM в домене. Почему-то думал, что OWSM идет только с SOA Suite и/или OSB.

    ОтветитьУдалить
  2. Павел, достаточно установить в Middleware Home продукт Oracle ADF Runtime - http://www.oracle.com/technetwork/developer-tools/adf/downloads/index.html , и в мастере создания домена станут доступными EM и WSM Policy Manager.

    ОтветитьУдалить
  3. Другой вопрос - как тут все обстоит с точки зрения лицензий? Попробую уточнить этот момент у продакт-менеджеров.

    ОтветитьУдалить
  4. Да, особенно интересуют лицензии. Буду благодарен за информацию.

    ОтветитьУдалить
  5. Павел, с лицензиями ситуация такая: OWSM не продается как отдельный продукт, для его использования заказчик должен купить что-то, куда OWSM входит. За подробностями пишите на рабочий e-mail: dmitry.nefedkin@oracle.com

    ОтветитьУдалить
  6. Дмитрий, скажите, есть ли возможность настройки безопасности web-сервисов (например, авторизация пользователем из OID), на WebLogic без установки OWSM?

    ОтветитьУдалить
    Ответы
    1. Да, можно использовать реализацию ws-policy, которая осталась с времен BEA. См тут: http://docs.oracle.com/cd/E23943_01/web.1111/b32511/intro_ws.htm#CHDDIEFD

      Удалить