java webservice 验证_SOAP header验证WebService接口的访问权限
webService对外提供的服务,在验证客户端访问权限方面,最笨的验证方法应该是在业务方法上面加参数了,这也是之前的做法!发现网上通行的办法是在SOAP协议头增加对用户的验证。实验完总结如下。
客户端采用cxf+spring 配置文件如下
address="/resSync/ITReceptionAdapter">
ServerPasswordCallback相当于filter,代码如下
import java.io.IOException;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.ws.security.WSPasswordCallback;
public class ServerPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
String pw = pc.getPassword();
String idf = pc.getIdentifier();
System.out.println("密码是:" + pw);
System.out.println("类型是:" + idf);
if (pw.equals("test") && idf.equals("test")) {
System.out.println("成功");
} else {
throw new SecurityException("验证失败");
}
}
}
客户端采用axis2 生成客户端代码访问
ITReceptionAdapterStub adapterStub=new ITReceptionAdapterStub();
//设置超时
adapterStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(600000L);
//设置header账号密码
ServiceClient serviceClient=adapterStub._getServiceClient();
SOAP11Factory factory=new SOAP11Factory();
OMNamespace SecurityElementNamespace = factory.createOMNamespace("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"wsse");
OMElement usernameTokenEl = factory.createOMElement("UsernameToken",SecurityElementNamespace);
OMElement usernameEl = factory.createOMElement("Username",SecurityElementNamespace);
OMElement passwordEl = factory.createOMElement("Password",SecurityElementNamespace);
OMElement actionEl = factory.createOMElement("Action",SecurityElementNamespace);
passwordEl.addAttribute(factory.createOMAttribute("Type",null,"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"));
usernameEl.setText("test");
passwordEl.setText("test");
usernameTokenEl.addChild(usernameEl);
usernameTokenEl.addChild(passwordEl);
usernameTokenEl.addChild(actionEl);
SOAPHeaderBlockImpl block = new SOAP11HeaderBlockImpl("Security",SecurityElementNamespace, factory);
block.addChild(usernameTokenEl);
serviceClient.addHeader(block);
ProcessE processE=new ProcessE();
Process process=new Process();
//process.setXmldata();
process.setXmldata(jiFangXml);
process.setName("test");
process.setPassword("test");
processE.setProcess(process);
ProcessResponseE responseE=adapterStub.process(processE);
String xml=responseE.getProcessResponse().get_return();
System.out.println(xml);
好了,这样既可做到在业务方法之外验证用户的权限,对外的业务方法里面也不会出现对权限的验证,不失为一种好办法 。
ps:网上的参考,加上自己经验,记录在此,备查
java webservice 验证_SOAP header验证WebService接口的访问权限相关推荐
- JAVA接口的访问权限_Java中访问权限-类和接口
(1)类和接口的访问权限种类一样 , 有两中public,default,它们的不同在于是否能访问不同包中的类或接口 default:只能在本包中访问 public:任何地方都可以访问,当然不同的包中 ...
- java 接口的访问权限_证明接口interface中定义的方法的访问权限为public
如题,证明Java中接口文件中定义的方法访问权限为public. 众所周知,接口中的方法默认是public abstract 类型的,它必须由子类实现之.那怎么证明呢,反射. 定义接口文件 packa ...
- java安全——类加载器+字节码校验+安全管理器与访问权限
[0]README 0.1)本文文字描述转自 core java volume 2,旨在学习 java安全 的相关知识: [1]类加载器 1)java 技术提供了以下3种确保安全的机制(mechani ...
- java面试题三十 public,private,protected,default访问权限
1 考题描述: 2 答案 BD 3解析 B. no modifer既为default也就是friendly 3.1 public,private,protected,default访问权限图 3.2证 ...
- Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离
在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...
- Spring Security登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离
在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...
- java 接口权限控制_手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!...
SpringBoot实战电商项目mall(30k+star)地址:github.com/macrozheng/- 摘要 权限控管理作为后台管理系统中必要的功能,mall项目中结合Spring Secu ...
- 动态调用Webservice 支持Soapheader身份验证(转)
封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...
- 调用WebService时加入身份验证,以拒绝未授权的访问
调用WebService时加入身份验证,以拒绝未授权的访问 分类: WebService 2010-08-19 16:22 548人阅读 评论(4) 收藏 举报 众所周知,WebService是为企业 ...
最新文章
- 《JavaScript面向对象编程指南》——1.3 分析现状
- (2)JavaScript数据类型
- Java GregorianCalendar getActualMaximum()方法与示例
- C# 读取照片的EXIF信息
- java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?
- 【转】UnityVS(Visual Studio Tools For Unity)的安装与使用
- echarts 模拟迁徙
- 析构语意学(Semantics of Destruction)
- Response.End方法
- Python练习题总结摘要
- Android recyclerview item获焦时更新UI导致列表自动滚动到获焦处
- Q萌可爱,奇瑞QQ冰淇淋给年轻人爱的大礼物
- 什么是中性滤光片?有什么作用?
- Memcached的安装及配置
- 51单片机的堆栈指针(SP)
- 机器学习-Precision(查准率)、Recall(查全率)、P-R曲线
- 深圳大学超级计算机,Intel CMP活动之“超算习堂”走进深圳大学
- 小程序上如何计算倒计时截止时间
- pmp项目管理——项目需求分析
- 64位投影机专业测试软件,软件分享 篇十四:利用投影仪提高生活质量 —— 自用软件推荐...
热门文章
- 二分查找详解——弄懂二分思想的重要性!
- C语言课后习题(68)
- PAT乙级(1014 福尔摩斯的约会)
- Flinksql读取Kafka写入Iceberg 实践亲测
- oracle rac 高并发性能_高并发业务下 JVM 涉及的垃圾回收与性能问题分析与定位...
- arcgis如何打开tif_实例|ArcGiS导出的dxf,在CASS中如何变身?
- 项目上线后,谈一下感触比较深的一点:查询优化
- 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
- 看KubeEdge携手K8S,如何管理中国高速公路上的10万边缘节点
- 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析