Axis2 Rampart实现用户名_第1页
Axis2 Rampart实现用户名_第2页
Axis2 Rampart实现用户名_第3页
Axis2 Rampart实现用户名_第4页
Axis2 Rampart实现用户名_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Axis2+Rampart实现用户名&密码级别的web服务安全性验证机制介绍安全性验证的思路为了实现web服务的安全性验证与web服务本身的分离,我们决定采用rampart模块,利用rampart对web服务的安全性进行保证。图解验证过程加载并传递用户名和密码读取XML文件客户端web服务策略客户端客户端Rampart模块1、客户端发送请求SOAP消息2、服务端验证读取XML文件服务器端web服务策略服务器端Rampart模块通过验证,返回处理结果没有通过验证,直接返回出错信息验证结果Web服务Axis2通过验证处理结果搭建安全性验证框架Rampart的添加本文假定已经装好了Ant工具

2、,本文中%XXX_Home%是指该程序的根目录所在的目录。1、 首先从Rampart的官网上下载最新版本的rampart,本文使用到的是rampart1.5.1。将得到的压缩文件解压到本地的文件系统。本文解压到D:rampart-1.5.12、 将%rampart_home% lib目录下的jar文件copy到%Axis2_Home%lib目录下,将%rampart_home%modules目录下的所有文件copy到%Axis2_Home%repositorymodules目录下。如果已经装好了Ant工具,并在环境变量中设定了Axis2_home,这是可以选择以在命令行的方式将rampart添

3、加到Axis2中。如图所示:首先转到%rampart_home% samples目录,然后运行Ant命令即可。3、利用Ant工具将添加了Rampart的Axis2打包并将axis2.war文件添加到tomcat中。a、 进入到Axis2的安装目录,转到webapp子目录,因为那里有Ant工具要用到的build.xml文件。b、 在命令还输入 ant 然后回车,如下图所示:.C、 在%Axis2_Home%dist目录下找到生成的war文件,将其复制到tomcat的webapp目录下,启动tomcat(如果已经启动,则重启),这样带有WS-security验证功能的axis2就部署成功了。操作截

4、图如下:生成的axis2.war 文件重启tomcat之后WS-security 的XML文件的编写ws-security 支持多种模式的web服务安全性验证,包括数字签名,消息加密等等。根据我们的安全需要,我们只选择了其中的用户名和密码这一项对我们的web服务进行安全保护。根据rampart的实现web服务安全性的相关配置要求,我们需要编写服务器端和客户端的ws-security的策略文件,他们是XML格式的。1、根据我们的安全性需要,服务器端的xml文件的内容如下:<module ref="rampart" /><wsp:Policy wsu:Id=&

5、quot;UsernameToken-23817301"xmlns:wsu="/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"xmlns:wsp="/ws/2004/09/policy"><wsp:ExactlyOne><wsp:All><sp:TransportBindingxmlns:sp="http:/schemas.xmlsoa

6、/ws/2005/07/securitypolicy"><wsp:Policy><sp:AlgorithmSuite><wsp:Policy><sp:Basic256 /></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Lax /></wsp:Policy></sp:Layout><sp:IncludeTimestamp /></wsp:Policy

7、></sp:TransportBinding><sp:SignedSupportingTokensxmlns:sp="/ws/2005/07/securitypolicy"><wsp:Policy><sp:UsernameTokensp:IncludeToken="/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" /></wsp:

8、Policy></sp:SignedSupportingTokens><ramp:RampartConfig xmlns:ramp="/rampart/policy"><ramp:passwordCallbackClass>com.iss.test.callback.PWCBHandler</ramp:passwordCallbackClass></ramp:RampartConfig></wsp:All></wsp:ExactlyOne><

9、/wsp:Policy>其中红颜色的是指明实现ws-security所用到的验证模块,也就是rampart。蓝颜色的部分是规定相关的ws-security的策略,本文中用到的是用户名和密码,还有时间戳timestamp。绿色的部分是对rampart进行相关的配置,包括加密解密的密钥位置,密钥回调处理类等等,本文需要指定的是passwordCallbackClass属性,也就是对用户名和密码进行验证的回调处理类。2、根据我们的安全性需要,客户端的xml文件,我们命名为policy.xml,内容如下:<?xml version="1.0" encoding=&quo

10、t;UTF-8"?><wsp:Policy wsu:Id="UsernameToken-23817301"xmlns:wsu="/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"xmlns:wsp="/ws/2004/09/policy"><wsp:ExactlyOne><wsp:All><sp:TransportB

11、indingxmlns:sp="/ws/2005/07/securitypolicy"><wsp:Policy><!-<sp:TransportToken><wsp:Policy><sp:HttpsToken RequireClientCertificate="false" /></wsp:Policy></sp:TransportToken>-><sp:AlgorithmSuite><wsp:Po

12、licy><sp:Basic256 /></wsp:Policy></sp:AlgorithmSuite><sp:Layout><wsp:Policy><sp:Lax /></wsp:Policy></sp:Layout><sp:IncludeTimestamp /></wsp:Policy></sp:TransportBinding><sp:SignedSupportingTokensxmlns:sp="http:/schemas.xmls

13、/ws/2005/07/securitypolicy"><wsp:Policy><sp:UsernameTokensp:IncludeToken="/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" /></wsp:Policy></sp:SignedSupportingTokens></wsp:All></wsp:ExactlyOne></wsp:Po

14、licy>文件中的内容与服务端xml片段的对应内容基本相同,不在赘述。如何在服务器端添加rampart1、 将上文中的XML片段添加到服务端的service.xml文件中,一般添加到需要进行安全性验证的那个service的</service>标签之前。2、 将<ramp:passwordCallbackClass>com.iss.test.callback.PWCBHandler</ramp:passwordCallbackClass>中的类改为你所编写的回调处理类,需要写全类名。3、 回调处理函数的编写,该代码片段如下:1、 public void

15、handle(Callback callbacks)2、 throws IOException, UnsupportedCallbackException 3、 for (int i = 0; i < callbacks.length; i+) 4、 WSPasswordCallback pwcb = (WSPasswordCallback)callbacksi;5、 String id = pwcb.getIdentifier();6、 if (pwcb.getUsage() = WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) 7、8、 / use

16、d when plain-text password in message9、 if (!("mike".equals(id) &&"miketest".equals(pwcb.getPassword() 10、 throw new UnsupportedCallbackException(callbacksi, "check failed");11、 12、 13、 14、 当然,你也可以根据自己的需要改写上面的函数。如何在客户端添加Rampart1、 将rampart的jar文件、mar文件以及policy.xm文

17、件添加到客户端项目中。按照下图所示的目录结构添加:2、 客户端利用rampart模块自动的添加时间戳,向soap消息中header中添加用户名和密码。关键代码片段如下:A、ConfigurationContext context = ConfigurationContextFactory .createConfigurationContextFromFileSystem(properties.getProperty(axis2Context);该段代码的作用是获取axis2的配置上下文,其中的axis2Context指的是上图中repository的绝对路径。B、Someservice ser

18、vice = new Someservice(context);该段代码的作用是利用上面得到的配置上下文获得一个web服务的存根对象。C、ServiceClient client = service._getServiceClient();Options options = client.getOptions();options.setProperty(RampartMessageData.KEY_RAMPART_POLICY,loadPolicy("policy.xml");options.setUserName("mike");options.set

19、Password("miketest");client.engageModule("rampart");该段代码中红色的部分是加载ws-security策略,绿色的部分是设置用户名和密码,蓝色的部分是加载rampart模块。经过以上的步骤,你就可以像未添加rampart一样去调用web服务了。验证web服务安全性要求TCP/IP监视器的配置1、 在myeclipse中依次选择window->show view->other->tcp/ip monitor,调出tcp/ip监视器。2、 点击中箭头所指的三角形,选择properties。会

20、给出如下界面:点击add添加监视的端口。其中的local monitoring port 填写一个不常用的端口。hostname填上web服务所在的主机的IP,本文是本地发布的所以是localhost。Port填写访问web服务时的端口号。其他保持默认,点击ok完成配置。回到上层界面时,点击start启动监视。3、 更改客户端的访问端口,代码如下:B、Someservice service = new Someservice(context,webserviceUrl);其中webserviceUrl中的端口需要改成自己填写的1235,这样就可以实现对客户端和服务器端的发送的soap消息的同时

21、监控。监控时,将报文的格式改成XML格式的。SOAP消息的监控1、 没有采用安全性验证,客户端和服务器端的SOAP报文。客户端请求报文:<?xml version="1.0" encoding="/soap/envelope/" standalone="no"?><soapenv:Envelope xmlns:soapenv="/soap/envelope/"><soapenv:Body

22、><ns1:ToUpperRequest xmlns:ns1="<in>Jelly</in></ns1:ToUpperRequest></soapenv:Body></soapenv:Envelope>服务端响应报文:<?xml version="1.0" encoding="/soap/envelope/" standalone="no"?><soapenv:Envelope xmln

23、s:soapenv="/soap/envelope/"><soapenv:Body><ns1:ToUpperResponse xmlns:ns1="</soapenv:Body></soapenv:Envelope>实现了webservice 安全性验证的客户端和服务器端报文。客户端请求报文:<?xml version="1.0" encoding="/soap/envelope/&

24、quot; standalone="no"?><soapenv:Envelope xmlns:soapenv="/soap/envelope/"><soapenv:Header><wsse:Security xmlns:wsse="/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="

25、1"><wsu:Timestamp xmlns:wsu="/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1"><wsu:Created>2011-04-06T08:11:07.977Z</wsu:Created><wsu:Expires>2011-04-06T08:16:07.977Z</wsu:Expires></ws

26、u:Timestamp><wsse:UsernameToken xmlns:wsu="/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-2"><wsse:Username>mike</wsse:Username><wsse:Password Type="/wss/2004/01/oasis-

27、200401-wss-username-token-profile-1.0#PasswordText">miketest</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><ns1:ToUpperRequest xmlns:ns1="<in>Jelly</in></ns1:ToUpperRequest></soapenv:Body></soapenv:Envelope>服务端响应报文:<?xml version="1.0" encoding="/soap/envelop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论