使用Apache CXF签名和加密SOAP消息

时间:2010-09-20 13:49:15

标签: java web-services cxf

我正在尝试使用Apache CXF编写“安全Hello World”Web服务;我应该注意到我对Java和WS- *的东西不熟悉。

基本上,我想要做的是一个hello-world网络服务,其中包含来自此网络服务的肥皂消息使用x.509证书进行签名和加密

我已阅读the tutorial on Apache CXF site about WS-Security但是;我想使用WS-SecurityPolicy而不是拦截器。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

这是一篇博客,其中详细介绍了如何使用Apache CXF:Adding X.509 security headers to Apache CXF SOAP calls (WS-SecurityPolicy method)

还有一个tutorial,其源代码已配置为使用WS-SecurityPolicy方法。

编辑:修复损坏的链接,添加指向教程的链接。

现在可以很好地概述CXF site上WS-SecurityPolicy的各种设置,并引用上面的链接。

简而言之(如果链接再次被吹走),WS-SecurityPolicy的配置类似于CXF wiki上描述的CXF interceptor method,除了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> 

答案 1 :(得分:0)

由于Web服务通过HTTP工作,因此您可以使用HTTPS协议保护它们。

这是一个可以帮助您指明正确方向的资源:Using JAX-WS-Based Web Services with SSL

虽然这个资源是针对JAX-WS的,但您应该会发现很多资源都会延续到Apache CXF。

干杯。