关于接口访问权限另外一种方案的可行性想法

Blade 未结 2 1456
bluerose
bluerose 2020-09-13 23:34
悬赏:5

仔细研读了bladex关于接口访问权限的文档描述。

目前bladex提供了 内置角色、配置数据权限code、配置匹配路径的三种方案。匹配路径是最灵活且不需改动代码的方案,那么我在考虑

是否可以依据此方案把接口访问权限放置在gateway里做处理呢?逻辑大致为:

  1. gateway获取被访问的api路径

  2. 如果此路径在接口访问权限集合中(说明配置了访问权限),则继续匹配当前用户角色集合的api访问权限集合。如果在集合内则可以访问,否则就是无权限访问

这样做的好处是,各服务不再关心接口访问权限。完全由配置和网关的过滤完成,在实施的时候可以由业务或测试人员来完成数据权限配置,开发人员则可以脱离数据配置。

当然,我只是有此困惑,感觉方案也是可行的。还望老大指导解释一下。谢谢!

2条回答
  •  admin
    admin (楼主)
    2020-09-14 09:01

    我觉得鉴权可以放在网关,但是接口权限放在网关不是很合适,主要有以下几个原因:

     1. 接口权限需要访问数据库、结果集存入redis,那所有请求第一层都是通过网关,势必查询压力都放到了网关层面

     2. 网关层面为了提升性能,应该尽可能少地去处理数据库访问

     3. 若后续业务需求,要拓展接口权限,并且涉及到feign远程调用,那网关也必须引入,这无疑增加了网关都耦合度

    综上几个点,接口权限下放到各个服务,可以充分利用其分布式的特性,降低由接口权限查库带来的并发压力,同时每个服务都可以自定义不同的接口权限规则而无需影响其他服务跟着改动

    注:如果不需要在线配置的接口权限,只需要通过配置文件手动配置,那么放到网关,我觉得是没有问题的

提交回复