Authing 是一个典型的 IDaaS。提供了多种认证方式和社会化登录方式。
实体
- 用户池:UserPool;
- 应用:Application;
- 连接身份源:Connection;
- 用户:User;
- 角色:Role;
- 分组:Group;
- 下级节点:ChildrenNodes;
- 组织:Org;
- 注册白名单:Whitelist;
- 资源:Resource;
- 策略:Policy;
- 授权:Assignment;
用户池
用户池是最高纬度的单位,每个用户池之间相互独立。
应用
对应 OIDC 中的概念就是 relying party。
连接身份源
Authing 的核心工作和 [[Dex]] 的一致,即作为中心节点连接多个 ID provider 和 relying party。而连接身份源就是这些 ID provider。
资源
资源是权限管理的对象。Authing 将其分为 3 这「资源类型」:数据、API、菜单。每个资源可以定义多个操作类型(actions)。
可以直观地看出:
- 菜单旨在控制显示哪些内容;
- API 旨在粗力度控制一个请求是否能被接收和处理;
- 数据旨在确定一个请求操作的对象是否能被操作。
但目前看来这个「资源类型」主要是一个语义上的概念,对策略管理的配置没有影响。
策略
一条策略是一个 resource 和多个 actions 的组合。
虽然资源是可以定义好的固定值,但是在策略配置时提供的依然是文本编辑(JSON)方式。即策略仅仅是规则,它与资源不是通过关系连接的。
授权
授权用来连接主体(用户、角色、组织其一)和策略。
关系图
erDiagram
UserPool ||--o{ Application : contains
Application }o--o{ Connection: bind
UserPool ||--o{ Connection : configures
UserPool ||--o{ User : contains
UserPool ||--o{ Role : contains
Role }o--o{ User : contains
UserPool ||--o{ Group : contains
Group }o--o{ User : contains
UserPool ||--o{ Org : contains
Org ||--o{ ChildrenNode: children
ChildrenNode ||--o{ ChildrenNode: children
Org }o--o{ User : members
ChildrenNode ||--o{ User: members
UserPool ||--o{ Whitelist : configures
UserPool ||--o{ Resource : configures
Resource ||--o{ Action : contains
UserPool ||--o{ Policy : configures
Policy }o..o{ Resource : bind
Policy }o..o{ Action : bind
UserPool ||--o{ Assignment : configures
Assignment }o--o{ User : target
Assignment }o--o{ Role : target
Assignment }o--o{ Group : target
Assignment }o--o{ Policy : uses