1. 配置 SSO (单点登录)
创建你的 SSO 应用
你还应提供一个或多个已验证的电子邮件域名,这样 Devin 就能知道应信任你的 IdP 提供的哪些电子邮件地址。
设置完成后会发生什么
- SSO 连接会关联到你的 Devin 企业
- 登录时自动加入企业 已启用——任何通过 SSO 进行身份验证的用户都会自动被添加到你的企业中
- 你的电子邮件域名会被注册为受信任域——只接受来自这些域名的电子邮件地址
- 基于组的角色分配 (RBAC) 已启用——登录时传送的 IdP 组可以映射到 Devin 角色
- 默认社交登录 (Google、GitHub) 会被禁用——SSO 将成为必需的身份验证方式
用户登录体验
- 用户访问你的 Devin URL
- 被重定向到已配置的 IdP (Okta、Microsoft Entra ID 等)
- 用户按正常流程完成身份验证
- IdP 将用户信息和所属组信息发回 Devin
- Devin 会自动:
- 如果这是用户首次登录,则为其创建账户 (即时预配)
- 为其分配默认的 Enterprise 成员角色
- 同步其 IdP 组成员关系——添加新组,移除不再适用的组
- 在企业审计日志中记录此次登录
自助管理
IdP 组管理
- 查看所有通过用户登录同步的组
- 将组分配到企业级角色 (例如:“
Engineering-Admins”中的所有人都会获得 Admin 角色) - 将组分配到特定组织并授予特定角色 (例如:“
Team-Backend”在 Backend 组织中拥有 Member 权限) - 在多个组织中批量添加或移除组
- 查看每个组被分配到了多少个组织
成员管理
- 查看所有企业成员,包括其所属的 IdP 组
- 通过电子邮件邀请新成员
- 更新成员角色
- 移除成员
自定义角色
- 创建具有细粒度权限的自定义角色
- 为单个用户或 IdP 组分配自定义角色
自动化 API
2. 在不使用 SCIM 的情况下理解 Devin
用户预配:仅在登录时触发
为新员工办理入职时,Admin 可以选择提前邀请他们 (设置 → 企业 → 成员 → 邀请,或通过 API) ,也可以直接让他们在首次登录时自动完成预配。
用户停用:仅限手动
组同步:仅在登录时同步,而非实时同步
如果管理员更改了某人的 IdP 组 (例如将其从工程组移到销售组) ,Devin 在该用户再次登录前都不会反映这一变化。在此期间,用户仍会保留原有的基于组的角色和组织访问权限。
SCIM 的内置替代方案
- 即时预配 — 用户首次通过 SSO 登录时会自动创建,并分配默认的 Enterprise 角色
- 每次登录时的全量组同步 — 每次用户登录时,Devin 都会对其 IdP 组执行一次完整 diff:添加新组、移除旧组
- 基于组的 RBAC — 你可以在 Devin 设置中将 IdP 组映射到 Enterprise 角色和组织访问权限,并在用户下次登录时生效
- 用于 automation 的 V2 API — 可通过脚本实现邀请、移除以及批量角色变更,以弥补预配/取消预配方面的不足
- 审计日志 — 每次登录都会被记录,便于了解哪些人访问过 Devin
3. 配置由 IdP 管理的组
背景:SCIM 组与 IdP 组
- SCIM 组: 下游应用会告知 IdP 存在哪些组 (即 IdP 会“导入”这些组) 。应用是组结构的权威数据源。IdP 会将用户同步到这些由应用定义的组中。
- IdP 组 (Devin 使用的方式) : IdP 是权威数据源。组在 IdP 的目录中定义,组成员关系会在登录时通过 SAML/OIDC 声明同步到 Devin。
步骤 1:在 IdP 中定义组
- 前往 Directory → Groups
- 创建与 Devin 访问级别相对应的组 (例如
Devin-Engineering、Devin-Admins、Devin-DataScience) - 将用户分配到这些组
步骤 2:在 IdP 应用中配置组声明
对于 SAML 连接
- 前往 Applications → [Devin App] → SAML Settings → Edit
- 在 Group Attribute Statements 下添加:
- 名称:
groups - 筛选器: “开头为” →
Devin-(或使用 “匹配正则表达式” 来匹配更复杂的模式)
- 名称:
- 这会告知 IdP 在 SAML 断言中包含匹配的组名
对于 OIDC 连接
- 前往 Applications → [Devin App] → Sign On → Edit
- 在 OpenID Connect ID Token → Groups claim type 下,选择 “Filter”
- 将过滤器设置为匹配 Devin 组 (例如,“Starts with” →
Devin-)
步骤 3:在 Devin 中将组映射到角色和组织
在 Devin UI 中
- Settings → Enterprise → Identity Provider Groups
- 当任一组的成员登录后,该组会自动显示
- 点击某个组 → 为其分配企业级角色 (例如 Enterprise Admin 或自定义角色)
- 点击某个组 → 将其分配到特定组织,并授予相应的组织级角色
通过 API (用于预配置或自动化)
- 在任何人登录前预先创建组:
PUT /v2/enterprise/groups - 列出组及其组织归属:
GET /v2/enterprise/groups
步骤 4:如果要从其他应用中的 SCIM 组迁移
- 在其他应用中停止导入 SCIM 组:
- 在 IdP 中:前往应用的 Provisioning → Integration 选项卡 → 取消选中“Import Groups”
- 这样会使下游应用不再作为组的权威数据源
- 在 IdP 目录中创建对应的组:
- 前往 Directory → Groups,创建与下游应用中现有组相对应的组
- 将用户分配到这些 IdP 原生组
- 配置组推送 (适用于支持该功能的应用) :
- 在应用的 IdP 配置中:Push Groups 选项卡 → 按名称查找组 → 链接到现有的下游组
- 这样会让 IdP 覆盖应用内部的成员关系,IdP 将成为唯一的权威数据源
- Devin 不需要组推送,因为它会直接从登录断言中读取组信息
- 在其他应用中禁用 SCIM 组同步:
- 确保“Import Groups”保持关闭,以防止下游应用重新成为权威数据源
关键注意事项
IdP 中的组重命名
IdP 中的组重命名
如果某个组被重命名,Devin 会将其视为一个新组。旧组的角色映射不会自动继承——你需要在 Devin 的设置中重新配置新的组名。
添加到组并不意味着会立即获得 Devin 访问权限
添加到组并不意味着会立即获得 Devin 访问权限
用户被添加到映射到 Devin 的 IdP 组后,只有在登录后才会获得相应访问权限。
从组中移除并不意味着会立即失去 Devin 访问权限
从组中移除并不意味着会立即失去 Devin 访问权限
将用户从 IdP 组中移除后,其 Devin 访问权限不会立即被撤销。在用户下次登录时,Devin 会进行同步并移除过期的组成员身份。任何直接成员身份 (即在组之外分配的成员身份) 都不会受到影响。
组名必须精确匹配
组名必须精确匹配
IdP 中的组名必须与 Devin 识别到的名称完全一致。区分大小写。
不支持嵌套组
不支持嵌套组
Devin 不支持嵌套/层级组。如果 IdP 发送的是父组,子组成员不会自动包含在内。每个组都必须显式分配。
“类 SCIM”行为的推荐配置
1
配置你的 Identity Provider(权威数据源)
- 定义组:
Devin-Admins、Devin-Backend、Devin-Frontend等 - 将用户分配到相应组
- 配置 SAML/OIDC 组声明,并将过滤条件设为“Starts with:
Devin-”
2
Devin 在每次登录时同步
当用户通过 SSO 登录时,Devin 会自动:
- 如果是新用户,则自动创建该用户
- 执行完整的组同步 (添加新组,移除失效组)
- 立即应用组到角色和组到组织的映射
3
可选:使用 V2 API 实现自动化
设置一个定时任务来补齐 SCIM 的缺口:
- 从你的 IdP API 读取活跃用户
- 从
GET /v2/enterprise/members读取 Devin 成员 - 通过
POST /v2/enterprise/members/invite邀请新员工 - 通过
DELETE /v2/enterprise/members/{user_id}移除已离职员工
这能为你带来什么
- 将你的 IdP 作为组结构和成员关系的唯一可信权威数据源
- 每次登录时自动授予基于组的访问权限
- 通过 API 驱动的预配/去预配来弥补原本通常由 SCIM 填补的空缺
- 为所有登录和成员变更提供完整的审计记录
当前限制
- 登录间的组实时同步 — 组仅在用户登录时更新
- 取消预配后立即撤销会话 — 会话会一直保持有效,直到过期
- 由 IdP 发起的生命周期事件 (如 suspend/reactivate) 暂不支持

