我正在尝试使用Apache CXF编写“安全Hello World”Web服务;我应该注意到我对Java和WS- *的东西不熟悉。
基本上,我想要做的是一个hello-world网络服务,其中包含来自此网络服务的肥皂消息使用x.509证书进行签名和加密。
我已阅读the tutorial on Apache CXF site about WS-Security但是;我想使用WS-SecurityPolicy而不是拦截器。
有人能指出我正确的方向吗?
答案 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。
干杯。