文档章节

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

YorkeCao
 YorkeCao
发布于 2017/07/17 11:48
字数 720
阅读 61
收藏 0
点赞 0
评论 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
绍兴
程序员
springCloud(14):使用Zuul构建微服务网关-路由端点与路由配置详解

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

我爱大金子 ⋅ 2017/08/22 ⋅ 0

【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

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

Harries Blog™ ⋅ 2017/12/21 ⋅ 0

阿里云Kubernetes SpringCloud 实践进行时(3): API网关服务Zuul

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

osswangxining ⋅ 05/25 ⋅ 0

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

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

yinwenjie ⋅ 2017/01/16 ⋅ 0

Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】

在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备的最基本功能:路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能:过滤...

程序猿DD ⋅ 2017/09/25 ⋅ 0

《Spring Cloud Netflix官方文档》10. 使用 Sidecar支持多语言

原文链接 你有non-jvm语言也想使用Eureka,Ribbon和Config Server? Spring Cloud Netflix Sidecar灵感来自Netflix Prana,它包含一个简单的http api去获取给定服务的所有实例(主机和端口)。...

panhl ⋅ 2017/01/05 ⋅ 0

想飞の猫/FCat

FCat 全栈必备 FCat是基于Angular4+SpringCloud的企业级基础功能框架(户权限管理、区域管理、GIS地图、......),其核心设计目标是分离前后端、开发快速、学习简单、功能强大、不重复造轮子,...

想飞の猫 ⋅ 2017/10/18 ⋅ 0

Spring Cloud构建微服务架构—服务网关过滤器

过滤器作用 我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用提供的接口时,它们的访问权限往往都需要有一定的限制,系统并不会...

明理萝 ⋅ 06/11 ⋅ 0

基于资源的权限管理(Resource-Based Access Control)

什么是角色 当说到程序的权限管理时,人们往往想到角色这一概念。角色是代表一系列可执行的操作或责任的实体,用于限定你在软件系统中能做什么、不能做什么。用户帐号往往与角色相关联,因此...

沉默的懒猫 ⋅ 2016/07/04 ⋅ 1

springCloud(13):使用Zuul构建微服务网关-简介

一、为什么要使用微服务网关 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。如:一个电影购票的手机APP,可能会调用多个微服务,才能完...

我爱大金子 ⋅ 2017/08/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 28分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 31分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 32分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 32分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 33分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 34分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 36分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 41分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 47分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 48分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部