基于API网关的用户权限管理服务
方案的核心思路
- 应用的HTTP接口定义在yapi内管理维护
- 在环境配置中,约定生产代表的code,如:prod,下面所有的配置都是上生产的
- auth服务维护
项目token-api定义-用户角色
的关系:- auth通过项目的token,从yapi中读取所有接口定义,作为casbin的策略要素
- auth提供一张表格(横轴:角色,纵轴:接口定义,中间:授权的checkbox),让管理员勾选
- 按项目,将表格转为casbin策略,提交db
- acl验证服务启动时,从db中load策略进内存
- API网关在
request-response
流程的路由转跳
前,加入以下过滤逻辑: - 从request报文中抽取
用户名(从head、cookie或参数中读),URI,Method
要素,提交给acl服务验证 - 验证通过就流程继续,否则反馈403
特点:
- 将
用户权限管理
提升到网关层,web层的服务不必再各自维护一套acl数据,开发者直接聚集功能实现 - 方案基于HTTP协议,不局限开发者的下游接口实现方式,爱用什么语言框架都行
- 接口定义在yapi中统一管理,即:接口文档只需要写1次
以上方案,博主在实际生产环境中上线验证过,较为稳定通用。请根据实际业务场景,自行改造适配。