文档章节

通过 Zuul 代理控制报表访问权限

YorkeCao
 YorkeCao
发布于 2017/07/17 11:48
字数 720
阅读 103
收藏 0

通过 Zuul 代理控制报表访问权限

在将 BI 报表集成到我们自己的门户网站时,可能需要根据登录门户用户的不同,让报表展示不同的数据。

很多 BI 报表工具支持通过 URL 参数为报表过滤器赋值,从而控制报表内容。

对于这类 BI 工具,可以使用该项目提供的思路进行控制。

这样做的动机可能是:

  • 不想在门户和报表工具中维护两套用户信息
  • 购买的 License 数量不足以和门户用户一一对应

项目地址: http://git.oschina.net/yorkecao/bi-proxy

主要技术

Spring Cloud Zuul。

Zuul 是 Netflix 开源出来的一个框架,提供动态路由、监控、弹性、安全等边缘服务。

Zuul 也被吸纳为 Spring Cloud 的一部分,可以与其他 Spring Cloud 组件轻松结合,携手解决微服务架构中的治理问题。

在本项目中,我们使用 Zuul 作报表工具的反向代理服务器,并在代理层执行权限控制逻辑。

项目架构

如图:

  • 报表工具所在的域不对外开放,只对 Zuul 反向代理服务器开放;用户要访问报表,必须经过代理器。
  • 代理器接收到报表请求后,先调用门户提供的权限控制接口,鉴权成功后拼上返回的过滤器参数,再进行转发动作。
  • 通过代理 URL 访问报表时,需同时将用户信息以 URL 参数的形式添加到链接中(key 为 token,在报表链接后加上 &token=usertoken)。代理会将报表 URL 及 token 传递给权限控制接口。
  • 权限控制接口负责自定义的权限管控逻辑,例如:先根据 token 获取用户信息;根据用户信息判断是否有报表访问权限;如果有报表访问权限则获取其需要设置的报表过滤器键值对(通过过滤器控制报表显示的内容)。

配置项

resources/ 目录下的 application.yml 文件中,配置 proxy 条目:

  • proxy.web-service-interface:权限控制接口

    由门户提供的 RESTful 接口,用于权限控制。

  • proxy.error-page-url:错误页面地址

    可选。当鉴权失败时重定向到的地址。没有配置时则显示文字提示。

  • proxy.bi-server-url:BI 服务器

    报表服务器地址。

  • proxy.bi-prefix:BI 报表前缀

    报表地址的前缀。代理只会对这些链接做过滤。

权限控制接口

Map<String, String> getFilterParams(String token, String reportUrl);

传入参数:

  • token:用户 token
  • reportUrl:要访问的报表 URL

返回值:

  • 过滤器 URL 参数的键值对

© 著作权归作者所有

共有 人打赏支持
YorkeCao
粉丝 6
博文 21
码字总数 9252
作品 0
绍兴
程序员
Spring Cloud学习:04路由网关(Zuul)

1 Zuul介绍 通过前几个核心组件,可以构建一个简略(不完善)的微服务架构: 在该架构中,我们的服务集群包含:内部服务Service A和Service B,他们都会注册与订阅服务至Eureka Server,而O...

寒武没有纪
2017/11/06
0
0
【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

【微服务】之七:轻松搞定SpringCloud微服务-API权限控制 Harries Blog™2017-12-210 阅读 httpSpringAppcatbeanAPIhttps 【微服务】轻松搞定SpringCloud微服务 目录 本系列为连载 文章 ,阅...

Harries Blog™
2017/12/21
0
0
springCloud(14):使用Zuul构建微服务网关-路由端点与路由配置详解

一、Zuul的路由端点 当@EnableZuulProxy与SpringBoot Actuator配合使用时,Zuul会暴露一个路由管理端点/routes。借助这个端点,可以方便、直观地查看以及管理Zuul的路由。 /routes端点的使用...

我爱大金子
2017/08/22
0
0
阿里云Kubernetes SpringCloud 实践进行时(3): API网关服务Zuul

简介 为了更好地支撑日益增长的庞大业务量,我们常常需要把服务进行整合、拆分,使我们的服务不仅能通过集群部署抵挡流量的冲击,又能根据业务在其上进行灵活的扩展。随着分布式的普及、服务...

osswangxining
05/25
0
0
架构设计:系统存储(19)——图片服务器:需求和技术选型(1)

1、概述 图片服务系统是各种针对C端系统常见的子系统,它的特点是存储规模大请求频度高,且单张图片的读请求远远高于写请求。后续几篇文章我们将从图片服务系统的需求分析开始,一起来讨论如...

yinwenjie
2017/01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GO冒泡,二分查找

package mainimport("fmt")func main() {var arr [5]int = [5]int{11,13,9,2,25}maopao(&arr)fmt.Println("arr = ", arr) //[2 9 11 13 25]findIndex := binaryFind(&arr, 0......

汤汤圆圆
30分钟前
1
0
工作2年半跳槽面试阿里,成功拿到offer,凭什么?

2015年刚毕业的我,进入了一家小小的公司实习工作,在学校学了三年软件开发的我,还是想去寻找一份互联网行业的工作,这样更能学以致用发挥自己的特长。一直到18年三月份,我辞掉已有的工作,...

java知识分子
35分钟前
1
0
讲述下:Linux的10个最危险的命令

导读 Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。这篇文章将会向你介绍十条命令,但你最好不要尝试着去使用。 当然,以下命令通常都...

问题终结者
39分钟前
1
0
分库分表后如何部署上线?

引言 我们先来讲一个段子 面试官:“有并发的经验没?” 应聘者:“有一点。” 面试官:“那你们为了处理并发,做了哪些优化?” 应聘者:“前后端分离啊,限流啊,分库分表啊。。” 面试官:...

Java烂猪皮
44分钟前
1
0
Redis源码阅读笔记-快速列表

快速列表 快速列表(quicklist)是由压缩列表(ziplist)组成的一个双向链表,链表中,每一个节点都是以压缩列表(ziplist)的结构保存。 在 Redis3.2 后加入的新数据结构,在列表键中取代了双向链...

Jian_Ming
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部