通过 Zuul 代理控制报表访问权限
博客专区 > YorkeCao 的博客 > 博客详情
通过 Zuul 代理控制报表访问权限
YorkeCao 发表于6个月前
通过 Zuul 代理控制报表访问权限
  • 发表于 6个月前
  • 阅读 40
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 为不想维护多套用户信息或购买 License 数量不足情景下的报表访问权限控制提供解决思路。

通过 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 参数的键值对
标签: BI Zuul
共有 人打赏支持
粉丝 6
博文 21
码字总数 9252
×
YorkeCao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: