M2M 组织成员管理配置指南
本文档面向平台管理员、实施工程师和运维人员,介绍如何在 Code Bird Cloud 控制台中配置“第三方 M2M 应用管理组织成员”的能力。
如果你在排查旧系统为什么仍按角色名
admin判断组织管理员,请先阅读 管理员身份判定迁移说明。当前组织管理员的最新判定方式是成员关系字段is_admin。
如果你是第三方系统的开发工程师,请优先阅读:
本文档重点回答的是:
- 后台要怎么配,第三方应用才能在某个组织里管理成员
- 组织角色、组织权限、API 资源权限分别起什么作用
- 为什么“应用已经绑定组织了”,但接口还是会返回
403 - 如何检查某个组织下的 M2M 应用到底有没有真正拿到可用权限
一句话理解这套模型
要让某个第三方 M2M 应用能够管理某个组织下的成员,后台至少要完成这四步:
创建 M2M 应用
-> 准备组织角色模板
-> 给角色模板绑定可用 scope
-> 把应用绑定到目标组织并分配组织角色只有“绑定组织”还不够。
真正生效的是:
组织内应用 -> 组织角色 -> 角色绑定的 scope -> Token 中的 scope -> API 鉴权通过核心概念
1. 应用绑定组织
表示这个 M2M 应用可以在某个组织上下文里申请 Token。
如果应用没有绑定组织,即使它是一个合法的 M2M 应用,也无法用 organization_id 为该组织申请 Token。
2. 组织角色模板
组织角色模板是租户级的共享模板,可以分配给:
- 组织成员
- 组织中的 M2M 应用
角色名本身只是一个标签,比如:
adminmember-managerviewer
真正决定权限的是角色背后绑定的 scope。
3. 组织权限模板(Organization Scope)
这是组织内部语义的权限,比如:
manage:organizationsread:membersmanage:settings
当 M2M 应用申请组织 Scope Token 时,Token 中的 scope 来自这里。
4. API 资源权限(Resource Scope)
这是某个 API Resource 上定义的 scope,比如 Management API Resource 上的:
all
当 M2M 应用申请组织级 API 资源 Token 时,Token 中的 scope 来自这里。
5. 组织管理员
组织管理员是组织成员关系上的独立标记,不是第三方应用可操作的对象。
当前规则:
- 后台管理员可以设置和取消组织管理员
- 第三方 M2M 应用不能设置管理员
- 第三方 M2M 应用不能取消管理员
- 第三方 M2M 应用不能移除管理员
- 后台也不能把最后一个管理员取消掉或移除掉
推荐配置方式
如果你的目标是让第三方应用管理组织成员,推荐按以下方式设计:
- 使用一个专门的组织角色模板,例如
org-member-manager - 给这个角色模板配置成员管理所需 scope
- 把这个角色分配给目标组织中的目标 M2M 应用
不建议直接依赖角色名称,例如“角色名叫 admin 就应该能管成员”。
正确的判断方式应该是:
- 这个角色有没有绑定
manage:organizations - 或这个角色有没有绑定 Management API Resource 的
all
控制台配置步骤
第 1 步:创建 M2M 应用
导航路径:
控制台 -> 应用管理操作:
- 点击“新建应用”
- 选择类型
MachineToMachine - 填写应用名称和描述
- 创建后保存
Client ID和Client Secret
注意:
- 只有
MachineToMachine类型的应用才能使用client_credentials - 后续第三方系统会使用这个应用的
Client ID/Client Secret
第 2 步:准备组织角色模板
导航路径:
控制台 -> 组织模板操作建议:
- 新建一个组织角色模板,例如
org-member-manager - 为这个角色写清楚用途描述,例如“允许第三方系统管理组织普通成员”
建议不要直接复用语义不清晰的角色名,例如泛化的 admin。更推荐使用与业务能力对应的角色名。
第 3 步:为组织角色模板绑定权限
这一步是最关键的。
方式 A:绑定组织权限模板
在“组织模板 -> 角色模板 -> 管理权限”中,给角色模板分配组织权限模板。
如果你走的是组织 Scope Token 模式,至少要确保角色模板绑定了:
manage:organizations
方式 B:绑定 API 资源权限
在“组织模板 -> 角色模板 -> API 资源权限”中,给角色模板分配 Management API Resource 上的 scope。
如果你走的是组织级 API Resource Token 模式,至少要确保角色模板绑定了:
all
推荐做法
推荐优先使用 方式 B,即:
- 让第三方应用请求组织级 API Resource Token
- 组织角色模板上配置 Management API 的资源权限
原因:
- 更接近标准 API Resource 授权模型
- 权限来源更清晰
- 后续如果拆分更细粒度资源 scope,更容易演进
第 4 步:把应用绑定到目标组织
导航路径:
控制台 -> 组织管理 -> 编辑组织 -> 机器对机器应用操作:
- 点击“绑定应用”
- 选择需要接入的 M2M 应用
- 完成绑定
绑定完成后,这个应用才有资格用该组织的 organization_id 申请 Token。
如果没有这一步,请求 Token 时通常会出现:
access_denied应用未绑定到该组织
第 5 步:给这个组织中的应用分配组织角色
仍在:
控制台 -> 组织管理 -> 编辑组织 -> 机器对机器应用操作:
- 在应用列表中找到目标 M2M 应用
- 点击“管理角色”
- 给它分配前面创建好的组织角色模板
这一层关系是:
某个组织下的某个应用 -> 组织角色模板不是全局应用角色,也不是后台管理员角色。
第 6 步:验证成员管理能力是否真正生效
配置完成后,建议按下面的顺序验证。
检查 1:应用是否已经绑定组织
在组织编辑页的“机器对机器应用”标签中确认:
- 目标应用已经出现在列表里
检查 2:应用是否已经分配组织角色
确认:
- 该应用所在行的“组织角色”列已经有角色
检查 3:该组织角色是否绑定了正确的 scope
去“组织模板”里检查这个角色模板:
- 是否绑定了
manage:organizations - 或是否绑定了 Management API 的
all
检查 4:第三方系统拿到的 Token 是否带了 organization_id
如果第三方提供了解析后的 JWT,可以确认:
token_type = "m2m"organization_id = 目标组织 IDscope中包含manage:organizations或all
如果缺了这些字段,通常说明后台角色和 scope 没配完整。
组织成员页中的管理员功能
导航路径:
控制台 -> 组织管理 -> 编辑组织 -> 成员管理当前页面支持:
- 查看成员列表
- 查看成员是否为管理员
- 设置成员为管理员
- 取消成员管理员身份
- 给成员分配组织角色
- 移除普通成员
管理员保护规则
当前后台有两条硬限制:
- 不能移除最后一个组织管理员
- 不能取消最后一个组织管理员的管理员身份
这两条规则是为了保证每个组织始终有至少一名管理员。
推荐实施流程
建议平台管理员按这个顺序操作:
- 创建 M2M 应用
- 创建或选择组织角色模板
- 给组织角色模板绑定需要的 scope
- 创建组织或进入已有组织
- 绑定 M2M 应用到目标组织
- 给该组织中的应用分配组织角色
- 如有需要,在成员管理页设置组织管理员
- 交付
Client ID、Client Secret、organization_id给第三方系统 - 让第三方系统按接入文档调用接口验证
常见误区
误区 1:绑定了组织就一定能调用接口
不是。
绑定组织只代表这个应用具备“申请该组织上下文 Token”的资格,不代表一定有 API 权限。
还必须有:
- 组织角色
- 角色绑定的 scope
误区 2:角色名叫 admin 就一定有管理权限
不是。
系统真正看的是 scope,不是角色名。
如果 admin 这个角色模板没有绑定 manage:organizations 或 all,那第三方应用依然会 403。
误区 3:第三方应用可以维护组织管理员
不是。
当前实现里:
- 第三方应用可以查看管理员
- 不能设置管理员
- 不能取消管理员
- 不能移除管理员
常见故障排查
场景 1:请求 Token 时报“应用未绑定到该组织”
排查:
- 这个应用是否已经绑定到目标组织
- 请求里的
organization_id是否正确
场景 2:调用成员接口时报“组织上下文不匹配”
排查:
- 请求 Token 时传入的
organization_id - 调用 API 时 URL 中的组织 ID
这两个值必须完全一致。
场景 3:调用成员接口时报“权限不足”
排查:
- 应用是否在该组织下分配了组织角色
- 该组织角色是否绑定了
manage:organizations - 或该组织角色是否绑定了 Management API 的
all
场景 4:第三方应用无法移除某个成员
如果错误提示与管理员保护相关,说明目标成员是组织管理员。
处理方式:
- 由后台管理员先处理管理员身份
- 再决定是否允许该成员离开组织
与其他文档的关系
建议后台管理员按以下顺序阅读:
- 应用管理
- 组织模板
- 组织管理
- 本文档:M2M 组织成员管理配置指南
- M2M 组织成员管理接入指南
