mirror of
https://gitee.com/ChinaLym/shoulder-platform.git
synced 2025-12-30 11:02:26 +00:00
shoulder-platform
USER-CENTER
用户中心,提供 注册、登录、注销、RBAC 权限管理、认证、授权
支持单点登录,Oauth2 给第三方授权,通过第三方 OIDC认证,通过第三方 Oauth2 登录
提供管理租户、appKey 等 API
分为以下模块
- Account
- 提供账户能力与管理,包含 注册、登录、注销、RBAC 权限管理、认证、授权
- Authentication
- 认证
- Authority
- 授权
- Audit
- 日志审计
领域模型
(个体/组织-组织信息)自然人0..1 - n 用户1 - n业务载体(如资产:卡、画像、外部站点信息、业务权限等)
用户 1 - n 角色 1 - n 各种角色信息
用户 1 - 1..n 操作员 1..n - 1 通行证 1 - 1..n 通行证别名(供外部或扩展认证机制)
操作员 - 操作权限
通行证 1 - 1 同行密码
权限相关:
依赖 RBAC 模型,业务规则由编码实现。
Why NOT ABAC
ABAC 与 RBAC 相比,可以动态管理操作所需属性、环境因素,业务场景举例
最近 15 天未出境 且 戴口罩 的 保安 可以通过 指纹+工牌 在 工作时间 进入 所属工作区 的 监控室
保安是 角色指纹、工牌是 认证令牌视力好是 属性,可以动态调整,如user.lastExitTime - now() > 15 && user.withMask工作时间所属工作区是环境因素,且可调整,如isWorkTime(now()) == true && resource.address == user.workplace进入是 动作监控室是 资源
通过ABAC实现动态的权限配置过于复杂。需要制定自己的解析语言,且每次判断都要解析规则,对程序的性能也造成严重的影响,即使大规模使用缓存,命中的概率也是非常的小,毕竟太多很多因素都是动态的,需要每次都对规则进行解析并计算。
- RBAC
- ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景
- 服务认证与鉴权(适合权限数量较少,如OpenAPI)
- 服务认证:accessToken + refreshToken。前端每10分钟检查一下 refreshToken 过期时间,如果发现即将过期,提前申请 refreshToken