📄 authenticationhandler.java
字号:
package com.jones.web.service.authentication.impl;
import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.exchange.InMessage;
import org.codehaus.xfire.fault.XFireFault;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;
import com.jones.web.service.authentication.AuthenticationManager;
/**
* web服务身份认证处理器
*
* @author gubiao
*
*/
public class AuthenticationHandler extends AbstractHandler {
private static final Logger log = Logger.getLogger(AuthenticationHandler.class);
private AuthenticationManager authenticationManager;
public void setAuthenticationManager(
AuthenticationManager authenticationManager) {
this.authenticationManager = authenticationManager;
}
public void invoke(MessageContext context) throws Exception {
log.info("文件上传web service被调用,对调用者进行身份校验!................");
InMessage message = context.getInMessage();
final Namespace TOKEN_NS = Namespace.getNamespace("jones",
"http://services.web.jones.com");
if (message.getHeader() == null) {
log.error("SOAP消息没有头信息,校验失败!");
throw new XFireFault("SOAP消息没有头信息,校验失败!",
XFireFault.SENDER);
}
Element token = message.getHeader().getChild("AuthenticationToken",
TOKEN_NS);
if (token == null) {
log.error("SOAP消息头信息中为包含校验所需数据,校验失败!");
throw new XFireFault("SOAP消息头信息中为包含校验所需数据,校验失败!",
XFireFault.SENDER);
}
String username = token.getChild("username", TOKEN_NS).getValue();
String password = token.getChild("password", TOKEN_NS).getValue();
if (username == null || password == null){
log.error("SOAP头信息中的用户名或密码不存在,校验失败!");
throw new XFireFault("SOAP头信息中的用户名或密码不存在,校验失败!",
XFireFault.SENDER);
}
/**
* 校验调用者
*/
if (!this.authenticationManager.authenticate(username, password)){
log.error("校验失败,请检查用户名和密码!");
throw new XFireFault(new Exception(
"校验失败,请检查用户名和密码!"),
XFireFault.SENDER);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -