我也在尝试使用Apache CXF编写“安全Hello World” Web服务.我应该注意,我是Java和WS- *的新手.
基本上,我想做的是一个hello-world Web服务,其中包含使用x.509证书签名和加密的往返于此Web服务的肥皂消息.
我已经读过the tutorial on Apache CXF site about WS-Security,但是;我想使用WS-SecurityPolicy代替Interceptors.
谁能指出我正确的方向?
解决方法:
这是一个有关使用Apache CXF的详细信息的博客:Adding X.509 security headers to Apache CXF SOAP calls (WS-SecurityPolicy method)
还有一个tutorial,其源代码配置为使用WS-SecurityPolicy方法.
编辑:修复断开的链接,已将链接添加到教程.
现在,可以很好地概述CXF site上WS-SecurityPolicy的各种设置,并且它引用了上面的链接.
简而言之(如果链接再次消失),除了对cxf.xml和cxf-servlet.xml进行了一些更改之外,WS-SecurityPolicy的配置类似于CXF Wiki上描述的CXF interceptor method.
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>