Включение защиты веб-служб
Используйте следующий способ для включения защиты веб-служб на уровне веб-сообщений. Можно включить основную аутентификацию HTTP (защита на уровне транспорта), добавив в политику дополнительные свойства.
Процедура
Результаты
callProps=NewObject();
callProps.Username="myName";
callProps.Password="myPassword";
WSInvokeDL(....,paramArray, callProps);Создание политики веб-службы с использованием защиты веб-служб
В этом примере показано, как настроить автономный сервер Rampart Apache Axis2 с политикой Netcool/Impact, чтобы включить защиту веб-служб.
Прежде чем начать
Информацию о модуле защиты Apache Axis2 Rampart смотрите по следующему URL. http://axis.apache.org/axis2/java/rampart/
.jks. Файлы Client.properties и client.jks используются на шаге 2 примера.- Требуется Java SDK или JRE 1.6 и новее. SDK Impact можно использовать, если вы устанавливаете пример
в той же системе, где установлен продукт Netcool/Impact:
IMPACT_HOME/sdk/bin - Требуется Ant 1.8 или новее. Можно использовать пакет Ant Netcool/Impact IMPACT_HOME/ant
- Убедитесь, что исполняемые файлы Java и Ant указаны в системной переменной среды PATH.
Об этой задаче
В этом примере используется Apache Axis2 версии 1.6.2 и rampart версии 1.6.2.
- Задайте Rampart как автономный сервер.
- Скачайте Axis2 со следующего URL. http://axis.apache.org/axis2/java/core/download.cgi
- Скачайте Rampart со следующего URL: http://axis.apache.org/axis2/java/rampart/download.html
- Распакуйте файлы, которые вы скачали на предыдущих двух шагах, и задайте следующие переменные среды:
- AXIS2_HOME=<где пакет axis2 скачан и распакован>
- RAMPART_HOME=<где пакет rampart скачан и распакован>
- Скопируйте все файлы JAR из RAMPART_HOME\lib в AXIS2_HOME\lib
cp –rf RAMPART_HOME\lib\* AXIS2_HOME\lib\. Напоминание: Пакет Rampart работает на сервере Windows, а Netcool/Impact работает на сервере UNIX. Используйте соответствующий разделитель файловой системы в соответствии с вашей операционной системой.
- Скопируйте следующие два файла MAR в AXIS2_HOME\repository\modules.
- RAMPART_HOME\modules\ rahas-1.6.2.mar
- RAMPART_HOME\modules\rampart-1.6.2.mar.
- Введите следующие команды.
Copy RAMPART_HOME\modules\ rahas-1.6.2.mar AXIS2_HOME\repository\modules\.Copy RAMPART_HOME\modules\ rampart -1.6.2.mar AXIS2_HOME\repository\modules\.
- Перейдите в каталог RAMPART_HOME\samples\basic
cd RAMPART_HOME\samples\basicВ этот каталог включены несколько типовых примеров под названиями от
sample01доsample11. Этот пример используетsample04. Прикладная программаsample04просто повторяет сообщение, которое вы вводите в переменную. - Введите следующую команду, чтобы построить приложение
sample04и запустить автономный сервер.
Эта команда создает все необходимые файлы и запускает автономное приложение дляant clean service.04sample04. Номер порта будет показан в терминале.
В примере показано, что сервер работает на порту 8080, и никаких предупреждений и ошибок нет.Buildfile: E:\opt\rampart-1.6.2\samples\basic\build.xml clean: [delete] Deleting directory E:\opt\rampart-1.6.2\samples\basic\build check.dependency: service.04: [mkdir] Created dir: E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\sample04 [mkdir] Created dir: E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\sample04\ services [mkdir] Created dir: E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\sample04\ modules [copy] Copying 2 files to E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\sample04\modules [mkdir] Created dir: E:\opt\rampart-1.6.2\samples\basic\build\temp [mkdir] Created dir: E:\opt\rampart-1.6.2\samples\basic\build\temp\META-INF [javac] E:\opt\rampart-1.6.2\samples\basic\build.xml:191: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 2 source files to E:\opt\rampart-1.6.2\samples\basic\build\temp [copy] Copying 1 file to E:\opt\rampart-1.6.2\samples\basic\build\temp\META-INF [copy] Copying 1 file to E:\opt\rampart-1.6.2\samples\basic\build\temp [copy] Copying 1 file to E:\opt\rampart-1.6.2\samples\basic\build\temp [jar] Building jar: E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\ sample04\services\sample04.aar [delete] Deleting directory E:\opt\rampart-1.6.2\samples\basic\build\temp [java] [SimpleHTTPServer] Starting [java] [SimpleHTTPServer] Using the Axis2 Repository E:\opt\rampart-1.6.2\samples\basic\build\service_repositories\sample04 [java] [SimpleHTTPServer] Listening on port 8080 [java] [INFO] Deploying module: addressing-1.6.2 - file: /E:/opt/rampart-1.6.2/samples/basic/build/service_repositories/sample04/modules /addressing-1.6.2.mar [java] [INFO] Deploying module: rampart-1.6.2 - file: /E:/opt/rampart-1.6.2/samples/basic/build/service_repositories/sample04/modules/ra mpart-1.6.2.mar [java] [INFO] Deploying Web service: sample04.aar - file: /E:/opt/rampart-1.6.2/samples/basic/build/service_repositories/sample04/servic es/sample04.aar [java] [INFO] Listening on port 8080 [java] [SimpleHTTPServer] Started - Проверьте приложение, выбрав
http://server:8080/axis2/services, и просмотрите следующий вывод.
Щелкните по ссылкеВнедренные службы sample04 Доступные операции echosample04, чтобы просмотреть файл WSDL. Полная ссылка на файл WSDL -http://сервер:8080/axis2/services/sample04?wsdl.
Теперь, когда служба работает, следующим шагом будет создание политики и конфигурирование Netcool/Impact.
- Создайте политику Netcool/Impact и сконфигурируйте защиту веб-служб.
- Создайте политику с помощью мастера политики обычным способом. Файл WSDL - это
http://сервер:8080/axis2/services/sample04?wsdl, а файл JAR называетсяsample04.Напоминание: Когда мастер запрашивает конечную точку и защиту, убедитесь, что вы включили защиту. Выберите следующую опцию Аутентификация имени пользователя сообщений SOAP, чтобы не вводить имя пользователя и пароль. - Мастер создает политику со следующими параметрами:
//Включить защиту веб-служб callProps=NewObject(); callProps.EnableWSS = true; callProps.WSSRepository= "/opt//IBM/tivoli/Impact71/dsa/wsdsa/wss"; callProps.WSSConfigFile = "/opt/ /IBM/tivoli/Impact71/dsa/wsdsa/wss/conf/Sample04_wss.xml";Совет: Путь к файлу может быть другим, если вы установили Netcool/Impact в другое положение. - Файл XML /opt/ /IBM/tivoli/Impact71/dsa/wsdsa/wss/conf/Sample04_wss.xml создается как шаблон.
Например, вам может понадобиться добавить оператор, чтобы изменить действия параметров InFlowSecurity и OutFlowSecurity в соответствии с реализации прикладной программы. Подробности смотрите в файле
services.xmlприкладной программы в каталоге $RAMPART_HOME/samples/basic/<каталог_примера>.Если вы используете другой сервер веб-служб, надо изменить файлы соответственно. Полностью рабочий файл XML для этого примера приведен в конце этого раздела - смотрите Пример Sample04_wss.xml. Обязательно замените существующий шаблон на измененные файлы.
- Обновите файл /opt/ /IBM/tivoli/Impact71/dsa/wsdsa/wss/conf/wscb.properties в num=1 uid.1=client pwd.1=apache
- Скопируйте или передайте по протоколу FTP файлы
client.propertiesиclient.jksиз RAMPART_HOME\samples\keys в каталог IMPACT_HOME\wslib. - Мастер создает файл JAR IMPACT_HOME/wslib/sample04.jar.
Измените этот файл JAR, включив в него
client.propertiesиclient.jks, с помощью следующей команды:
Чтобы убедиться, что файл JAR изменен, введитеIMPACT_HOME/sdk/bin/jar –uf sample04.jar IMPACT_HOME/wslib/ client.*
и посмотрите содержимое файла JAR.IMPACT_HOME\sdk\bin\jar –tf sample04.jar |grep client - Переместите
client.propertiesиclient.jksиз каталога wslib - Перезапустите Netcool.
- Запустите политику, созданную мастером политики.
- Создайте политику с помощью мастера политики обычным способом. Файл WSDL - это
Результаты
Журнал анализатора: эхо-вызов веб-службы возвратил результат:
<ns:echoResponse xmlns:ns="http://sample04.samples.rampart.apache.org"
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<ns:return>Hello from Impact 7 Server</ns:return>
</ns:echoResponseПример Sample04_wss.xml
Рабочий пример шаблона Sample04_wss.xml.
Пример
<?xml version="1.0" encoding="UTF-8"?>
<!-- *************************************************** {COPYRIGHT-TOP-RM} ***
* Лицензированные материалы - Собственность IBM
* "Restricted Materials of IBM"
* 5724-S43
*
* (C) Copyright IBM Corporation 2006, 2011. Все права защищены.
*
* US Government Users Restricted Rights - Use, duplication, or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
** новое:
******************************************************** {COPYRIGHT-END-RM} -->
<!-- Этот файл используется автоматизацией. Редактируйте его на свой собственный риск --><axisconfig name="AxisJava2.0">
<module ref="rampart"/>
<parameter name="OutflowSecurity">
<action>
<items>Timestamp Signature</items>
<user>client</user>
<signaturePropFile>client.properties</signaturePropFile>
<passwordCallbackClass>com.micromuse.common.util.WSPWCBHandler</passwordCallbackClass>
<signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
</action>
</parameter>
<parameter name="InflowSecurity">
<action>
<items>Timestamp Signature</items>
<signaturePropFile>client.properties</signaturePropFile>
</action>
</parameter>
<transportSender class="org.apache.axis2.transport.http.CommonsHTTPTransportSender" name="http">
<parameter locked="false" name="PROTOCOL">HTTP/1.1</parameter>
<parameter locked="false" name="Transfer-Encoding">chunked</parameter>
</transportSender>
<phaseOrder type="InFlow">
<phase name="Transport">
<handler class="org.apache.axis2.engine.RequestURIBasedDispatcher"
name="RequestURIBasedDispatcher">
<order phase="Transport"/>
</handler>
<handler class="org.apache.axis2.engine.SOAPActionBasedDispatcher"
name="SOAPActionBasedDispatcher">
<order phase="Transport"/>
</handler>
</phase>
<phase name="Security"/>
<phase name="PreDispatch"/>
<phase class="org.apache.axis2.engine.DispatchPhase" name="Dispatch">
<handler class="org.apache.axis2.engine.AddressingBasedDispatcher"
name="AddressingBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"
name="SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.InstanceDispatcher" name="InstanceDispatcher">
<order phase="Dispatch"/>
</handler>
</phase>
<phase name="OperationInPhase"/>
</phaseOrder>
<phaseOrder type="OutFlow">
<phase name="OperationOutPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
<phaseOrder type="InFaultFlow">
<phase name="PreDispatch"/>
<phase class="org.apache.axis2.engine.DispatchPhase" name="Dispatch">
<handler class="org.apache.axis2.engine.RequestURIBasedDispatcher"
name="RequestURIBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.SOAPActionBasedDispatcher"
name="SOAPActionBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.AddressingBasedDispatcher"
name="AddressingBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher"
name="SOAPMessageBodyBasedDispatcher">
<order phase="Dispatch"/>
</handler>
<handler class="org.apache.axis2.engine.InstanceDispatcher" name="InstanceDispatcher">
<order phase="Dispatch"/>
</handler>
</phase>
<!-- пользователь может добавить в эту область свои фазы -->
<phase name="OperationInFaultPhase"/>
</phaseOrder>
<phaseOrder type="OutFaultFlow">
<!-- пользователь может добавить в эту область свои фазы -->
<phase name="OperationOutFaultPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
</phaseOrder>
</axisconfig>