在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于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客户端项目(占地方),也不想开telnet客户端...
2. `interfaceList.txt`:这是一个文本文件,很可能包含了预先定义好的Dubbo接口列表,用户可以选择其中的接口进行测试,也可以自定义添加新的接口。 3. `start_命令窗口版.exe`:这是Windows平台下的可执行程序,...
### dubbo对外提供和使用接口方法 #### 一、Dubbo简介 Dubbo是一个高性能、轻量级的开源服务框架,旨在提供高性能和透明化的RPC远程服务调用方案,是微服务架构的重要组成部分之一。它提供了面向接口代理的高性能...
本篇文章将深入讲解如何使用Dubbo进行Java接口的调用。 首先,理解Dubbo的核心概念: 1. **服务(Service)**:服务是业务逻辑的封装,它定义了服务的接口和协议,如`HelloService`,包含了一组`sayHello`这样的...
本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...
对于Dubbo接口测试,我们需要使用支持Dubbo协议的采样器,这通常是通过添加自定义插件实现的。 1. **Dubbo采样器**:JMeter本身并不内置对Dubbo的支持,但可以通过第三方插件如“JMeter Plugins”来扩展这一功能。...
DUBBO接口测试工具,不需要再搭建网关测试dubbo服务,简单方便。
对于Python环境,我们可以借助于像thrift、grpc这样的跨语言通信库来实现对Dubbo接口的调用。在Python中,通常需要先生成相应的客户端代码,然后通过这些代码与Dubbo服务端交互。测试时,我们需要关注服务的注册与...
帮助利用jmeter插件,继承dubbo,针对zookepper上的dubbo接口直接发起接口测试
本篇文章将详细探讨如何使用Maven的`maven-assembly-plugin`插件来打包Dubbo服务接口。 首先,我们要理解Maven的生命周期和构建过程。Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个...
要实现动态配置,我们需要一个用户界面或者API接口,允许管理员添加、修改或删除任务。这些任务的配置信息(如执行间隔、目标Dubbo或HTTP接口等)将被保存到数据库中。在SpringBoot应用启动时,或者当配置更新时,...
在本文档中,我们将探讨如何使用Apache JMeter进行Dubbo服务的性能测试,以及相关的环境部署和脚本开发。首先,我们了解Apache Dubbo是一个Java RPC框架,它提供了接口调用、智能容错、负载均衡和服务注册发现的核心...
【Dubbo接口UI测试工具】是一款专为Dubbo服务设计的图形化测试工具,它使得开发者和测试人员能够更方便地对Dubbo接口进行功能验证和性能测试,无需编写复杂的代码,只需简单配置Zookeeper的IP和端口号,就能直接与...
《Dubbo服务接口详解》 在分布式系统架构中,服务接口的设计与实现是至关重要的环节。Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,为开发者提供了强大的服务接口支持。本文将深入探讨Dubbo服务...
dubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filterdubbo filter
在IT行业中,接口测试是确保服务之间有效通信的关键步骤,特别是在分布式系统中,如使用了Dubbo框架构建的系统。Dubbo是一个高性能、轻量级的开源Java RPC框架,它致力于提供面向服务的治理方案,包括服务注册、发现...
本篇将详细介绍如何使用Python调用基于Dubbo协议的远程服务接口,从而帮助开发者更好地理解和学习Python如何与Dubbo接口交互。 首先,我们需要了解Dubbo协议的基础知识。Dubbo是由阿里巴巴开源的高性能RPC框架,它...
标题中的“nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用”意味着在Node.js环境中,开发者成功地实现了对Dubbo服务的RPC(远程过程调用)访问,利用了Dubbo协议的特性。Dubbo是阿里巴巴开源的一个高性能、轻量...
标题中的“dubbo.rar测试dubbo接口用jar包”表明这是一个与Dubbo相关的测试资源,主要包含用于测试Dubbo服务接口的JAR包。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,它提供了服务治理、远程调用、集群...
在自动测试中,针对dubbo接口进行mock的框架 原理 利用dubbo的扩展点自动包装,通过EasyMockClusterWrapper将原本的rpc请求改写为http请求转发到mock服务器返回我们对应mock结果 使用 1. 添加依赖 mvn clean package...