Axis用户过滤服务类程序
//===========================================================
//用户过滤服务类程序 author:曹翔
//===========================================================
package com.ruix.service;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.apache.axis.security.SecurityProvider;
import org.apache.axis.security.simple.SimpleSecurityProvider;
import org.apache.axis.utils.Messages;
/**
* 用户过滤类
* @author caoxiang
* @version 1.0
*/
public class AuthenticationHandler extends BasicHandler {
//序列号
private static final long serialVersionUID = 1L;
/**
* invoke,每一个handler都必须实现的方法。
* @param msgContext
*/
public void invoke(MessageContext msgContext) throws AxisFault {
SecurityProvider provider = (SecurityProvider) msgContext
.getProperty("securityProvider");
if (provider == null) {
provider = new SimpleSecurityProvider();
msgContext.setProperty("securityProvider", provider);
}
if (provider != null) {
String userId = msgContext.getUsername(); //用户名
String password = msgContext.getPassword();//密 码
// 对用户进行认证,如果authUser==null,表示没有通过认证,抛出Server.Unauthenticated异常。
org.apache.axis.security.AuthenticatedUser authUser = provider
.authenticate(msgContext);
if (authUser == null)
throw new AxisFault("Server.Unauthenticated", Messages
.getMessage("cantAuth01", userId), null, null);
// 用户通过认证,把用户的设置成认证了的用户。
msgContext.setProperty("authenticatedUser", authUser);
}
}
}