Axis2+SOAP Header简单的验证方法实践
来源:互联网 发布:国外的移动网络制式 编辑:程序博客网 时间:2024/06/10 22:55
服务端
服务端就要在每个方法里面加上解析SOAP Header,并进行安全校验的代码即可,记住,是每一个方法里面都加,是everyone!
虽然是每一都需要添加校验代码,但庆幸的是,校验过程都是一致的,实现一个通用的方法,每次调用就行。
这里给出一个校验方法的代码:
import java.util.Iterator; import org.apache.axiom.om.OMElement; import org.apache.axis2.AxisFault; import org.apache.axis2.context.MessageContext; public class LoginCheck { /** * 〈一句话功能简述〉 〈功能详细描述〉 * * @throws AxisFault */ public static void checkUserPwd() throws AxisFault { MessageContext msgContext = MessageContext.getCurrentMessageContext(); // 获取Head Iterator list = (Iterator) msgContext.getEnvelope().getHeader() .getFirstElement().getChildren(); String Username = ""; String Password = ""; while (list.hasNext()) { OMElement element = (OMElement) list.next(); if (element.getLocalName().equals("Username")) { Username = element.getText(); } if (element.getLocalName().equals("Password")) { Password = element.getText(); } } if (!Username.equals("toone") || !Password.equals("111111")) { throw new AxisFault( " Authentication Fail! Check username/password "); } } }
之后在服务中的每个方法里面加上一句代码,只要一句就行:
//当客户端调用该方法时,在此处先进行用户名和密码校验,如果校验通过则继续后续逻辑处理,如果不通过则抛出异常。 LoginCheck.checkUserPwd();
服务端就这么简单,下面再说说客户端。
客户端
客户端也不难,就是往SOAPHeader中添加相应字段就行,网上很多代码可以参考。
这里是我用到的代码:
import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; public class HeaderOMElement { /** * 〈一句话功能简述〉 * 〈功能详细描述〉 * @return */ public static OMElement createHeaderOMElement(){ OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace SecurityElementNamespace = factory.createOMNamespace("http://handler.com","wsse"); OMElement authenticationOM = factory.createOMElement("Authentication", SecurityElementNamespace); OMElement usernameOM = factory.createOMElement("Username", SecurityElementNamespace); OMElement passwordOM = factory.createOMElement("Password", SecurityElementNamespace); usernameOM.setText("toone"); passwordOM.setText("111111"); authenticationOM.addChild(usernameOM); authenticationOM.addChild(passwordOM); return authenticationOM; } }
然后在需要调用服务的时候,将创建得到的OMElement附加上去就行了。
这里也给出代码参考:
RPCServiceClient client = new RPCServiceClient(); // 向Soap Header中添加校验信息 client.addHeader(HeaderOMElement.createHeaderOMElement());
其他调用的Web服务的代码参考我上一篇文章就行了,不在重复写了。
0 0
- Axis2+SOAP Header简单的验证方法实践
- Axis2+SOAP Header简单的验证方法实践
- Axis2+SOAP Header验证方法实践(基于SOAP的Web安全调用机制)
- 基于SOAP的Web安全调用机制-----Axis2+SOAP Header验证方法实践【已经试验】
- XFire中通过Soap Header 实现简单的验证
- Axis2访问验证(SOAP方式)
- php soap header请求验证
- 基于Xfire SOAP Header的WebService安全验证教程
- 基于Xfire SOAP Header的WebService安全验证教程
- 实现Webservice 中Soap Header 的用户验证
- ASP调用带验证的XFire(soap Header)
- 基于Xfire SOAP Header的WebService安全验证教程
- java2wsdl+Axis2+hibernate开发webservice学习(3) - 定制soap header
- SOAP Header:扩展SOAP能力的途径
- Delphi的SOAP Header问题
- axis2 soap
- axis2 soap
- Develop Web Service With Axis2 #7 - Add Custom Soap Header in Response Soap Message
- 学习hibernate_03_实体常用的hibernate注解
- STL自我强化
- 2017上半年的目标
- Scapy畸形报文攻击
- JavaScript学习笔记-第二章
- Axis2+SOAP Header简单的验证方法实践
- 【Android开发】从Activity传递信息给Fragment
- Java的环境变量
- 连续第一百零一十二天
- 哈希查找算法(php)
- 支付宝使用的开源组件总结
- Java NIO Selector详解
- HDU5389:Zero Escape(dp & 类背包)
- Android setTextSize