dubbo学习笔记 第九章dubbo服务调用的安全控制

      若是有看我这些笔记的人可能会以为我应该讲讲dubbo-admin项目对提供者和消费者的服务调用控制了,但我以为dubbo-admin这个东西部署起来很简单,不过里面确实也有一些bug,后面有时间给你们讲讲我碰到的bug,不过你们有没有发现咱们前面讲的dubbo是很容易由于暴露服务,而被随意消费者调用。如今我介绍一种经过zookeeper的ACL的权限控制来实现dubbo服务的权限控制。java

      首先,zookeeper必须做为注册中心,zookeeper能够理解为一个数据库,咱们前几节说的那些例子,在zookeeper没有加任何权限的状况下,是能够被随意的zookeeper客户端删除的。dubbo服务默认都是注册在zookeeper的一个/dubbo目录下,咱们须要对这个目录进行受权,才能保证数据不会随意被删除。数据库

如何受权呢,咱们能够在zookeeper客户端用以下命令对/dubbo目录授予crw权限:apache

1)增长一个认证用户
addauth digest 用户名:密码明文
eg. addauth digest srp:srp
2)设置权限
setAcl /path auth:用户名:密码明文:权限
eg. setAcl /dubbo auth:srp:srp:crw

 

这么目录若是没有密码就不会随意被zk客户端给修改,删除,dubbo要调用时要加以下配置,不然没有权限调用,在dubbo-provider.xml作以下修改:ide

<dubbo:registry protocol="zookeeper"  address="${dubbo.registry.address}" username="srp"  password="srp" client="curator"/>

其中username和password对应上的zk客户端上的用户名,密码, client="curator"我是改了zookeeper的java客户端,以前我调试不少次dubbo自带的zk客户端,并无成功调用,网上也说dubbo自带的zk客户端太老旧,很差用。.net

要调用这个客户端须要在pom.xml加上以下引用:调试

<dependency>
			<groupId>com.netflix.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>1.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-framework</artifactId>
			<version>2.5.0</version>
		</dependency>

总体配置完就能够运行了,若是权限有问题,会提示以下错误:code

 

至于username和password最终会传到xml

com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient里面,具体位置是:rem

相关文章
相关标签/搜索