加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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());
?? 在得到用户名和密码时,我们就可以进行权限验证了,如果没有权限让其抛个异常处理;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读