我正在学习Webservice安全。为此我使用CXF框架。我开发了一个测试服务,它只会使我们发送的值加倍。基于本教程
我添加了用于XML加密和签名的WS-Policy。
然后,我使用CXF将此服务的web服务客户端开发为eclipse项目。以下是我的客户端配置文件
<jaxws:client id="doubleItClient" serviceClass="com.DoubleIt" address="http://localhost:8080/myencws/services/DoubleItPort?wsdl">
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
<jaxws:properties>
<entry key="ws-security.callback-handler" value="com.ClientKeystorePasswordCallback"/>
<entry key="ws-security.encryption.properties" value="com/clientKeystore.properties"/>
<entry key="ws-security.signature.properties" value="com/clientKeystore.properties"/>
<entry key="ws-security.encryption.username" value="myservicekey"/>
</jaxws:properties>
我已经生成了所有密钥库文件,并创建了clientKeystore。属性文件,并放置在我的项目的src目录中。
但每当我运行这个客户机时,SOAP请求消息都没有加密。所以在服务器端我遇到了这样的异常
无法满足这些政策选择:{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}加密部件{http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}签名部件
下面是我的SOAP请求
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:doubleValue
xmlns:ns2="http://com/"><arg0>5</arg0></ns2:doubleValue></soap:Body></soap:Envelope>
我正在使用CXF2。7.3。我不知道怎么了。请帮帮我。
我遇到了同样的问题,经过多次实验,下面的指南每次都会有所帮助。
注:安全性。签名财产和安全。加密。属性也可以外部化,并直接用xml值中的绝对路径引用。
确保您使用的是正确的库。尝试仅包含cxf bundle,删除其他cxf依赖项如果您使用的是maven,如下所示:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.7.18</version>
</dependency>
我之前的代码也有类似的问题,缺少的是jar依赖项,当客户端从WSDL读取安全策略时,jar依赖项会执行实际的加密。
我的修复是在您的POM中添加某些maven依赖项以启用加密。检查此url:http://cxf.apache.org/docs/using-cxf-with-maven.html
另请阅读url中的“启用WS-SecurityPolicy”部分http://cxf.apache.org/docs/ws-securitypolicy.html
我希望这有帮助
我有以下Java客户端用于发出SOAP请求: 我需要修改它,将用户名和密码作为WS-security标头的一部分。我该怎么做呢? 如果有用,我还附加了我的WSDL文件:
问题内容: 我正在尝试用两个客户端实现一个系统,其中一个客户端发送一条消息,而另一个客户端将接收该消息。下图将以更直观的方式对其进行解释: 因此,客户端1将消息发送到服务器(此工作正常),服务器接收到“推送”消息并发出应由客户端2接收的“弹出”消息。这里的问题是客户端2从未收到“流行”消息。:( 这是所有代码。 SERVER.JS 客户1(aka mobile.html) 客户2(aka web.
客户端的HTTP/HTTPS请求。 进程:主进程 ClientRequest是由EventEmitter来实现Writable Stream new ClientRequest(options) 作用:发起新的HTTP/HTTPS请求 options(Object | String) - options是String时即请求URL。 options 是Object时则按以下属性请求: meth
我正在尝试使用HTTP请求/响应用Java编写一个简单的客户机-服务器应用程序。我想客户端是一个桌面程序发送(张贴)请求到服务器。该服务器是一个网页,将被托管在Apache Tomcat服务器上。服务器必须能够读取信息并将其显示在浏览器上,并且必须能够用状态代码200响应客户端。我正在使用eclipse和Apache tomcat服务器。到目前为止,我已经尝试了各种资源,但我所能找到的是一个可以从
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
httplib 库主要用来模拟客户端发送 HTTP 请求,类似于 Curl 工具,支持 JQuery 类似的链式操作。使用起来相当的方便;通过如下方式进行安装: go get github.com/astaxie/beego/httplib 如何使用 首先导入包 import ( "github.com/astaxie/beego/httplib" ) 然后初始化请求方法,返回对象 r