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接口的访问权限相关推荐

  1. JAVA接口的访问权限_Java中访问权限-类和接口

    (1)类和接口的访问权限种类一样 , 有两中public,default,它们的不同在于是否能访问不同包中的类或接口 default:只能在本包中访问 public:任何地方都可以访问,当然不同的包中 ...

  2. java 接口的访问权限_证明接口interface中定义的方法的访问权限为public

    如题,证明Java中接口文件中定义的方法访问权限为public. 众所周知,接口中的方法默认是public abstract 类型的,它必须由子类实现之.那怎么证明呢,反射. 定义接口文件 packa ...

  3. java安全——类加载器+字节码校验+安全管理器与访问权限

    [0]README 0.1)本文文字描述转自 core java volume 2,旨在学习 java安全 的相关知识: [1]类加载器 1)java 技术提供了以下3种确保安全的机制(mechani ...

  4. java面试题三十 public,private,protected,default访问权限

    1 考题描述: 2 答案 BD 3解析 B. no modifer既为default也就是friendly 3.1 public,private,protected,default访问权限图 3.2证 ...

  5. Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  6. Spring Security登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  7. java 接口权限控制_手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!...

    SpringBoot实战电商项目mall(30k+star)地址:github.com/macrozheng/- 摘要 权限控管理作为后台管理系统中必要的功能,mall项目中结合Spring Secu ...

  8. 动态调用Webservice 支持Soapheader身份验证(转)

    封装的WebserviceHelp类: using System; using System.CodeDom; using System.CodeDom.Compiler; using System. ...

  9. 调用WebService时加入身份验证,以拒绝未授权的访问

    调用WebService时加入身份验证,以拒绝未授权的访问 分类: WebService 2010-08-19 16:22 548人阅读 评论(4) 收藏 举报 众所周知,WebService是为企业 ...

最新文章

  1. 《JavaScript面向对象编程指南》——1.3 分析现状
  2. (2)JavaScript数据类型
  3. Java GregorianCalendar getActualMaximum()方法与示例
  4. C# 读取照片的EXIF信息
  5. java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?
  6. 【转】UnityVS(Visual Studio Tools For Unity)的安装与使用
  7. echarts 模拟迁徙
  8. 析构语意学(Semantics of Destruction)
  9. Response.End方法
  10. Python练习题总结摘要
  11. Android recyclerview item获焦时更新UI导致列表自动滚动到获焦处
  12. Q萌可爱,奇瑞QQ冰淇淋给年轻人爱的大礼物
  13. 什么是中性滤光片?有什么作用?
  14. Memcached的安装及配置
  15. 51单片机的堆栈指针(SP)
  16. 机器学习-Precision(查准率)、Recall(查全率)、P-R曲线
  17. 深圳大学超级计算机,Intel CMP活动之“超算习堂”走进深圳大学
  18. 小程序上如何计算倒计时截止时间
  19. pmp项目管理——项目需求分析
  20. 64位投影机专业测试软件,软件分享 篇十四:利用投影仪提高生活质量 —— 自用软件推荐...

热门文章

  1. 二分查找详解——弄懂二分思想的重要性!
  2. C语言课后习题(68)
  3. PAT乙级(1014 福尔摩斯的约会)
  4. Flinksql读取Kafka写入Iceberg 实践亲测
  5. oracle rac 高并发性能_高并发业务下 JVM 涉及的垃圾回收与性能问题分析与定位...
  6. arcgis如何打开tif_实例|ArcGiS导出的dxf,在CASS中如何变身?
  7. 项目上线后,谈一下感触比较深的一点:查询优化
  8. 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
  9. 看KubeEdge携手K8S,如何管理中国高速公路上的10万边缘节点
  10. 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析