文档章节

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

YorkeCao
 YorkeCao
发布于 2017/07/17 11:48
字数 720
阅读 109
收藏 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
第九章:路由网关(Zuul)的使用  

第九章:路由网关(Zuul)的使用 前言 介绍完分布式配置中心,结合前面的文章。我们已经有了一个微服务的框架了,可以对外提供api接口服务了。但现在试想一下,在微服务框架中,每个对外服务都...

DemonsI
10/16
0
0
springCloud(14):使用Zuul构建微服务网关-路由端点与路由配置详解

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

我爱大金子
2017/08/22
0
0
白话SpringCloud | 第九章:路由网关(Zuul)的使用

前言 介绍完分布式配置中心,结合前面的文章。我们已经有了一个微服务的框架了,可以对外提供api接口服务了。但现在试想一下,在微服务框架中,每个对外服务都是独立部署的,对外的api或者服...

oKong
10/15
0
0
【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

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

Harries Blog™
2017/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Gradle 提速:每天为你省下一杯喝咖啡的时间

摘要: ### 前言 作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如: ![](https://user-gold-cdn.xitu.io/2018/11/6/166e7021c0...

阿里云官方博客
6分钟前
0
0
在 PHPStorm 中如何对远程服务使用 xdebug 进行断点调试

1. 安装 xdebug 1.1. 下载、安装 ➜ ~ wget https://xdebug.org/files/xdebug-2.4.1.tgz➜ ~ tar zxf xdebug-2.4.1.tgz➜ ~ cd xdebug-2.4.1➜ ~ phpize➜ ~ ./configure --with-ph......

whoru
8分钟前
0
0
看完这篇文章还不懂Python装饰器?

1、必备 2.需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作、redis调用、监控API等功能。业务部门使用基础功能时,只需调用基础平台提供的功...

糖宝lsh
13分钟前
1
0
Bytom合约预编译

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在开发合约的过程中你们有没有遇到一些问题呢?比如编译合约的过程中不能...

比原链Bytom
15分钟前
1
0
supervisor安装配置

supervisor安装配置 安装 wget -c https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gztar -zxvf su......

jackmanwu
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部