上海减量化:wss4j
来源:百度文库 编辑:中财网 时间:2024/04/28 15:52:29
Wss4j的学习----这是我第一次写东西。因为,我实在是发现了分享知识的重要性。因为现在的学习基本都是靠百度,google了。呵呵。进入正题。
简单说明:wss4j是,axis的实现WS-Wecurity安全机制的一个框架。具备知识:java和axis知识。运行环境:至少可以跑起来一个axis的程序。哪怕是一个helloworld。必须的包:wss4j.jar官方地址:http://ws.apache.org/wss4j/。工作原理:我用一张图来说明一切,你会明白的。是不是非常明白?为了方便学习,我下载的是wss4j-bin-1.5.3.zip这个版本,因为里面有自带的几个例子。我来叫你跑起这些例子便于学习。一步一步教你跑起这些例子: 1. 解压wss4j-bin-1.5.3.zip到wss4j文件夹。看到 一个比较简单的例子在samples里,复杂一点的例子在interop里。我们先来进行简单的例子。 2. 在eclipse里建个新的项目,我这里叫做“testwss4j”,建包,和类和官方文件夹相同:主要的文件说明: org.apache.axis.samples.wssec.doall.axisSec包: 是目标服务器端程序。是org.apache.axis.samples.wssec.doall包里的sec.wsdl文件生成(生成方法见axis学习文档)的。 org.apache.axis.samples.wssec.doall包: PWCallback.java文件是,headler对xml文件进行签名,加密,解密的类。 Tester.java是客户端测试类。 Client_deploy.wsdd文件是,客户端签名,加密的配置文件。3. 主要类说明 除了PWCallback.java是wss4j.jar中的应用,其他类均为axis的应用。不做过多说明。 PWCallback.java说明:41到46行的说明是指,这里是给已经加入了user或者keystore alias的soap消息加入或者密码。可以是identifier的形式也可以是直接设置密码。由于是例子,这里是最简单的给一个user加入一个最简单的密码。4. 运行例子 运行例子之前会发现项目会有很多错误,用你习惯的方式导入项目testwss4j所需要的包。包括axis的所有包和wss4j.jar。我的包的列表:如果没有错误,首先启动服务器,发布目标服务器程序。如果一切顺利 可以run as java applicationà org.apache.axis.samples.wssec.doallTester.java。会得到如下结果:如果你在PWCallback.java加入断点就会发现,根本没有调用加密程序。不过得到结果至少知道这个程序是畅通的。下面我们开始加密。没有加密的config-deploy.wsdd的配置文件中SecHttp的服务配置为:加入加密配置文件之后为:注意红色框的位置为加密的配置。说明,目标服务器端接收的soap消息必须是加密的。重启服务器,允许Tester.java就会发现报错:说明你的配置完全正确,因为请求没有加密所以报错。修改Tester.java:红色框中为修改的部分。注意client_deploy.wsdd的地址位置要用“//”分割。重启服务器,运行Tester.java就会得到刚刚的结果了。如果加入断点就会进入方法。5.复杂例子。 在interop文件夹下:ping.wsdl是服务器接口描述文件。org文件下包括服务器接口的测试类。也包括服务器接口,但是,直接在eclipse里打开会有很多错误,我因为懒得改正错误,所以用ping.wsdl从新生成了服务器端接口,在axis的学习里就有。但是生成之后就会发现一个问题,本身服务器接口的包是org.apache.ws.axis.oasis.ping,服务器接口的类在这个包下,如果用文件夹里的ping.wsdl生成的包为org.xmlsoap .Ping,所以服务器接口都在这个包下。直接放在项目里就会发现很多关于包的错误。为了和原始包保持一直的思想,修改ping.wsdl,生成包org.apache.ws.axis.oasis.ping。修改了三个地方: 第5行:xmlns:tns=http://xmlsoap.org/Ping修改为xmlns:tns=http://oasis.axis.ws.apache.org/ping第9行:targetNamespace=http://xmlsoap.org/Ping 修改为:targetNamespace="http://oasis.axis.ws.apache.org/ping"第12行: