`

spring+xfire +wss4j实现

阅读更多

web.xml 配置

 

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
       /WEB-INF/applicationContext.xml,
   /WEB-INF/xfire-servlet.xml,
         classpath:org/codehaus/xfire/spring/xfire.xml
        </param-value>
 </context-param>

 

<servlet>
  <servlet-name>xfire</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>11</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>xfire</servlet-name>
  <url-pattern>/services/*</url-pattern>
 </servlet-mapping>

 

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>
 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="urlMap">
   <map>
    <entry key="/userServiceWSS4JUsernameToken">
     <ref bean="userServiceWSS4JUsernameToken" />
    </entry>
   </map>
  </property>
 </bean>

 <bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler" />

 <bean id="wss4jInHandlerUsernameToken" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
  <property name="properties">
   <props>
    <prop key="action">UsernameToken</prop>
    <prop key="passwordCallbackClass">com.wine.ws.handler.PassWordHandler</prop>
   </props>
  </property>
 </bean>
 
 <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">  
        <property name="serviceFactory">  
            <ref bean="xfire.serviceFactory"/>  
        </property>  
        <property name="xfire">  
            <ref bean="xfire"/>  
        </property>  
    </bean>  
   
    <bean id="userServiceWSS4JUsernameToken" parent="baseWebService">  
        <property name="serviceBean" ref="userWebService"/>  
        <property name="serviceClass" value="com.wine.service.IUserWebService"/>  
        <property name="name" value="userServiceWSS4JUsernameToken"></property>
        <property name="inHandlers">  
            <list>  
                <ref bean="domInHandler"/>  
                <ref bean="wss4jInHandlerUsernameToken"/>  
            </list>  
        </property>  
    </bean>  
</beans>

 

 

验证

public class PassWordHandler implements CallbackHandler {

 private static Map<String,String> users = new HashMap<String,String>();
 
 static {
  users.put(WSPropertiesReader.getUserName(), WSPropertiesReader.getPassword());
 }
 public void handle(Callback[] callbacks) throws IOException,
   UnsupportedCallbackException {
  WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];
  String id = callback.getIdentifer();
  if(WSConstants.PASSWORD_TEXT.equals(callback.getPasswordType())){
   String validPW = users.get(id);
   if(validPW == null || !validPW.equalsIgnoreCase(callback.getPassword())){
    throw new WSSecurityException("password not match ......");
   }
  } else {
   callback.setPassword(users.get(id));
  }
 }
}

 

客户端实现

public class Test {
 private static XFireProxyFactory xFireProxyFactory=new XFireProxyFactory();
 public static void main(String[] args) throws Exception {
  Service service=new ObjectServiceFactory().create(IUserWebService.class);
  String url="http://localhost:8080/dc/services/userServiceWSS4JUsernameToken";
  IUserWebService userWebService=(IUserWebService) xFireProxyFactory.create(service,url);
  Client client=((XFireProxy) Proxy.getInvocationHandler(userWebService)).getClient();
  client.addOutHandler(new DOMOutHandler());
  Properties properties=new Properties();
  properties.setProperty(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);
  properties.setProperty(WSHandlerConstants.PASSWORD_TYPE,WSConstants.PW_DIGEST);
  properties.setProperty(WSHandlerConstants.USER,"feng");
  properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS,PassWordHandler.class.getName());
  client.addOutHandler(new WSS4JOutHandler(properties));
  System.out.println("xxxxxxxxxxxx"+userWebService.isValidSession("a"));
 }
}

 

分享到:
评论

相关推荐

    Spring+xFire+wss4j配置Helloworld完整Demo.rar

    标题中的"Spring+xFire+wss4j配置Helloworld完整Demo"揭示了这是一个关于整合Spring框架、xFire(现称为Apache CXF)和WSS4J的安全Web服务示例项目。这个项目旨在帮助开发者理解如何在Spring环境中配置并实现一个...

    Spring+xFire+wss4j配置Helloworld完整版,Myeclipse项目服务端+客户端.rar

    在本教程中,我们将深入探讨如何使用Spring框架与xFire集成,同时利用wss4j进行WS-Security安全配置,创建一个"Hello World"的Web服务。这是一个完整的MyEclipse项目,包括服务端和客户端的工程,旨在帮助开发者快速...

    wss4j+xfire+spring(可直接运行的示例)

    许多的相关示例根本不能运行,这个示例不单能直接运行,而且还有教程,见 http://blog.csdn.net/guosydragon/archive/2010/05/01/5549076.aspx及相关章节

    xfire集成spring的jar包

    7. **wss4j-1.5.1.jar**:Web Services Security (WSS4J)提供了SOAP消息的安全处理,包括签名和加密。 8. **wstx-asl-3.2.0.jar**:Woodstox是一个高性能的XML流解析器和生成器,它用于解析和生成XML流数据。 9. *...

    xfire jar.zip

    wss4j-1.5.0.jar wstx-asl-3.2.9.jar xbean-spring-2.8.jar xfire-all-1.2.6.jar xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.6.jar xml-apis-1.0.b2.jar XmlSchema-1.1.jar xmlsec-1.3.0.jar

    xfire验证签名加密详细

    在XFire中,我们可以利用WSS4J库来实现这些功能。WSS4J提供了API来设置安全策略,如添加用户名令牌、数字签名或消息加密。 为了启用WS-Security,我们需要在`xfire.xml`配置文件中定义安全策略。例如,我们可以配置...

    XFire完整jar包

    8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J)是一个用于处理Web服务安全的库,它支持WS-Security和其他相关的安全标准,确保Web服务之间的通信安全。 9. **wstx-asl-3.2.3.jar**:这是一个升级...

    xfire开发webservice所需jar包

    5. **xmlsec-1.3.0.jar**:XML Security Library,提供了对XML加密和签名的支持,与wss4j配合用于实现Web服务的安全功能。 6. **commons-httpclient-3.0.jar**:Apache Commons HttpClient,提供了一套高级HTTP...

    xfire jar包

    2. wss4j-1.5.1.jar:这个是Web Services Security for Java的库,用于提供Web服务的安全性,如数字签名、消息加密等。在使用xfire进行Web服务交互时,可能会用到这个库来确保通信的安全性。 3. wstx-asl-3.2.0.jar...

    xfire lib目录所有的jar包

    7. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J) 是Apache CXF项目的一部分,用于处理Web服务的安全性,如数字签名和加密等。 8. **wstx-asl-3.2.0.jar**:Woodstox是高性能的StAX(Streaming API...

    面向服务的架构用XFIRE配置webService服务;

    4. wss4j-1.5.1.jar:Web Services Security for Java,提供了安全相关的API,如数字签名、加密和身份验证。 5. wstx-asl-3.2.0.jar:Woodstox XML处理器,提供高效的XML解析和生成。 6. jetty-6.1.2rc0.jar:Jetty...

    xfire 初体验

    5. **wss4j-1.5.1.jar**:Web Services Security for Java,提供安全相关的支持,如数字签名和加密,确保Web服务的安全通信。 6. **wstx-asl-3.2.0.jar**:Woodstox,一个高效的XML流解析器和生成器,用于处理XML...

    简单的WebService

    - `wss4j-1.5.1.jar`:Web Services Security for Java (WSS4J) 是Apache提供的一套安全库,用于实现SOAP消息的安全传输。 - `wsdl4j-1.6.1.jar`:包含了处理WSDL文档的库,Spring WS等工具会使用这个库解析和操作...

    compass+ssh2集成 hibernategps问题

    5. `wss4j-1.5.1.jar`:Web Services Security for Java,用于处理Web服务的安全性。 6. `wstx-asl-3.2.0.jar`:Woodstox,一个高效的XML处理器,可以处理XML输入和输出。 7. `velocity-1.6.jar`:Velocity,一个...

    web service开发包

    8. **wss4j-1.5.1.jar**:Web Services Security for Java (WSS4J) 是Apache提供的一个安全库,它为SOAP消息提供了安全功能,如签名、加密、以及WS-Security标准的支持。 9. **wstx-asl-3.2.0.jar**:Woodstox是...

    CXF webservice初学笔记

    - `wss4j-1.5.11.jar`:Web Services Security for Java,用于实现WS-Security标准,提供安全机制。 - `stringtemplate-3.2.jar`:StringTemplate是一个模板引擎,用于生成文本输出,如XML或HTML。 - `wsdl4j-...

    CXF框架开发WebService示例及说明

    - **安全认证**:CXF 支持多种安全机制,包括消息头拦截器、WSS4J 和 X509 证书,确保服务的安全通信。 在演示环境中,我们使用 MyEclipse IDE、Tomcat 6 作为应用服务器,以及 CXF 版本为 2.5.5。从 CXF 官网...

Global site tag (gtag.js) - Google Analytics