`
conkeyn
  • 浏览: 1524866 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Axis 1.4 基于wss4j UsernameToken 的安全验证

 
阅读更多

 

利用以下的wsdl文件生成客户端及服务端代码:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://localhost:8080/axis/services/stock-wss-01" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/services/stock-wss-01" xmlns:intf="http://localhost:8080/axis/services/stock-wss-01" xmlns:tns1="http://stock.samples" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
  <schema elementFormDefault="qualified" targetNamespace="http://stock.samples" xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="symbol" type="xsd:string"/>
  </schema>
  <schema elementFormDefault="qualified" targetNamespace="http://localhost:8080/axis/services/stock-wss-01" xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="getQuoteReturn" type="xsd:float"/>
  </schema>

 </wsdl:types>

   <wsdl:message name="getQuoteResponse">

      <wsdl:part element="impl:getQuoteReturn" name="getQuoteReturn"/>

   </wsdl:message>

   <wsdl:message name="getQuoteRequest">

      <wsdl:part element="tns1:symbol" name="symbol"/>

   </wsdl:message>

   <wsdl:portType name="StockQuoteService">

      <wsdl:operation name="getQuote" parameterOrder="symbol">

         <wsdl:input message="impl:getQuoteRequest" name="getQuoteRequest"/>

         <wsdl:output message="impl:getQuoteResponse" name="getQuoteResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="stock-wss-01SoapBinding" type="impl:StockQuoteService">

      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="getQuote">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="getQuoteRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>

         <wsdl:output name="getQuoteResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="StockQuoteServiceService">

      <wsdl:port binding="impl:stock-wss-01SoapBinding" name="stock-wss-01">

         <wsdlsoap:address location="http://localhost:8080/axis/services/stock-wss-01"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

 

服务端和客户端需要都存在这个CallbackHandler的实现类 :

 

package samples.stock.client.usernametoken;

import java.io.IOException;

import javax.security.auth.callback.Callback;

import javax.security.auth.callback.CallbackHandler;

import javax.security.auth.callback.UnsupportedCallbackException;

import org.apache.ws.security.WSPasswordCallback;

/**
 * 
 * PWCallback for the Client
 */

public class PWCallback implements CallbackHandler {

    /**
     * 
     * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[])
     */

    public void handle(Callback[] callbacks) throws IOException,

    UnsupportedCallbackException {

        for (int i = 0; i < callbacks.length; i++) {

            if (callbacks[i] instanceof WSPasswordCallback) {

                WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];

                // set the password given a username

                if ("wss4j".equals(pc.getIdentifier())) {

                    pc.setPassword("security");

                }

            } else {

                throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");

            }

        }

    }

}
 
/**
 * 
 */
package samples.stock.client.usernametoken;

import java.net.URL;
import java.rmi.RemoteException;

import javax.xml.rpc.ServiceException;

import org.apache.axis.EngineConfiguration;
import org.apache.axis.configuration.FileProvider;

import samples.stock.StockQuoteService;
import samples.stock.StockQuoteServiceService;
import samples.stock.StockQuoteServiceServiceLocator;

/**
 * @author linzq
 * 
 * 
 */
public class StockServiceClient {

    public static void main(String[] args) throws ServiceException, RemoteException {
        if (args.length == 0) {

            System.out.println("Usage:\njava StockServiceClient [symbol]");
            return;

        }
        
        // 经测试OK,可以正常使用

        // 使用client_deploy.wsdd来配置UsernameToken消息头
        EngineConfiguration config = new FileProvider("src/samples/stock/client/usernametoken/client_deploy.wsdd");
        StockQuoteServiceService locator = new StockQuoteServiceServiceLocator(config);

        String url = "http://localhost:9999/axis/services/stock-wss-01";
        StockQuoteService service = null;
        try {
            service = locator.getStockWss01(new URL(url));
            float quote = service.getQuote(args[0]);
            System.out.println("stock quote service returned " + args[0] + ": " + quote);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

 deploy.wsdd文件配置:

<service name="stock-wss-01" provider="java:RPC" style="document" use="literal">
	<requestFlow>
		<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
			<parameter name="passwordCallbackClass" value="samples.stock.PWCallback"/>
			<parameter name="action" value="UsernameToken"/>
		</handler>
	</requestFlow>
      <parameter name="wsdlTargetNamespace" value="http://localhost:8080/axis/services/stock-wss-01"/>
      <parameter name="wsdlServiceElement" value="StockQuoteServiceService"/>
      <parameter name="schemaQualified" value="http://localhost:8080/axis/services/stock-wss-01,http://stock.samples"/>
      <parameter name="wsdlServicePort" value="stock-wss-01"/>
      <parameter name="className" value="samples.stock.StockWss01SoapBindingImpl"/>
      <parameter name="wsdlPortType" value="StockQuoteService"/>
      <parameter name="typeMappingVersion" value="1.2"/>
      <operation name="getQuote" qname="getQuote" returnQName="retNS:getQuoteReturn" xmlns:retNS="http://localhost:8080/axis/services/stock-wss-01" returnType="rtns:float" xmlns:rtns="http://www.w3.org/2001/XMLSchema" soapAction="" >
        <parameter qname="pns:symbol" xmlns:pns="http://stock.samples" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
      </operation>
      <parameter name="allowedMethods" value="getQuote"/>
  </service>

 client_deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/>
	<globalConfiguration >
		<requestFlow >
			<handler type="java:org.apache.ws.axis.security.WSDoAllSender" >
				<parameter name="action" value="UsernameToken"/>
				<parameter name="user" value="wss4j"/>
				<parameter name="passwordCallbackClass" value="samples.stock.client.usernametoken.PWCallback"/>
				<parameter name="passwordType" value="PasswordDigest"/>
			</handler>
		</requestFlow >
	</globalConfiguration >
</deployment>
 
分享到:
评论

相关推荐

    axis1.4完整包下载

    4. **依赖库**:Axis1.4可能依赖于其他Apache项目,如Apache Ant用于构建任务,或者JAXB(Java Architecture for XML Binding)用于XML数据绑定。 5. **配置文件**:如server.xml和axis.properties,这些文件控制...

    axis1.4生成客户端

    Axis1.4是Apache软件基金会提供的一个开源工具,专门用于处理Web服务,特别是基于SOAP(Simple Object Access Protocol)的Web服务。本文将深入探讨如何使用Axis1.4生成客户端,以及与之相关的知识点。 1. **Web...

    springboot+axis1.4

    由于题目提及的是Axis1.4,这是一个基于JAX-RPC的Web服务实现,主要用于创建SOAP服务。 2. **集成 Axis1.4**:首先,你需要在Spring Boot的`pom.xml`文件中添加Axis1.4的依赖。这通常意味着你需要手动添加Axis的库...

    axis1.4帮助文档

    11. **安全**:虽然Axis1.4本身不包含高级的安全特性,但它可以与其他安全框架(如Spring Security或WS-Security)集成,以实现身份验证、授权和消息加密。 12. **调试与日志**:Axis1.4提供了丰富的日志记录和调试...

    axis1.4jar包以及WSDL和服务端代码互转方法

    Axis1.4是Apache组织提供的一款基于Java的Web服务框架,它允许开发者轻松地创建、发布和调用Web服务。本文将深入探讨如何使用Axis1.4.jar包以及Eclipse IDE来实现WSDL(Web Service Description Language)和服务端...

    apache axis1.4实例

    Apache Axis1.4主要基于SOAP(Simple Object Access Protocol)协议,它提供了一种简单的方式来实现基于XML的分布式计算。此框架允许开发者将Java类转换为Web服务,反之亦然,极大地简化了Web服务的开发过程。其核心...

    springboot使用axis1.4的demo

    在本文中,我们将深入探讨如何在Spring Boot项目中集成并使用Axis1.4来发布Web服务。Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP ...

    webservice axis1.4服务实例

    5. **测试服务**:创建一个客户端测试程序,使用Axis1.4的`java2wsdl`工具生成客户端代码,然后调用服务并验证结果。 在“axis1Test”这个文件中,可能包含了上述步骤中生成的各种文件,比如Java服务类、WSDL文档、...

    AXIS1.4webservice服务端和客户端例子

    AXIS1.4是Apache软件基金会开发的一个开源Java库,用于构建和使用Web服务。它提供了在Java平台上创建Web服务的工具和API,使得开发者能够快速实现SOAP(Simple Object Access Protocol)通信。在这个"AXIS1.4 ...

    apache axis1.4 官网备份

    四、Apache Axis1.4与Web服务开发 在Web服务开发中,通常会涉及到以下概念: 1. **WSDL**:定义服务的接口、操作、消息格式以及服务的位置。它是服务消费者理解服务的关键。 2. **UDDI(Universal Description, ...

    axis1.4和axis2相关jar文件

    2. **依赖的第三方库**:为了支持各种功能,Axis2依赖于许多第三方库,如log4j.jar(日志)、wsdl4j.jar(WSDL处理)等。 3. **示例和服务**:可能包含一些示例服务和配置文件,帮助用户快速理解和启动服务。 4. **...

    Springboot集成axis1.4的demo

    当我们需要在Spring Boot项目中集成旧版的 Axis1.4 来发布Web服务时,这通常涉及到对传统SOAP(简单对象访问协议)服务的支持。以下将详细讲解如何在Spring Boot应用中集成Axis1.4以及使用wsdd文件发布Web服务。 ...

    axis1.4 + document/literal 实例

    总结起来,这个"axis1.4 + document/literal 实例"提供了一个学习如何使用Axis 1.4框架创建和调用基于document/literal绑定的Web服务的机会。通过分析和实践提供的客户端和服务端代码,开发者可以加深对Web服务原理...

    axis1.4+activation.jar+mail.jar

    标题 "axis1.4+activation.jar+mail.jar" 指涉的是一个基于Java的Web服务开发工具包,Axis1.4,以及两个必要的库文件:activation.jar和mail.jar。这些组件在Java应用程序中,尤其是涉及到网络通信和邮件处理时扮演...

    axis1.4及webService开发教程

    在IT行业中,Web服务是一种基于互联网的标准协议,用于应用程序之间的通信。Axis1.4是Apache软件基金会提供的一个开源工具,专门用于开发和部署Web服务。本教程将详细讲解如何使用Axis1.4进行Web服务的开发,包括...

    webservice axis1.4 开发资料

    9. **安全考虑**:尽管XMLSec提供了加密和签名功能,但 Axis1.4 在安全性方面可能不如更新的框架强大。在实际应用中,还需要考虑其他安全措施,如HTTPS、WS-Security等。 10. **兼容性和迁移**:由于Axis1.4相对较...

    axis1.4 源码包

    axis1.4 源码包,亲测,好用,放心下载,不必再进行反编译工作

    AXIS1.4客户端调用

    4. **客户端调用**:在AXIS1.4中,客户端调用Web服务的过程包括以下步骤: - **生成Stub类**:使用wsdl2java工具,根据服务的WSDL描述文件生成Java客户端存根(Stub)类。 - **配置客户端**:设置必要的SOAP头信息...

    axis1.4资源

    这个框架是基于早期的Axis版本,即Axis1.x系列,而Axis1.4是其中的一个稳定版本,发布于2007年,提供了许多对SOAP(简单对象访问协议)和WSDL(Web服务描述语言)的支持。 在Web服务领域,Axis1.4扮演着关键角色,...

    在axis1.4中传递复杂类型数组参数(ArrayMapping)

    在 Axis1.4 中传递复杂类型数组参数,涉及到的是 Web 服务中的数据绑定和消息处理。Axis 是一个开源的 SOAP 库,它允许开发者创建、部署和使用 Web 服务。在处理复杂类型数组时,ArrayMapping 是 Axis 中的一个关键...

Global site tag (gtag.js) - Google Analytics