lym b86fa9d28b shoulder framework 0.8 4 周之前
..
README.md 2fbf79124a feat:初步适配shoulder 0.6 3 年之前
pom.xml b86fa9d28b shoulder framework 0.8 4 周之前

README.md

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实现动态的权限配置过于复杂。需要制定自己的解析语言,且每次判断都要解析规则,对程序的性能也造成严重的影响,即使大规模使用缓存,命中的概率也是非常的小,毕竟太多很多因素都是动态的,需要每次都对规则进行解析并计算。

gitee:六个高Star开源项目,让你更懂OAuth和单点登录