`
shuai1234
  • 浏览: 978178 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

web Service实践——Xfire的ws-security用户名和密码安全验证

    博客分类:
  • java
 
阅读更多

一、参照《Web Service实践之——XFire实例》(本空间的文章)建立一个Xfire的应用;

二、引入的jar包:

xfire-1.2.6的所有jar包(包括xfire-all-1.2.6.jar),下载地址:http://xfire.codehaus.org/Download

wss4j-1.5.8.jar:下载地址:http://ws.apache.org/wss4j/

三、服务器端

1、PasswordHandler类,继承自avax.security.auth.callback.CallbackHandler

package com.channelsoft.hr.wssecurity;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;

import org.apache.ws.security.WSPasswordCallback;

public class PasswordHandler implements CallbackHandler {
    @SuppressWarnings("unchecked")
private Map passwords = new HashMap();

    @SuppressWarnings("unchecked")
public PasswordHandler() {
       
passwords.put("server", "serverpass");//服务器端记录的用户名和密码,可以有多个
    }

    public void handle(Callback[] callbacks) throws IOException,//回调接口方法
            UnsupportedCallbackException {
        System.out.println("Handling Password!");
       
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];//获取回调对象
       
String id = pc.getIdentifer();//获取用户名
        System.out.println("id:"+id+" ,password:"+(String) passwords.get(id));

String validPw = (String)password.get(id);②-3:获取用户对应的正确密码

②-4:如果是明文密码直接进行判断

if(WSConstants.PASSWORD_TEXT.equals(callback.getPasswordType())){

String pw = callback.getPassword();

if(pw == null || !pw.equalsIgnoreCase(validPw)){

throw new WSSecurityException("password not match");

}

}else{
       
pc.setPassword((String) passwords.get(id));//如果是密码摘要,向回调设置正确的密码(明文密码)
    }
}

2、service.xml

<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>hrwebservice</name>
<namespace>com.channelsoft.hr</namespace>
<serviceClass>com.channelsoft.hr.webservice.DepartmentAndPersonInfo</serviceClass>
<implementationClass>com.channelsoft.hr.webservice.impl.DepartmentAndPersonInfoImpl</implementationClass>
<inHandlers>
          <handler handlerClass="org.codehaus.xfire.util.dom.DOMInHandler" />
            <bean
                class="org.codehaus.xfire.security.wss4j.WSS4JInHandler" xmlns="">
                <property name="properties">
                    <props>
                      
<prop key="action">UsernameToken</prop>//使用用户名与密码进行安全验证
                       
<prop key="passwordCallbackClass">
                            com.channelsoft.hr.wssecurity.PasswordHandler//回调类
                        </prop>
                    </props>
                </property>
            </bean>
    </inHandlers>
</service>
</beans>

四、客户端

 

2、客户端调用

package hr;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.security.wss4j.WSS4JOutHandler;
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;
import org.codehaus.xfire.util.dom.DOMOutHandler;

import com.channelsoft.hr.webservice.DepartmentAndPersonInfo;

public class getHRInfo
{
public static void main(String args[])
{
   String serviceURL = "
http://localhost:8080/HRWebService/services/hrwebservice";
   // 创建service对象
   Service serviceModel = new ObjectServiceFactory().create(DepartmentAndPersonInfo.class);
  
   XFireProxyFactory serviceFactory = new XFireProxyFactory();

   try
   {
    // 获取服务对象
    DepartmentAndPersonInfo service = (DepartmentAndPersonInfo) serviceFactory.create(serviceModel, serviceURL);
   
    // 忽略http连接的超时时间,0为不设置超时时间,》=1为超时毫秒数
    Client client = Client.getInstance(service);
    client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
    //发送授权信息
//      client.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));


//      //WS-Security
     
WSS4JOutHandler wsOut = new WSS4JOutHandler();
      String actions =WSHandlerConstants.USERNAME_TOKEN;
         wsOut.setProperty(WSHandlerConstants.ACTION, actions);//动作
         wsOut.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PASSWORD_DIGEST);//密码类型
         wsOut.setProperty(WSHandlerConstants.USER, "server");   //指定用户     
         wsOut.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());//密码回调类
        
         client.addOutHandler(new DOMOutHandler());
         client.addOutHandler(wsOut);

       

     
     
    // 调用服务
    String hello = service.queryDepartmentInfo();
    String hello2 = service.queryPersonnelInfo("", "", "");
    System.out.println(hello);
    System.out.println(hello2);

   }
   catch (MalformedURLException e)
   {
    System.out.println("错误!!!");
    e.printStackTrace();
   }
}
}

分享到:
评论

相关推荐

    xfire1.2.6 ws-security示例

    总之,xfire1.2.6的WS-Security示例是一个实践Web服务安全的好起点。它涵盖了从基本的用户名/密码认证到复杂的证书交换和消息加密等多个方面,帮助开发者理解并掌握WS-Security标准在实际项目中的应用。通过深入研究...

    基于XFire实施WS-Security

    此外,WS-Security家族还包括了WS-SecureConversation、WS-Federation、WS-Authorization、WS-Policy、WS-Trust和WS-Privacy等一系列子规范,这些规范共同构建了一个完整的Web Service安全框架,以满足不同场景下的...

    XFire中实现WS-Security经典

    标题"XFire中实现WS-Security经典"表明了本文将深入探讨如何在XFire框架中实现Web服务安全标准——WS-Security。WS-Security(Web Services Security)是 Oasis 标准组织定义的一套用于保护Web服务交互的安全规范,...

    xfire+spring实现ws-security(数字签名和报文加密)

    eclipse下spring+xfire实现ws-security的简单例子,包含服务器和客户端的代码,实现用户名/密码.数字签名和报文加密的安全认证,唯一不足的是没有实现数字签名和报文加密的混合模式(可能是密匙文件的问题,正在努力中),...

    ws-security java-mail

    在IT行业中,`ws-security` 和 `java-mail` 是两个重要的技术领域,分别涉及Web服务安全和电子邮件处理。本文将详细探讨这两个领域的相关知识点,并结合提供的文件信息进行讲解。 首先,`ws-security`(Web ...

    WS-Security 安全

    WS-Security(Web Services Security)正是为了解决这一挑战而诞生的一项关键技术,它旨在为Web服务提供身份验证、授权、完整性和保密性等安全功能。本文将全面解析WS-Security的核心概念、与传统安全机制的差异、...

    Webservice实现WS-Security(XFire)

    NULL 博文链接:https://zhaoshijie.iteye.com/blog/839050

    Web Service实践之——开始XFire

    这篇博客“Web Service实践之——开始XFire”可能详细介绍了如何使用XFire来实现Web服务。 在Web服务的世界里,SOAP(Simple Object Access Protocol)是用于交换结构化信息的标准协议,而WSDL(Web Services ...

    xfire spring security

    WS-Security是OASIS制定的一套Web服务安全标准,用于保护Web服务消息的完整性和机密性,实现身份验证、消息完整性、非重复使用保护等功能。WS-Security可与WSDL、SOAP、X.509证书等技术结合使用。 四、Spring ...

    xfire--开发WEB SERVICE的又一利器

    Xfire(现已被Apache CXF所吸收)是一个基于Java的Web服务实现,它支持SOAP、WSDL、WS-Security等Web服务标准。它的设计目标是简化Web服务的开发过程,通过提供简洁的API和自动化的代码生成工具,使得开发者可以...

    Xfire案例,webserver——Xfire案例

    综上所述,Xfire的webserver案例是一个包含多个技术层面的综合项目,涵盖了网络通信、服务器架构、数据库管理和安全策略等多个IT领域的知识。了解这些知识点有助于我们理解和分析类似的应用程序设计。

    xfire_1.147_zol.zip 加 Web_Service学习手册(Xfire)-christian.pdf

    5. **XFire与CXF**:XFire在后期发展成为Apache CXF,这是一个全面的Web Service框架,不仅支持SOAP,还支持RESTful风格的服务,并且集成了WS-*标准,如WS-Security、WS-Addressing等。 6. **实战演练**:通过阅读...

    WebService之XFire和Jax实现身份验证

    为了实现这些,开发者需要配置XFire的拦截器和安全策略,确保只有经过验证的请求才能访问服务。 JAX,全称Java API for XML Processing,是Java平台中用于处理XML的一组API。在JAX中,通常使用JAX-WS(Java API for...

    xfire-all-1.2.6.jar.zip

    总结来说,Xfire是Java Web服务开发的一把利器,通过"xfire-all-1.2.6.jar",开发者能够轻松实现Web服务的创建、发布和消费,从而加速了软件开发的进程。虽然现在有了更新的技术选项,但Xfire的历史地位和它所代表的...

    xfire-distribution-1.2.3

    4. **广泛的协议支持**: XFire 支持 SOAP 1.1 和 1.2,WS-Security,WS-Addressing 等多种 Web 服务标准,以及 JAXB 和 JiBX 等数据绑定技术。 5. **Aegis Databinding**: XFire 自带的 Aegis 数据绑定引擎,能够...

    webservice中用到的jar,xfire-jaxws-1.2.6.jar

    webservice中用到的jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar

    xfire+spring+安全认证

    它还提供了一种机制来处理Web服务的安全性,例如基于WS-Security的标准,可以实现用户身份验证和消息完整性保护。 Spring框架以其模块化设计和强大的依赖注入闻名,它允许开发者轻松地管理对象的生命周期和配置。...

    xfire-all-1.2.6 xfire所需的全部包

    Xfire,这款曾经在游戏社区中广受欢迎的即时通讯软件,以其独特的游戏整合功能和社交特性,为玩家提供了便捷的游戏内通信和社区交流平台。本文将深入探讨Xfire 1.2.6这一历史版本,揭示其背后的各项技术细节和核心...

    xfire-all-1.2.4.jar包webService

    **Apache CXF**:XFire后来被并入Apache CXF项目,CXF在XFire的基础上增加了更多功能,如支持RESTful Web服务、WS-Security、WS-Policy等,同时提供了更丰富的工具集和更好的社区支持。 **使用场景**: - 开发者...

    Xfire整合webservice jar包

    支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-Addressing)、Web服务安全(WS-Security)等; 支持JSR181,可以通过JDK5配置Web服务; 高性能的SOAP实现; 服务器端、客户端代码辅助生成; 对Spring、...

Global site tag (gtag.js) - Google Analytics