基于API网关的用户权限管理服务

方案的核心思路

  1. 应用的HTTP接口定义在yapi内管理维护
    1. 在环境配置中,约定生产代表的code,如:prod,下面所有的配置都是上生产的
  2. auth服务维护项目token-api定义-用户角色的关系:
    1. auth通过项目的token,从yapi中读取所有接口定义,作为casbin的策略要素
    2. auth提供一张表格(横轴:角色,纵轴:接口定义,中间:授权的checkbox),让管理员勾选
    3. 按项目,将表格转为casbin策略,提交db
    4. acl验证服务启动时,从db中load策略进内存
  3. API网关在request-response流程的路由转跳前,加入以下过滤逻辑:
  4. 从request报文中抽取用户名(从head、cookie或参数中读),URI,Method要素,提交给acl服务验证
  5. 验证通过就流程继续,否则反馈403

特点:

以上方案,博主在实际生产环境中上线验证过,较为稳定通用。请根据实际业务场景,自行改造适配。

参考