Подпишите SOAP-запрос на стороне клиента с помощью Spring - PullRequest
2 голосов
/ 14 февраля 2012

Я прочитал документ Spring относительно Защита ваших веб-сервисов с помощью Spring-WS , но мне кажется, что статья касается только серверной, а не клиентской стороны. Действительно, он работает нормально на стороне сервера с Wss4jSecurityInterceptor, но мне нужно подписать запрос к внешнему веб-сервису.

Итак, первый вопрос. Я прав, и глава 7 документации Spring Web Services относится только к серверной части?

Во-вторых. Можно добавить безопасность, как подписанные заголовки, к SOAP-запросам на стороне клиента с помощью Spring способом, аналогичным (простому и элегантному) тому, как это делается на стороне сервера?

Я нашел этот вопрос , но похоже, что подписание выполняется с помощью Apache CXF и этой статьи , где подписание выполняется в домашних условиях.

Заранее спасибо.

1 Ответ

2 голосов
/ 15 февраля 2012

Что ж, боюсь, я собираюсь ответить на свои вопросы:

Первый : НЕТ .Глава 7 документации Spring Web Services посвящена обеим сторонам, клиенту и серверу.

Второй : в соответствии с первым вопросом, ДА , так какописано в главе 7 документации Spring Web Services.

Моя ошибка заключалась в том, что я объявлял перехватчик следующим образом:

<sws:interceptors>
    <ref bean="wsSecurityInterceptor" />
</sws:interceptors>

, и эти перехватчики влияют только на серверные веб-службы.Для клиентов это должно быть сделано следующим образом:

<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
    <property name="marshaller" ref="marshaller" />
    <property name="unmarshaller" ref="marshaller" />
    <property name="defaultUri"
        value="http://localhost:8080/ws-demo/myws" />
    <property name="interceptors">
        <list>
            <ref bean="wsSecurityInterceptor" />
        </list>
    </property>
</bean>
...