本指南将引导企业管理员了解 Devin 中 SSO 的完整流程——从初始设置到 IdP 组配置——并说明在不使用 SCIM 的情况下,Devin 如何处理用户预配。 如需查看特定提供商的设置说明,请参阅 Okta、Azure AD、SAML 或 Generic OIDC。Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
1. 配置 SSO (单点登录)
创建你的 SSO 应用
| 连接类型 | 协议 | 需提供的内容 |
|---|---|---|
| Okta | OIDC (Okta Workforce Identity) | Okta 域名、客户端 ID、客户端密钥、作用域 |
| Azure AD | OIDC (Microsoft Entra ID) | Azure AD 域名、客户端 ID、客户端密钥 |
| SAML | SAML 2.0 (任何 IdP) | 登录 URL、X.509 签名证书 |
| Generic OIDC | OIDC | Discovery URL、客户端 ID、客户端密钥、作用域 |
你还应提供一个或多个已验证的电子邮件域名,这样 Devin 就能知道应信任你的 IdP 提供的哪些电子邮件地址。
设置完成后会发生什么
- SSO 连接会关联到你的 Devin 企业
- 登录时自动加入企业 已启用——任何通过 SSO 进行身份验证的用户都会自动被添加到你的企业中
- 你的电子邮件域名会被注册为受信任域——只接受来自这些域名的电子邮件地址
- 基于组的角色分配 (RBAC) 已启用——登录时传送的 IdP 组可以映射到 Devin 角色
- 默认社交登录 (Google、GitHub) 会被禁用——SSO 将成为必需的身份验证方式
用户登录体验
- 用户访问你的 Devin URL
- 被重定向到已配置的 IdP (Okta、Azure AD 等)
- 用户按正常流程完成身份验证
- IdP 将用户信息和所属组信息发回 Devin
- Devin 会自动:
- 如果这是用户首次登录,则为其创建账户 (即时预配)
- 为其分配默认的 Enterprise 成员角色
- 同步其 IdP 组成员关系——添加新组,移除不再适用的组
- 在企业审计日志中记录此次登录
自助管理
IdP 组管理
- 查看所有通过用户登录同步的组
- 将组分配到企业级角色 (例如:“
Engineering-Admins”中的所有人都会获得 Admin 角色) - 将组分配到特定组织并授予特定角色 (例如:“
Team-Backend”在 Backend 组织中拥有 Member 权限) - 在多个组织中批量添加或移除组
- 查看每个组被分配到了多少个组织
成员管理
- 查看所有企业成员,包括其所属的 IdP 组
- 通过电子邮件邀请新成员
- 更新成员角色
- 移除成员
自定义角色
- 创建具有细粒度权限的自定义角色
- 为单个用户或 IdP 组分配自定义角色
自动化 API
| 操作 | API 端点 |
|---|---|
| 列出所有成员 | GET /v2/enterprise/members |
| 通过电子邮件批量邀请用户 | POST /v2/enterprise/members/invite |
| 移除成员 | DELETE /v2/enterprise/members/{user_id} |
| 批量更新成员角色 | PATCH /v2/enterprise/members/roles |
| 在不同角色之间迁移成员 | PATCH /v2/enterprise/members/migrate-roles |
| 列出所有角色 | GET /v2/enterprise/roles |
| 列出所有 IdP 组 | GET /v2/enterprise/groups |
| 预先创建 IdP 组 | PUT /v2/enterprise/groups |
| 获取组的组织分配情况 | GET /v2/enterprise/groups/{group_name} |
2. 在不使用 SCIM 的情况下理解 Devin
用户预配:仅在登录时触发
| 使用 SCIM | Devin (不使用 SCIM) | |
|---|---|---|
| 如何创建用户 | 当用户被分配到应用时,IdP 会立即将创建用户的信息推送到应用 | 用户只有在首次通过 SSO 登录后,才会在 Devin 中创建;或者通过 UI 或 API 手动邀请后才会创建 |
| 何时发生 | Admin 将应用分配给用户 → 用户会在几秒内出现 | Admin 将应用分配给用户 → 在用户登录之前,Devin 中不会有任何变化 |
| 预先预配 | 用户在首次访问应用之前,账户就已准备就绪 | 不会进行预先预配,除非 Admin 通过 Devin UI 或 API 明确邀请他们 |
用户停用:仅限手动
| 使用 SCIM | Devin (不使用 SCIM) | |
|---|---|---|
| 如何移除用户 | IdP 停用/移除用户 → 应用立即禁用该用户 | 在 IdP 中停用/移除用户,对 Devin 不会产生任何影响 |
| 离职处理 | 离职员工会在几分钟内失去访问权限 | 离职员工会继续保留访问权限,直到管理员在 Devin 中手动将其移除,且其会话自然过期 |
| 合规性 | 自动满足合规要求——不会出现孤儿账户 | 除非管理员同时维护两个系统,否则会有孤儿账户风险 |
组同步:仅在登录时同步,而非实时同步
| 使用 SCIM (组推送) | Devin (不使用 SCIM) | |
|---|---|---|
| 同步时机 | IdP 实时推送组成员变更 | 仅在用户登录时同步组信息 |
| 添加到组 | Admin 将用户加入组中 → 应用会立即反映 | Admin 将用户加入组中 → Devin 要等到用户下次登录时才会感知到 |
| 从组中移除 | Admin 将用户从组中移除 → 应用会立即反映 | Admin 将用户从组中移除 → Devin 在下次登录前仍会显示旧的成员关系 |
| Source of truth | IdP 始终是权威数据源 | IdP 仅在登录时才是权威数据源——两次登录之间可能出现偏差 |
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”行为的推荐配置
配置你的 Identity Provider(权威数据源)
- 定义组:
Devin-Admins、Devin-Backend、Devin-Frontend等 - 将用户分配到相应组
- 配置 SAML/OIDC 组声明,并将过滤条件设为“Starts with:
Devin-”
这能为你带来什么
- 将你的 IdP 作为组结构和成员关系的唯一可信权威数据源
- 每次登录时自动授予基于组的访问权限
- 通过 API 驱动的预配/去预配来弥补原本通常由 SCIM 填补的空缺
- 为所有登录和成员变更提供完整的审计记录
当前限制
- 登录间的组实时同步 — 组仅在用户登录时更新
- 取消预配后立即撤销会话 — 会话会一直保持有效,直到过期
- 由 IdP 发起的生命周期事件 (如 suspend/reactivate) 暂不支持
