使用Spring在客户端签署SOAP请求

时间:2012-02-14 17:03:14

标签: java client-side spring-ws sign

我已经阅读了关于Securing your Web services with Spring-WS的Spring文档,但它看起来好像这篇文章只是关于服务器端而不是客户端。实际上,对于Wss4jSecurityInterceptor服务器端,它工作正常,但我需要向外部Web服务签署请求。

所以,第一个问题。我是对的,Spring Web Services文档的第7章只适用于服务器端吗?

二。使用Spring以类似(简单,优雅)的方式向服务器端的SOAP请求添加安全性(如已签名的头文件),以及如何在服务器端完成它?

我找到了这个question,但看起来签名是使用Apache CXF完成的,而article签名是以自制的方式完成的。

提前致谢。

1 个答案:

答案 0 :(得分:2)

好吧,我担心我会回答自己的问题:

第一个。 Spring Web Services文档的第7章涉及双方,客户端和服务器。

第二个:根据fisrt问题的答案, YES ,如Spring Web Services文档第7章所述。

我的错误是我以这种方式宣布拦截器:

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

这个拦截器只会影响服务器端的Web服务。对于客户来说,应该以这种方式完成:

<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>