- 浏览: 1507982 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
转自:http://hi.baidu.com/zhaopengletter/blog/item/44a3bdfa9eda29244e4aea48.html
4.3 生成 .aar 服务包
下边就可以根据一个服务器类 SimpleService 一个 service.xml 打包生成一个 wsc.aar 做为服务器端的程序 。 首先将这个 SimpleService 类打包 , 然后把 service.xml 放在打包后的 MATE-INFO 下边
这样服务器端程序 wsc.aar 就完成了 。 下边把 wsc.aar copy 到 D:\program\Tomcat6.0\webapps\axis2\WEB-INF\services 目录下 ( 这里是以我的机器做为例子的 )
然后重启 tomcat 输入 http://127.0.0.1:8080/axis2/services/listServices
就可以看到我们部署到服务器上的服务了。
4.4 编写模拟第三方测试程序
下面我写一个模拟第三方的程序调用 webservice 的一个例子
在包 com.neusoft.wss4j.rempart.demo.client 中的 Client
它的内容如下 :
package com.neusoft.wss4j.rempart.demo.client;
import java.io.Reader;
import java.io.StringReader;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.ConfigurationContextFactory;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class Client
{
public static void main(String[] args) throws Exception
{
ConfigurationContext ctx = ConfigurationContextFactory
.createConfigurationContextFromFileSystem(
"D:/eclipse3.2/workspace/wsc/WebRoot/WEB-INF", "D:/eclipse3.2/workspace/wsc/WebRoot/WEB-INF/conf/axis2.xml" );
ServiceClient client = new ServiceClient(ctx, null);
Options options = new Options();
options.setAction(" urn:echo ");
options.setTo(new EndpointReference(
" http://localhost:8080/wsc/services/wsc "));
client.setOptions(options);
OMElement response = client.sendReceive(getPayload(" (*^__^*) 嘻嘻…… " ));
OMElement element = response.getFirstElement();
// 把返回的 OMElement 对象转换为 xml 数据
SAXBuilder builder = new SAXBuilder();
Reader in = new StringReader(element.toString());
Document doc = null;
try
{
doc = builder.build(in);
Element Element = doc.getRootElement();
String aa = Element.getTextTrim();
System.out.println(aa);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
private static OMElement getPayload(String value)
{
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace ns = factory.createOMNamespace(
" http://services.demo.rempart.wss4j.neusoft.com/xsd ","ns1");
OMElement elem = factory.createOMElement(" echo ", ns);
OMElement childElem = factory.createOMElement("param0", null);
childElem.setText(value);
elem.addChild(childElem);
return elem;
}
}
这个测试类就不多说了, 粉色 的部分是需要注意的地方。
还有个客户端的 axis2.xml 需要说明一下
他的主要内容如下只要把这部分粘贴到原来的axis2.xml即可 :
<module ref="rampart" />
<parameter name="OutflowSecurity">
<action>
<items>Timestamp Signature</items>
<user>client</user>
<signaturePropFile>keys/client.properties</signaturePropFile>
<passwordCallbackClass>com.neusoft.wss4j.rempart.demo.services.PWCBHandler</passwordCallbackClass>
<signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
</action>
</parameter>
<parameter name="InflowSecurity">
<action>
<items>Timestamp Signature</items>
<signaturePropFile>keys/client.properties</signaturePropFile>
</action>
</parameter>
注意一下 红色 的部分他是当客户端向服务器端发送数据时,首先访问 com.neusoft.wss4j.rempart.demo.services.PWCBHandler 这个类,得到访问权限和加密信息的文件密码,然后通过加密信息的文件密码和 keys/client.properties 文件找到加密需要的文件 client.jks 把信息加密发送给服务器端, 粉色 部分是通过 keys/client.properties 文件找到解密需要的文件 client.jks 来解密服务器端返回的加密信息。
Keys 文件下的 client.properties 内容如下:
org.apache.ws.security.crypto.provider = org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type = jks
org.apache.ws.security.crypto.merlin.keystore.password = apache
org.apache.ws.security.crypto.merlin.file = keys/client.jks
五、总 结
整理一下思路
1 客户端发送消息给服务器端 : 如果客户端想请求服务器端首先读取客户端配置文件 axis2.xml 文件,得到访问的用户 <user>client</user> 然后找到 com.neusoft.wss4j.rempart.demo.services.PWCBHandler 类,看用户是否有访问服务的权限,如果有则把 client.jks 文件的密码给用户 client , client 通过密码在 axis2.xml 文件中找到 <signaturePropFile>keys/client.properties</signaturePropFile> 找到 client.properties 文件,在 client.properties 文件中找到 client.jks 文件,使用该文件的 client 私钥 从而实现把传送的信息加密,然后把加密的信息发送到服务器端。
2 服务器端接收客户端发送来的消息 : 服务器端接收到消息,然后读取 service.xml 文件找到 <signaturePropFile>keys/service.properties</signaturePropFile> 从而找到 service.properties 文件,通过该文件找到 service.jks 文件使用该文件的 client 的公钥
解密客户端传送来的信息。
3 服务器端返回信息给客户端 : 获得客户端传送过来的明文信息后,从 service.xml 文件
得到加密的用户 <user>service</user> 通过
<passwordCallbackClass>
com.neusoft.wss4j.rempart.demo.services.PWCBHandler
</passwordCallbackClass>
找到验证类 PWCBHandler 得到加密需要的 service.jks 的加密密码 apache
通过 <signaturePropFile>
keys/service.properties
</signaturePropFile> 找到 service.properties 文件,通过该文件找到 service.jks 文件,通过该文件的 service 的私钥 把需要发送给客户端的信息加密。然后发送给客户端
4 客户端接收服务器端返回的消息 : 客户端端接收到消息,然后读取 axis2.xml 文件找到 <signaturePropFile>keys/service.properties</signaturePropFile> 从而找到 client.properties 文件,通过该文件找到 client.jks 文件使用该文件的 service 的公钥
解密服务器端返回来的信息。
发表评论
-
客户端用https连接服务器的一点心得
2016-05-11 17:13 502转自:http://dannyyuan.blog.51ct ... -
解决PKIX:unable to find valid certification path to requested target 的问题
2016-05-11 17:11 887转自:http://blog.csdn.net/ ... -
Spring boot下自定义spring oauth2的授权页面
2016-05-06 17:48 22200自定义WhitelabelApprovalEndpoint ... -
xStream开发HTTP的XML内容
2013-07-03 09:58 10261、编写自定义XPPDriver代码: package ... -
AXIS2 开发示例
2013-06-28 17:10 1015实体类: package com.mport.entity ... -
HttpURLConnection or URLConnection post xml content to web server
2013-05-31 01:56 2026客户端示例1: package client; ... -
Axis2 体系结构
2012-06-19 12:34 967前言 结构都是它本身所能产生效率的结果。任何一个成功 ... -
Axis 1.4 基于wss4j UsernameToken 的安全验证
2011-12-30 17:24 2432利用以下的wsdl文件生成客户端及服务端代码: < ... -
wss4j和axis2实现WS-Security(1)
2011-12-29 11:31 1157转自:http://hi.baidu.com/zhaopeng ... -
Using WS-Security with Axis (Java) v2006
2011-12-23 11:24 1520转自:http://www.arcwebservices.co ... -
[Java] Testing SOAP Headers with a Simple Axis Handler
2011-12-23 11:02 1117转自:http://weblogs.asp.net/jdanf ... -
Axis 1.4 将WSDL文件逆向后String数组只变成String
2011-12-22 08:26 1959这些天在对一个项目扩展功能时使用Axis 1. ... -
实现Axis web service 的数字证书认证(CLIENT-CERT)
2011-12-09 12:28 3709本文参考自:J2EE Web服务开发系列之十二: 实现安全的 ... -
实现Axis web service 的基本方式认证(BASIC)
2011-12-09 10:41 2159本文参考自:J2EE Web服务开发系列之十二: 实现安全的A ... -
生成SOAP消息示例
2011-09-27 11:36 11231调用 web service 时生成soap消息的区别, ... -
Axis 1.4 上传二进制文件(base64Binary)
2011-04-22 16:32 2016服务端代码: package samples.userg ... -
Axis 1.4 WSDL2Java、Java2WSDL的使用
2011-04-21 16:52 3401d:>java -classpath % ... -
在axis1.4中传递复杂类型数组参数(ArrayMapping)
2011-04-21 11:50 3679Axis1.4环境配置: 配置一些工具在命 ... -
axis2 学习(rpc)
2011-04-15 16:03 2112刚开始学习时,可不必考虑某些包的功能。我当前是把所有的包都导进 ... -
xfire 学习
2011-04-14 13:45 789我
相关推荐
内含: ISNetworksProvider.jar tsik.jar ws-security.jar 和wss4j的所有包
CXF使用WSS4J实现WS-Security规范,本例的配置是Timestamp Signature Encrypt,具体使用可以参考我的博客http://blog.csdn.net/wangchsh2008/article/details/6708270
纯java调用ws-security+CXF实现的webservice安全接口
ws-security 的三个jar包 和wss4j的所有jar包
CXF WS-Security WSS4J 例子 可以运行,运行的时候只要运行client就行,重点是运行完之后要关掉第一个控制台,才能看到结果。一定要记得改一下client的路径名
它们每个都包含带有自己端点的WSS4J和XWSS变体。 要找出每个端点部署的URI,请查看下面的相同自述文件或文档页面。 还有一个客户端,准备了一些上下文文件以对其进行设置以调用任何端点。 包括几个
用于实现WS-Security的实现包,在Apache网站也可以下载
Java 的类库用来对 SOAP 消息进行签名和校验,使用 Apache Axis 和 Apache XML-Security 项目。
android client ksoap2 token apache cxf wss4j authentication
wss4j-1.5.1.jar wss4j-1.5.1.jar
XFire中实现WS-Security完整编 Spring+xFire+wss4j配置Helloworld实例 完整说明文档 Myeclipse项目 服务端工程 客户端工程
wss4j 1.5 jar wss4j-1.5 wss4j-1.5.jar
wss4j-1.5.2.jar wss4j-1.5.2.jar
wss4j-1.6.4.jar
wss4j安全认证jar,给webservice使用的。
xml-security是xml安全实现的包,WSS4J依赖这个包
在官网找到的wss4j用到的jar包。亲测可用的。
具有WSS4J安全性的SOAP Web服务项目,还创建了一个客户端以使用它 - Spring boot 2.0.1.RELEASE - Java 1.8 - jaxb2 - Security - WSS4J 定义xs:WS模式 src /主/资源/ beer.xsd 必要的java类由maven插件自行生成...
自制CHM版的API文档,带索引。 注:如果各位下载后打开或无法显示页面,请在CHM文件右键—属性—解除锁定即可。
Spring集成CXF实例(包含WSS4J安全认证)