您的位置:首页 > 其它

XFire中通过Soap Header 实现简单的验证

2008-11-04 10:42 477 查看
本文是XFire+Spring的结合使用:

xfire_servlet.xml的内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

<beans>
<!-- START SNIPPET: xfire -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/QueryService">
<ref bean="query"/>
</entry>

</map>
</property>

</bean>

<!-- Declare a parent bean with all properties common to both services -->
<bean id="query" class="org.codehaus.xfire.spring.remoting.XFireExporter">
<property name="serviceFactory">
<ref bean="xfire.serviceFactory"/>
</property>
<property name="xfire">
<ref bean="xfire"/>
</property>
<property name="serviceBean">
<ref bean="QueryHibRis"/>
</property>
<property name="serviceClass">
<value>com.spring.Iquery</value>
</property>

<property name="inHandlers">
<ref bean="authenticationHandler"/>
</property>

</bean>

<!-- END SNIPPET: xfire -->
</beans>

applicationContext.xml文件的内容authenticationHandler的定义

<bean id="authenticationHandler" class="com.security.AuthenticationHandler"></bean>

com.security.AuthenticationHandler类的内容:

package com.security;

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;

/**
* XFire的回调的Handler,在XFire配置文件中配置
* Server端的认证模块,回调处理模块
*
* ClientAuthHandler跟AuthenticationHandler要一起用,或者都不用
*
*
*

*
*/

public class AuthenticationHandler extends AbstractHandler {
private static final Logger log = Logger
.getLogger(AuthenticationHandler.class);

public void invoke(MessageContext context) throws Exception {

log.info("#AuthenticationHandler is invoked");
InMessage message = context.getInMessage();

final Namespace TOKEN_NS = Namespace.getNamespace("SpringSide",
"http://spring.com");

if (message.getHeader() == null) {
throw new XFireFault("GetRelation Service Should be Authenticated",
XFireFault.SENDER);
}

// System.out.println("dd"+message.getHeader());

Element token = message.getHeader().getChild("AuthenticationToken",
TOKEN_NS);
if (token == null) {
throw new XFireFault("Request must include authentication token.",
XFireFault.SENDER);
}

String username = token.getChild("Username", TOKEN_NS).getValue();
String password = token.getChild("Password", TOKEN_NS).getValue();

if (username == null || password == null)
throw new XFireFault("Supplied Username and Password Please",
XFireFault.SENDER);

/**
/** */
/**
* 检查用户名密码是否正确
*/
if (!username.equals("user") || !password.equals("ddd"))
throw new XFireFault(
" Authentication Fail! Check username/password ",
XFireFault.SENDER);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐