预配的作用
开始之前
- 已设置单点登录,且组织有已验证域名。预配只创建位于你的已验证域名的地址。
- 你是该组织的管理员。
开启
- 在组织设置中,打开用户预配(SCIM)并选择开启预配。复制基础 URL,即
https://api.screenrig.ai/scim/v2。它位于 API 的源上,而不是控制台的源。 - 在预配令牌下,选择创建令牌,输入令牌名称(例如
Entra)并确认。请立即复制令牌:srscim_后跟 43 个字符,仅显示一次。screenRIG 只保存哈希。
开启预配和创建令牌需要你的通行密钥或密码。单点登录会话也可作为 10 分钟内的近期登录,前提是你的提供者说明该人员的认证时间;否则控制台会要求该人员在提供者处重新登录。
一个组织最多持有五个令牌。要轮换令牌,请创建新令牌,将其粘贴到你的提供者,然后撤销旧令牌;预配持续运行。列表显示每个令牌的最近使用时间。关闭预配会使每个请求返回 403,且不会改变任何人的访问。
Microsoft Entra ID
- 打开你的企业应用(承载单点登录的那个),选择 Provisioning,并将 Provisioning Mode 设为 Automatic。
- 在 Admin Credentials 下,将基础 URL 输入为 Tenant URL,将令牌输入为 Secret Token。选择 Test Connection,然后选择 Save。
- 打开 Mappings、Provision Microsoft Entra ID Users。将
userPrincipalName映射到userName(当你的用户主体名称不是人员登录所用的地址时,改用mail),将mail映射到emails[type eq "work"].value,并让active保持默认值Switch([IsSoftDeleted], , "False", "True", "True", "False")。保留 Entra 提出的其他映射。screenRIG 使用工作电子邮件,没有则使用主电子邮件,再没有则使用userName;该地址必须位于已验证域名,并且是你的单点登录发送的地址。 - 保持 Provision Microsoft Entra ID Groups 为启用,以便按群组授予访问。
- 在 Settings 中,将 Scope 设为 Sync only assigned users and groups,然后在 Users and groups 下分配人员和群组。
- 将 Provisioning Status 设为 On 并保存。Entra 先运行首个周期,之后约每 40 分钟同步一次。Provision on demand 会立即同步一个人员或群组。
Okta
- 打开你的 screenRIG 应用。在 General 上,编辑 App Settings,并将 Provisioning 设为 SCIM。
- 打开 Provisioning、Integration、Edit。将基础 URL 输入为 SCIM connector base URL,将
userName输入为 Unique identifier field for users,勾选 Push New Users、Push Profile Updates 和 Push Groups,并将 Authentication Mode 设为 HTTP Header。在自定义 SCIM 应用中,将令牌粘贴到 HTTP Header 字段。如果 Okta 要求填写 API Token(Okta 的 SCIM 测试应用),请输入Bearer、一个空格和令牌。两种方式都可行。选择 Test Connector Configuration,然后选择 Save。 - 打开 To App、Edit,并启用 Create Users、Update User Attributes 和 Deactivate Users。保持 Sync Password 关闭:screenRIG 会忽略密码。
- 在 Sign On 上,将 Application username format 设为 Email。
- 在 Assignments 上分配人员和群组,并在 Push Groups 上推送你绑定的群组。
Okta 通过 active: false 停用人员,从不删除。
群组与项目
已预配的群组列在组织设置的用户预配(SCIM)下的已预配的群组中,附有成员数量和所绑定的项目。项目中可批准的人员绑定群组之前,群组不提供任何访问:
- 在项目中,打开访问权限,然后打开群组。任何成员都可以查看绑定;项目所有者、可批准的成员以及身为成员的组织管理员可以绑定群组。
- 在绑定群组下,选择一个群组和一个角色:成员(普通成员资格)或批准人(同时可以批准审核)。选择绑定群组。移除绑定会解除绑定。
绑定还可以把它授予的内容限定在屏幕文件夹和屏幕,与可以限定成员的屏幕范围相同:在绑定群组下选择整个项目或限定屏幕(批准人绑定只能指定文件夹)。一个人在项目中的屏幕是其各个绑定范围的并集,任何没有范围的绑定都会授予整个项目;只有当其批准人绑定覆盖了所有这些屏幕时,此人才能在这些屏幕上批准,因此某个文件夹的批准人加上整个项目的成员,会让此人成为整个项目的普通成员。预配绝不会降低手动授予的访问权限,并且只要此人创建的服务客户端仍然有效,就不会限制此人:每次这样的拒绝都会显示在用户预配的最近活动中,撤销这些客户端后,范围会在下一次同步时生效。绑定的范围是固定的;要更改,请移除该绑定并重新绑定该群组。
- 没有范围时,属于多个已绑定群组的人员获得其中最高的角色,审批人高于成员。
- 加入或离开群组会添加或移除成员资格。解除群组绑定,或在你的提供者中删除群组,会撤回它所授予的内容。
- 预配只移除它添加的内容。手动授予的成员资格保留;被群组提升为审批人的成员,离开该群组后恢复为原有角色。
- 一个组织跨其所有项目最多容纳 200 名成员,每人只计一次。被组织拒绝的人员会在预配事件中记为失败,其他内容不变。
- 群组只授予项目角色,绝不授予组织管理员。管理员能看到绑定和项目名称,看不到项目内容。
谁可以被预配
- 已验证域名下没有账户的地址会创建一个账户,不带密码。
- 没有密码或通行密钥、由你的组织管理,或所在组织要求单点登录的人员,会被接管并通过单点登录登录。
- 已有自己的登录方式且是你的组织某个项目成员的人员,仅为访问而关联,除非你的组织要求单点登录。预配管理他们对你的项目的访问,绝不管理其姓名、电子邮件或登录方式。
- 其他任何人都会被拒绝,并返回指明原因的错误:拥有自己登录方式但不是你的项目成员的账户、由其他组织管理的人员,以及 screenRIG 员工。请先邀请此类人员加入你的某个项目,预配随后会为访问而关联他们。
停用与 DELETE
active: false(通过 PUT 或 PATCH 发送)和 DELETE 都会结束人员的访问。active: true 会取消停用,如各表所述。
| 人员 | 停用 | DELETE |
|---|---|---|
| 由你的组织管理 | 账户被你的预配停用。会话和控制台令牌结束。项目成员资格及其负责的智能体被暂停,而非移除。群组授予的访问被收回 | 同上,且该人员不再被预配。账户不会被删除 |
| 仅为访问而关联 | 其对你的组织的项目的访问结束,会话也随之结束:群组授予的访问被收回,手动授予的成员资格先被保存,然后移除。账户及其登录方式仍归本人所有 | 同上,且该人员不再被预配。已保存的成员资格被丢弃 |
| 人员 | 重新启用(active: true) |
|---|---|
| 由你的组织管理 | 恢复账户,但仅限由你的预配造成的停用。成员资格及其负责的智能体恢复,群组再次授予访问。会话和控制台令牌不会恢复:该人员需再次通过单点登录登录。执行 DELETE 之后,对同一地址的 POST 会恢复账户,你的提供者下一次群组同步会再次授予群组访问 |
| 仅为访问而关联 | 在仍属于你的组织的项目中,按原样恢复已保存的成员资格,群组再次授予访问。已达 200 名成员上限的组织,或已达其套餐人数上限的项目,会拒绝恢复相应的成员资格,并记录一次失败。执行 DELETE 之后不保存任何内容:只有在受邀加入你的某个项目之后,该人员才会再次被预配 |
由你的预配以外的任何方停用的人员(例如 screenRIG 员工)保持停用状态:active: true 会失败并返回 400 mutability。人员拥有的项目绝不会被转移:已关联的人员保留对该项目的访问,受管理人员的项目则与其账户的其余内容一起保持原状,直至重新启用。如果其他人必须继续管理该项目,请在停用所有者之前转移其所有权。组织的最后一名管理员不能作为受管理人员被停用;请求会失败并返回 400 mutability,因此请先添加另一名管理员。
参考
基础 URL https://api.screenrig.ai/scim/v2。令牌放在 Authorization: Bearer srscim_TOKEN 中,也接受不带前缀的令牌。请求和响应为 application/scim+json;也接受 application/json。
| 方法 | 路径 | 备注 |
|---|---|---|
| GET | /ServiceProviderConfig, /ResourceTypes, /Schemas | 支持 Patch 和 filter。不支持 Bulk、sort、ETag 和密码更改 |
| GET | /Users, /Groups | filter、startIndex(从 1 开始)、count(默认 100,最多 200,0 只返回总数)、attributes、excludedAttributes |
| POST | /Users, /Groups | 201,附带 Location。409 uniqueness:userName 已预配,或 displayName 重复(不区分大小写) |
| GET, PUT, PATCH, DELETE | /Users/{id}, /Groups/{id} | DELETE 返回 204。群组的 PATCH 返回 204,给出 attributes 或 excludedAttributes 时返回 200 并附带该群组。不带 members 的群组 PUT 会保留其成员 |
过滤器由一到四个 attribute eq value 项组成,以 and 连接。值是带引号的字符串,对 active 也可以是 true 或 false。用户可按 userName(不区分大小写)、externalId(精确匹配)、id、emails 或 emails.value、displayName 和 active 过滤。群组可按 displayName、externalId、id 以及 members 或 members.value 过滤。其他任何内容返回 400 invalidFilter。
PATCH 按 Entra 和 Okta 发送操作的方式读取操作,带或不带 ?aadOptscim062020 均可。操作名称不区分大小写,布尔值可以是 true、false、"True" 或 "False"。操作可以省略 path,也可以使用带点的键,例如 {"name.givenName": "Ada"}。路径包括 emails[type eq "work"].value、members(添加、替换,以及带值数组的移除)和 members[value eq "<id>"](移除)。screenRIG 不使用的属性会被接受并忽略。
限制。 一个组织的所有令牌合计每分钟最多发送 600 个请求,不按地址计算,因为 Entra 和 Okta 共用源地址。超出限制时返回 429,并附带 Retry-After。每个地址每 10 分钟最多允许 30 次认证失败。
错误使用带有 scimType 的 SCIM 信封,例如 invalidFilter、uniqueness 或 mutability:
{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"], "status": "409", "scimType": "uniqueness", "detail": "…" }组织设置中的用户预配列出最近 500 个请求,保留 30 天,包括失败请求及其原因。有内容没有到达时,先查看这里。
故障排查
| 现象 | 原因与修复 |
|---|---|
| 401 | 令牌错误或已被撤销。按显示的内容原样粘贴,或创建新令牌 |
| 403 | 组织设置中已关闭预配 |
| 指出域名的拒绝 | 该人员的电子邮件不在已验证域名。检查 userName 和电子邮件映射,或验证该域名 |
409 uniqueness | userName 已预配,或已存在同名群组 |
400 mutability | 该人员是组织的最后一名管理员,或者是由你的预配以外的其他方将其停用,active: true 不会撤销这种停用 |
| 429 | 组织已用完每分钟 600 个请求。提供者会在 Retry-After 之后重试 |
| 已预配的人员无法登录 | 预配的地址与单点登录发送的地址不同 |
| 已预配的人员没有项目 | 他们所属的群组都没有绑定到项目 |
| 人员的范围没有变化 | 此人创建的服务客户端仍然有效(撤销后,范围会在下一次同步时生效),或者访问权限是手动授予的,预配绝不会降低它。这两种拒绝都会显示在用户预配的最近活动中 |
| 群组变更出现得很慢 | Entra 约每 40 分钟同步一次。请使用 Provision on demand |