webservice使用拦截器进行权限验证
发布时间:2020-12-16 23:13:49 所属栏目:安全 来源:网络整理
导读:?我们知道webservice是实现两个系统之间的交互,服务器在接受客户端传来的请求时,必然需要去验证其是否具有权限操作。 ?通常呢,我们是把验证信息放在soapmessage的头信息中。 ?首先说客户端: ?第一步:创建拦截器 ??????????????? public class Intercept
?我们知道webservice是实现两个系统之间的交互,服务器在接受客户端传来的请求时,必然需要去验证其是否具有权限操作。 ?通常呢,我们是把验证信息放在soapmessage的头信息中。 ?首先说客户端: ?第一步:创建拦截器 ??????????????? public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{ private String name; private String password; public IntercepterTest(String name,String password) { super(Phase.PREPARE_SEND); this.name = name; this.password = password; } @Override public void handleMessage(SoapMessage message) throws Fault { //自己创建一个头信息 Document document = DOMUtils.createDocument(); Element element1 = document.createElement("userinfo"); Element element2 = document.createElement("name"); Element element3 = document.createElement("password"); element2.setTextContent(name); element3.setTextContent(password); element1.appendChild(element3); element1.appendChild(element2); Header header = new Header(new QName("tt"),element1); //将自己创建的头信息添加到message中 message.getHeaders().add(header); } } ?? 其中其构造方法中的阶段是,准备发送之前将验证信息封装在soapmessage中; ?? 在客户端看来,将该拦截器添加到out的拦截器中; ?? IntercepterTest it = new IntercepterTest("admin","123"); //=====================================添加拦截器 bean.getInInterceptors().add(new LoggingInInterceptor()); bean.getOutInterceptors().add(new LoggingOutInterceptor()); bean.getOutInterceptors().add(it); ?? 这样就算完成客户端,请求权限的添加操作; 接着再来看服务器端,在服务器端,我们需要在调用方法之前拦截信息并解析验证其是否具有权限; ??? 第一步:也是创建拦截器 ??? public class IntercepterTest extends AbstractPhaseInterceptor<SoapMessage>{ public IntercepterTest() { super(Phase.PRE_INVOKE); } @Override public void handleMessage(SoapMessage message) throws Fault { //取出头信息,并将其转化为w3c Header header = message.getHeaders().get(0); Element element = (Element) header.getObject(); String name = element.getElementsByTagName("name").item(0).getTextContent(); String password = element.getElementsByTagName("password").item(0).getTextContent(); System.out.println(name+"==="+password); } } ??? 其次,我们将添加到in的拦截器中; ? //==========================================添加拦截器 bean.getInInterceptors().add(new LoggingInInterceptor()); bean.getOutInterceptors().add(new LoggingOutInterceptor()); bean.getInInterceptors().add(new IntercepterTest());?? 在得到用户名和密码时,我们就可以进行权限验证了,如果没有权限让其抛个异常处理; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- bash – 远程启动后台启动作业的pid
- angularjs – 未定义Angularfire’Firebase’
- Vim(文本编辑器) – 是否可以调整光标闪烁率?
- Unable to use libpcre (libpcre check failed)
- angularjs – 为什么ng-include动态加载模板的内容不能通过
- angularjs – angular ng-class if-else表达式
- 通过exec对find的输出进行Bash变量替换
- 带有bootstrap.js的angular.dart组件因阴影dom而失败
- 代码动态调用webservice的类
- 使用Loadrunner 调用Webservice接口测试优化总结