`

dubbo接口添加白名单——dubbo Filter的使用

 
阅读更多
在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。
dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实现dubbo接口的IP白名单。
扩展Filter
实现com.alibaba.dubbo.rpc.Filter接口:
[java] view plain copy
public class AuthorityFilter implements Filter { 
    private static final Logger LOGGER = LoggerFactory.getLogger(AuthorityFilter.class); 
 
    private IpWhiteList ipWhiteList; 
 
    //dubbo通过setter方式自动注入 
    public void setIpWhiteList(IpWhiteList ipWhiteList) { 
        this.ipWhiteList = ipWhiteList; 
    } 
 
    @Override 
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { 
        if (!ipWhiteList.isEnabled()) { 
            LOGGER.debug("白名单禁用"); 
            return invoker.invoke(invocation); 
        } 
 
        String clientIp = RpcContext.getContext().getRemoteHost(); 
        LOGGER.debug("访问ip为{}", clientIp); 
        List<String> allowedIps = ipWhiteList.getAllowedIps(); 
        if (allowedIps.contains(clientIp)) { 
            return invoker.invoke(invocation); 
        } else { 
            return new RpcResult(); 
        } 
    } 

注意:只能通过setter方式来注入其他的bean,且不要标注注解!
dubbo自己会对这些bean进行注入,不需要再标注@Resource让Spring注入,参见扩展点加载
配置文件
参考:调用拦截扩展
在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:
[plain] view plain copy
xxxFilter=com.xxx.AuthorityFilter 
修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter,如下:
[html] view plain copy
<dubbo:provider filter="xxxFilter" /> 
这样就可以实现dubbo接口的IP白名单功能了。

摘自:http://blog.csdn.net/mj158518/article/details/47379799
分享到:
评论

相关推荐

    dubbo接口测试调试工具

    前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...

    telnet dubbo接口测试工具

    2. `interfaceList.txt`:这是一个文本文件,很可能包含了预先定义好的Dubbo接口列表,用户可以选择其中的接口进行测试,也可以自定义添加新的接口。 3. `start_命令窗口版.exe`:这是Windows平台下的可执行程序,...

    dubbo 对外提供和使用接口方法

    ### dubbo对外提供和使用接口方法 #### 一、Dubbo简介 Dubbo是一个高性能、轻量级的开源服务框架,旨在提供高性能和透明化的RPC远程服务调用方案,是微服务架构的重要组成部分之一。它提供了面向接口代理的高性能...

    Dubbo调用java接口程序

    本篇文章将深入讲解如何使用Dubbo进行Java接口的调用。 首先,理解Dubbo的核心概念: 1. **服务(Service)**:服务是业务逻辑的封装,它定义了服务的接口和协议,如`HelloService`,包含了一组`sayHello`这样的...

    基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口.zip

    本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...

    这个是jmeter的使用测试dubbo接口的工具包,插件

    对于Dubbo接口测试,我们需要使用支持Dubbo协议的采样器,这通常是通过添加自定义插件实现的。 1. **Dubbo采样器**:JMeter本身并不内置对Dubbo的支持,但可以通过第三方插件如“JMeter Plugins”来扩展这一功能。...

    DUBBO接口测试工具

    DUBBO接口测试工具,不需要再搭建网关测试dubbo服务,简单方便。

    接口自动化测试框架——python版,支持HTTP,dubbo协议接口

    对于Python环境,我们可以借助于像thrift、grpc这样的跨语言通信库来实现对Dubbo接口的调用。在Python中,通常需要先生成相应的客户端代码,然后通过这些代码与Dubbo服务端交互。测试时,我们需要关注服务的注册与...

    jmeter-dubbo接口测试教程

    帮助利用jmeter插件,继承dubbo,针对zookepper上的dubbo接口直接发起接口测试

    maven打包dubbo服务接口(maven-assembly-plugin)

    本篇文章将详细探讨如何使用Maven的`maven-assembly-plugin`插件来打包Dubbo服务接口。 首先,我们要理解Maven的生命周期和构建过程。Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个...

    springboot+quartz集群:通过动态配置调度dubbo接口/http接口代码实现

    要实现动态配置,我们需要一个用户界面或者API接口,允许管理员添加、修改或删除任务。这些任务的配置信息(如执行间隔、目标Dubbo或HTTP接口等)将被保存到数据库中。在SpringBoot应用启动时,或者当配置更新时,...

    性能工具之Jmeter-Dubbo脚本开发(csdn)————程序.pdf

    在本文档中,我们将探讨如何使用Apache JMeter进行Dubbo服务的性能测试,以及相关的环境部署和脚本开发。首先,我们了解Apache Dubbo是一个Java RPC框架,它提供了接口调用、智能容错、负载均衡和服务注册发现的核心...

    Dubbo接口UI测试工具

    【Dubbo接口UI测试工具】是一款专为Dubbo服务设计的图形化测试工具,它使得开发者和测试人员能够更方便地对Dubbo接口进行功能验证和性能测试,无需编写复杂的代码,只需简单配置Zookeeper的IP和端口号,就能直接与...

    dubbo服务接口

    《Dubbo服务接口详解》 在分布式系统架构中,服务接口的设计与实现是至关重要的环节。Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,为开发者提供了强大的服务接口支持。本文将深入探讨Dubbo服务...

    dubbo filter

    dubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filter

    会员dubbo接口测试源码

    在IT行业中,接口测试是确保服务之间有效通信的关键步骤,特别是在分布式系统中,如使用了Dubbo框架构建的系统。Dubbo是一个高性能、轻量级的开源Java RPC框架,它致力于提供面向服务的治理方案,包括服务注册、发现...

    python 如何调用 dubbo 接口

    本篇将详细介绍如何使用Python调用基于Dubbo协议的远程服务接口,从而帮助开发者更好地理解和学习Python如何与Dubbo接口交互。 首先,我们需要了解Dubbo协议的基础知识。Dubbo是由阿里巴巴开源的高性能RPC框架,它...

    nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用.

    标题中的“nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用”意味着在Node.js环境中,开发者成功地实现了对Dubbo服务的RPC(远程过程调用)访问,利用了Dubbo协议的特性。Dubbo是阿里巴巴开源的一个高性能、轻量...

    dubbo.rar测试dubbo接口用jar包

    标题中的“dubbo.rar测试dubbo接口用jar包”表明这是一个与Dubbo相关的测试资源,主要包含用于测试Dubbo服务接口的JAR包。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,它提供了服务治理、远程调用、集群...

    dubbo-easy-mock:针对Dubbo接口的Mock解决方案

    在自动测试中,针对dubbo接口进行mock的框架 原理 利用dubbo的扩展点自动包装,通过EasyMockClusterWrapper将原本的rpc请求改写为http请求转发到mock服务器返回我们对应mock结果 使用 1. 添加依赖 mvn clean package...

Global site tag (gtag.js) - Google Analytics