整体设计
- 基于角色的权限控制(RBAC)
- 菜单(menu)下有多个权限集(permission set,简写ps)
- 权限集下关联接口(接口又称permission、api)
- 给角色(role)分配菜单、权限集(角色不能直接分配接口)
- 给角色分配用户(user)或客户端(client)
思考题: 张三登陆系统后, 调用某个接口时提示没有权限, 如何排查?
继承体系
- 角色体系分【创建体系】和【继承体系】
- 继承体系:
- 子角色自动拥有父角色权限
- 回收父角色权限自动回收子角色权限
- 平台预定义【平台(超级)管理员】和【租户(超级)管理员】、【系统管理员模板】
网关鉴权
在网关控制权限
示意图:
详细调用链:
权限注解
- 租户级的接口, 定义中必须包含{organizationId}
- 接口通过@Permission注解控制权限, 通常情况下分配权限后才能访问接口.
认证体系
- 平台的认证服务基于 Spring Security、Spring OAuth2、JWT 实现统一认证服务中心,支持 oauth2.0 的四种标准授权模式:授权码模式、简化模式、密码模式、客户端模式
- OAuth 授权介绍
模式 | 应用场景 | RFC文档 |
---|---|---|
授权码模式 | 前后端一体的web端登陆 | https://tools.ietf.org/html/rfc6749#section-4.1 |
简化模式 | 前后端分离的web端登陆 | https://tools.ietf.org/html/rfc6749#section-4.2 |
密码模式 | 直接调用rest api登陆, 如移动端app | https://tools.ietf.org/html/rfc6749#section-4.3 |
客户端模式 | client登陆, 如后台服务 | https://tools.ietf.org/html/rfc6749#section-4.4 |