`
步青龙
  • 浏览: 297756 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

WebService(二)---限定IP访问WSDL

 
阅读更多

服务端:package com.xxx.authentication;

import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.codehaus.xfire.transport.http.XFireServletController;
import org.jdom.Element;
public class AuthenticationHandler extends AbstractHandler {
/**
 *  安全服务器端
 */
public void invoke(MessageContext cfx) throws Exception {
   if (cfx.getInMessage().getHeader() == null) {
    throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",
      org.codehaus.xfire.fault.XFireFault.SENDER);
   }
   Element token = cfx.getInMessage().getHeader().getChild(
     "AuthenticationToken");
   String remoteip = XFireServletController.getRequest().getRemoteAddr();
   System.out.println("服务端得到客户端的ip为:" + remoteip );
   String uri = cfx.getInMessage().getUri();
   int port  = XFireServletController.getRequest().getRemotePort();
   System.out.println("服务端得到客户端的端口"+ port+ "  URI为:" + uri);
   if (token == null) {
    throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息",
      org.codehaus.xfire.fault.XFireFault.SENDER);
   }
   String username = token.getChild("Username").getValue();
   String password = token.getChild("Password").getValue();
   try {
    // 进行身份验证 ,只有abcd@1234的用户为授权用户
    if (username.equals("abcd") && password.equals("1234"))
     System.out.println("身份验证通过");
    else
     throw new Exception();
   } catch (Exception e) {
    throw new org.codehaus.xfire.fault.XFireFault("非法的用户名和密码",
      org.codehaus.xfire.fault.XFireFault.SENDER);
   }
}
}

 然后再services.xml配置需要验证的service:

 

<service> 
      <name>xx</name> 
      <namespace>www.service/xx</namespace> 
      <serviceClass>com...Ixxx</serviceClass> 
      <implementationClass>com...Ixxx</implementationClass> 
      <!-- 验证 -->
      <inHandlers> 
   		<handler handlerClass ="com.xx.authentication.AuthenticationHandler" ></handler > 
   	  </inHandlers>
	  <style>wrapped</style>
	  <use>literal</use>
	  <scope>application</scope>
   </service> 

 客户端:

 

package com.xx.authentication;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
/**
 *  安全客户调用端
 */
public class ClientAuthenticationHandler extends AbstractHandler {
    private String username = null;
    private String password = null;
    public ClientAuthenticationHandler() { 
    }
    public ClientAuthenticationHandler(String username,String password) { 
    this.username = username; 
        this.password = password;
    }
    public void setUsername(String username) { 
        this.username = username; 
    }
    public void setPassword(String password) { 
        this.password = password; 
    }
    public void invoke(MessageContext context) throws Exception {
        //为SOAP Header构造验证信息
        Element el = new Element("header"); 
        context.getOutMessage().setHeader(el); 
        Element auth = new Element("AuthenticationToken"); 
        Element username_el = new Element("Username"); 
        username_el.addContent(username); 
        Element password_el = new Element("Password"); 
        password_el.addContent(password); 
        auth.addContent(username_el); 
        auth.addContent(password_el); 
        el.addContent(auth); 
    } 
}
 

客户端调用:

 

Service serviceModel = new ObjectServiceFactory().create(IhelloWorld.class);
IhelloWorld service = (IhelloWorld) new XFireProxyFactory().create(serviceModel,  "http://xxx/service/xxx");   
XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
 //发送授权信息
client.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));
 // 下面调用服务端方法....  
 

限定IP 在AuthenticationHandler 里面invoke里面可以验证,访问你的IP都已经得到了,再加上用户名密码验证,这样就可以对其限制。

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 zheng0324jian 2011-09-26  

相关推荐

    WebService CXF --- 由WSDL文件开发Client端

    WebService CXF是一个强大的开源框架,用于创建和消费Web服务。它允许开发者基于WSDL(Web Service Description Language)文件快速地生成服务端和客户端代码,极大地简化了Web服务的开发流程。在本篇中,我们将深入...

    webservice--javademo

    【标题】"webservice--javademo" 涉及的知识点主要集中在Java Web Services(JAX-WS)上,这是一种用于创建Web服务的技术。在Java领域,Web服务是一种允许不同应用程序之间交换数据的方式,它基于开放标准,如SOAP...

    Xfire在Spring下实现安全的WebService详述---配置

    Xfire在Spring下实现安全的WebService详述---配置 -

    WebService------AXIS

    WebService——AXIS详解 在IT领域,WebService是一种基于标准的、平台无关的、可以在不同系统之间交换数据的方式。它利用XML(可扩展标记语言)作为数据格式,HTTP作为传输协议,SOAP(简单对象访问协议)作为消息...

    eclipse根据wsdl文件生成webservice客户端-图例.pdf

    eclipse 根据 wsdl 文件生成 webservice 客户端 eclipse 是一个功能强大且灵活的集成开发环境(IDE),它提供了许多插件和工具来帮助开发者快速开发和测试应用程序。其中一个重要的应用场景是使用 wsdl 文件生成 ...

    WSDl生成WebService接口及调用

    在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...

    Java开发WebService实例--计数器.mht

    Java开发WebService实例--计数器.mht

    根据wsdl访问链接如何调用webService接口

    本篇文章将详细讲解如何根据WSDL链接来调用WebService接口,并探讨相关工具的使用。 1. **理解WSDL** WSDL文件是一个XML文档,它定义了服务提供者和消费者之间的交互细节。它包含了服务的地址(endpoint)、消息...

    java WebService Jax-WS创建

    【Java WebService Jax-WS 创建】是Java中创建Web服务的一种常见方式,主要用于构建基于SOAP(Simple Object Access Protocol)的Web服务。JAX-WS(Java API for XML Web Services)是Java EE 5及更高版本中提供的...

    WebService实例-天气预报

    二、Asp.Net 3.5与WebService Asp.Net 3.5是微软.NET Framework的一个版本,它包含了许多改进和新特性,如Linq、ASP.NET MVC等。对于WebService开发,Asp.Net提供了System.Web.Services命名空间,其中的WebService类...

    JAVA-WSDL-SAP-webserviceClient.zip

    Java与Sap对接的的demo,客户提供了wsdl文件,刚开始不会使用,网上疯狂找资料,很难找到,为此还特地冲了csdn会员下载资料,然并卵。。。刚开始下的都没得用!后面到现场开发了,再查资料,终于找到几个好的demo,2...

    wsdl详解(webservice)

    【WSDL详解(Webservice)】 Web服务描述语言(Web Services Description Language,简称WSDL)是一种基于XML的应用,主要用于描述Web服务的接口和其通信细节。WSDL文档定义了一组服务访问点,允许客户端通过这些点与...

    Myeclipse创建WebService实例-很好用.doc

    Myeclipse创建WebService实例-很好用.doc 验证成功

    webservice---HelloWorld

    NULL 博文链接:https://newleague.iteye.com/blog/815158

    WebServiceStudio-master

    【WebServiceStudio】是一款轻量级的Web服务测试工具,它允许开发者快速地测试SOAP和RESTful Web服务。这个名为"WebServiceStudio-master"的压缩包很可能包含了该工具的源代码、文档和其他相关资源,使得用户可以对...

    根据wsdl生成webservice服务端(3种方式)

    可以通过浏览器访问WSDL文件的URL来验证服务是否部署成功。 ### 总结 以上介绍了三种基于WSDL生成WebService服务端的方法,每种方法都有其特点和适用场景。`wsdl2java`命令简单直接,适用于命令行环境;SOAPUI工具...

    webservice复习-helloworld

    在本教程中,我们将探讨“webservice复习-helloworld”这个主题,它是一个基础的Web服务示例,帮助开发者理解和掌握Web服务的基本概念和实现。 首先,Web服务的核心标准是SOAP(Simple Object Access Protocol),...

Global site tag (gtag.js) - Google Analytics