Подписывайте и шифруйте сообщения SOAP с помощью Apache CXF

Я пытаюсь написать веб-службу «Secure Hello World», используя также Apache CXF; Я должен отметить, что я новичок в Java и WS-*.

По сути, то, что я хочу сделать, это веб-служба приветствия с мыльными сообщениями в эту веб-службу и из нее, подписанными и зашифрованными с использованием сертификата(ов) x.509.

Я уже прочитал руководство по WS-Security на сайте Apache CXF, но; Я хочу использовать WS-SecurityPolicy вместо Interceptors.

Может кто-то указать мне верное направление?


person Cihan Keser    schedule 20.09.2010    source источник


Ответы (2)


Вот блог с подробным описанием использования Apache CXF: Добавление заголовков безопасности X.509 в Вызовы Apache CXF SOAP (метод WS-SecurityPolicy)

Существует также руководство с исходным кодом, настроенным для использования метода WS-SecurityPolicy. .

РЕДАКТИРОВАТЬ: исправлена ​​неработающая ссылка, добавлена ​​ссылка на учебник.

Теперь есть хороший обзор различных настроек WS-SecurityPolicy на сайте CXF, и ссылается на ссылку выше.

В двух словах (на случай, если ссылки снова слетят), WS-SecurityPolicy настраивается аналогично метод перехватчика CXF, описанный в вики CXF, за исключением нескольких изменений в cxf.xml и cxf-servlet.xml:

cxf.xml

   <jaxws:client name="{http://myport" createdFromAPI="true">
            <!-- You will need to add the corresponding values to a properties file -->
            <jaxws:properties>
                <entry key="ws-security.callback-handler" value="client.ClientKeystorePasswordCallback"/>        
                <entry key="ws-security.encryption.properties" value=keystore.properties"/>
                <entry key="ws-security.signature.properties" value="keystore.properties"/>
                <entry key="ws-security.encryption.username" value="myservicekey"/>
            </jaxws:properties>

cxf-servlet.xml

  <jaxws:properties>
            <entry key="ws-security.callback-handler">
                <ref bean="myPasswordCallback"/>
            </entry>
            <entry key="ws-security.encryption.properties" value="serviceKeystore.properties"/>
            <entry key="ws-security.signature.properties" value="serviceKeystore.properties"/>
            <entry key="ws-security.encryption.username" value="useReqSigCert"/>
        </jaxws:properties> 
person michaelok    schedule 06.02.2012
comment
К сожалению, предоставленная ссылка больше не работает, поэтому этот ответ бесполезен. - person LdSe; 11.03.2014
comment
Очевидно, они внесли некоторые изменения на сайт JRoller, поэтому URL-адрес изменился. Я нашел исходный документ и при этом заметил, что они даже включили больше документации по этому вопросу на сайте Apache CXF и включили ссылку на учебник, на который я ссылался выше. - person michaelok; 12.03.2014

Поскольку веб-службы работают по протоколу HTTP, вы можете защитить их с помощью протокола HTTPS.

Вот ресурс, который может указать вам правильное направление: Использование веб-служб на основе JAX-WS с SSL

Хотя этот ресурс предназначен для JAX-WS, вы должны обнаружить, что большая его часть будет перенесена в Apache CXF.

Ваше здоровье.

person cudiaco    schedule 25.09.2010