跳转到主要内容

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.

本指南将引导企业管理员了解 Devin 中 SSO 的完整流程——从初始设置到 IdP 组配置——并说明在不使用 SCIM 的情况下,Devin 如何处理用户预配。 如需查看特定提供商的设置说明,请参阅 OktaAzure ADSAMLGeneric OIDC

1. 配置 SSO (单点登录)

创建你的 SSO 应用

在你的身份提供商 (Okta、Azure AD 或任何兼容 SAML/OIDC 的 IdP) 中创建一个应用,并将以下凭据提供给你的 Cognition 团队:
连接类型协议需提供的内容
OktaOIDC (Okta Workforce Identity)Okta 域名、客户端 ID、客户端密钥、作用域
Azure ADOIDC (Microsoft Entra ID)Azure AD 域名、客户端 ID、客户端密钥
SAMLSAML 2.0 (任何 IdP)登录 URL、X.509 签名证书
Generic OIDCOIDCDiscovery URL、客户端 ID、客户端密钥、作用域
你还应提供一个或多个已验证的电子邮件域名,这样 Devin 就能知道应信任你的 IdP 提供的哪些电子邮件地址。

设置完成后会发生什么

一旦 Cognition 团队拿到凭据,他们就会配置 SSO 连接。设置完成后:
  1. SSO 连接会关联到你的 Devin 企业
  2. 登录时自动加入企业 已启用——任何通过 SSO 进行身份验证的用户都会自动被添加到你的企业中
  3. 你的电子邮件域名会被注册为受信任域——只接受来自这些域名的电子邮件地址
  4. 基于组的角色分配 (RBAC) 已启用——登录时传送的 IdP 组可以映射到 Devin 角色
  5. 默认社交登录 (Google、GitHub) 会被禁用——SSO 将成为必需的身份验证方式

用户登录体验

  1. 用户访问你的 Devin URL
  2. 被重定向到已配置的 IdP (Okta、Azure AD 等)
  3. 用户按正常流程完成身份验证
  4. IdP 将用户信息和所属组信息发回 Devin
  5. Devin 会自动:
    • 如果这是用户首次登录,则为其创建账户 (即时预配)
    • 为其分配默认的 Enterprise 成员角色
    • 同步其 IdP 组成员关系——添加新组,移除不再适用的组
    • 在企业审计日志中记录此次登录

自助管理

以下功能可由企业管理员直接在 Devin Web 应用中使用。

IdP 组管理

设置 → 企业 → 身份提供商组
  • 查看所有通过用户登录同步的组
  • 将组分配到企业级角色 (例如:“Engineering-Admins”中的所有人都会获得 Admin 角色)
  • 将组分配到特定组织并授予特定角色 (例如:“Team-Backend”在 Backend 组织中拥有 Member 权限)
  • 在多个组织中批量添加或移除组
  • 查看每个组被分配到了多少个组织

成员管理

设置 → 企业 → 成员
  • 查看所有企业成员,包括其所属的 IdP 组
  • 通过电子邮件邀请新成员
  • 更新成员角色
  • 移除成员

自定义角色

设置 → 企业版 → 角色
  • 创建具有细粒度权限的自定义角色
  • 为单个用户或 IdP 组分配自定义角色
详情请参阅 自定义角色与 RBAC

自动化 API

Devin 提供了一个 V2 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

Devin 目前尚不支持 SCIM 协议。所有用户和组管理都通过 SSO 登录事件以及 Devin UI/API 完成。以下将说明这在实际使用中的具体含义。

用户预配:仅在登录时触发

使用 SCIMDevin (不使用 SCIM)
如何创建用户当用户被分配到应用时,IdP 会立即将创建用户的信息推送到应用用户只有在首次通过 SSO 登录后,才会在 Devin 中创建;或者通过 UI 或 API 手动邀请后才会创建
何时发生Admin 将应用分配给用户 → 用户会在几秒内出现Admin 将应用分配给用户 → 在用户登录之前,Devin 中不会有任何变化
预先预配用户在首次访问应用之前,账户就已准备就绪不会进行预先预配,除非 Admin 通过 Devin UI 或 API 明确邀请他们
为新员工办理入职时,Admin 可以选择提前邀请他们 (设置 → 企业 → 成员 → 邀请,或通过 API) ,也可以直接让他们在首次登录时自动完成预配。

用户停用:仅限手动

使用 SCIMDevin (不使用 SCIM)
如何移除用户IdP 停用/移除用户 → 应用立即禁用该用户在 IdP 中停用/移除用户,对 Devin 不会产生任何影响
离职处理离职员工会在几分钟内失去访问权限离职员工会继续保留访问权限,直到管理员在 Devin 中手动将其移除,且其会话自然过期
合规性自动满足合规要求——不会出现孤儿账户除非管理员同时维护两个系统,否则会有孤儿账户风险
这是最大的运维缺口。员工离职时,管理员必须另外在 Devin 中将其移除 (设置 → → 成员 → 移除,或通过 API) 。活跃会话会一直有效,直到自然过期——IdP 不会触发即时会话撤销。

组同步:仅在登录时同步,而非实时同步

使用 SCIM (组推送)Devin (不使用 SCIM)
同步时机IdP 实时推送组成员变更仅在用户登录时同步组信息
添加到组Admin 将用户加入组中 → 应用会立即反映Admin 将用户加入组中 → Devin 要等到用户下次登录时才会感知到
从组中移除Admin 将用户从组中移除 → 应用会立即反映Admin 将用户从组中移除 → Devin 在下次登录前仍会显示旧的成员关系
Source of truthIdP 始终是权威数据源IdP 仅在登录时才是权威数据源——两次登录之间可能出现偏差
如果管理员更改了某人的 IdP 组 (例如将其从工程组移到销售组) ,Devin 在该用户再次登录前都不会反映这一变化。在此期间,用户仍会保留原有的基于组的角色和组织访问权限。

SCIM 的内置替代方案

Devin 提供了多项功能,可覆盖 SCIM 的常见使用场景:
  1. 即时预配 — 用户首次通过 SSO 登录时会自动创建,并分配默认的 Enterprise 角色
  2. 每次登录时的全量组同步 — 每次用户登录时,Devin 都会对其 IdP 组执行一次完整 diff:添加新组、移除旧组
  3. 基于组的 RBAC — 你可以在 Devin 设置中将 IdP 组映射到 Enterprise 角色和组织访问权限,并在用户下次登录时生效
  4. 用于 automation 的 V2 API — 可通过脚本实现邀请、移除以及批量角色变更,以弥补预配/取消预配方面的不足
  5. 审计日志 — 每次登录都会被记录,便于了解哪些人访问过 Devin

3. 配置由 IdP 管理的组

如果你也在其他应用 (例如 Slack、Box) 中使用 SCIM,本节将说明 Devin 的组模型是如何运作的,以及如何正确配置你的 IdP。

背景:SCIM 组与 IdP 组

  • SCIM 组: 下游应用会告知 IdP 存在哪些组 (即 IdP 会“导入”这些组) 。应用是组结构的权威数据源。IdP 会将用户同步到这些由应用定义的组中。
  • IdP 组 (Devin 使用的方式) : IdP 是权威数据源。组在 IdP 的目录中定义,组成员关系会在登录时通过 SAML/OIDC 声明同步到 Devin。
由于 Devin 不使用 SCIM,你实际上已经处于“IdP 组”模式。关键在于确保你的 IdP 发送了正确的组,并在 Devin 中正确完成映射。

步骤 1:在 IdP 中定义组

在你的 IdP Admin Console 中 (以下示例使用 Okta) :
  1. 前往 Directory → Groups
  2. 创建与 Devin 访问级别相对应的组 (例如 Devin-EngineeringDevin-AdminsDevin-DataScience)
  3. 将用户分配到这些组
这些都是 IdP 原生组——谁属于哪个组,以你的 IdP 为准。

步骤 2:在 IdP 应用中配置组声明

必须在身份验证响应中包含这些组信息,以便 Devin 读取。

对于 SAML 连接

  1. 前往 Applications → [Devin App] → SAML Settings → Edit
  2. Group Attribute Statements 下添加:
    • 名称: groups
    • 筛选器: “开头为” → Devin- (或使用 “匹配正则表达式” 来匹配更复杂的模式)
  3. 这会告知 IdP 在 SAML 断言中包含匹配的组名

对于 OIDC 连接

  1. 前往 Applications → [Devin App] → Sign On → Edit
  2. OpenID Connect ID Token → Groups claim type 下,选择 “Filter”
  3. 将过滤器设置为匹配 Devin 组 (例如,“Starts with” → Devin-)
使用 Devin- 这样的过滤前缀,以便只发送相关组。无需发送组织中的每个 IdP 组。

步骤 3:在 Devin 中将组映射到角色和组织

登录时组信息成功传递后,请在 Devin 中进行映射。

在 Devin UI 中

  1. Settings → Enterprise → Identity Provider Groups
  2. 当任一组的成员登录后,该组会自动显示
  3. 点击某个组 → 为其分配企业级角色 (例如 Enterprise Admin 或自定义角色)
  4. 点击某个组 → 将其分配到特定组织,并授予相应的组织级角色

通过 API (用于预配置或自动化)

  • 在任何人登录前预先创建组:PUT /v2/enterprise/groups
  • 列出组及其组织归属:GET /v2/enterprise/groups

步骤 4:如果要从其他应用中的 SCIM 组迁移

如果你要将整体 IdP 策略从由 SCIM 管理的组,调整为在各个工具中由 IdP 管理的组 (不只是 Devin) :
  1. 在其他应用中停止导入 SCIM 组
    • 在 IdP 中:前往应用的 Provisioning → Integration 选项卡 → 取消选中“Import Groups”
    • 这样会使下游应用不再作为组的权威数据源
  2. 在 IdP 目录中创建对应的组
    • 前往 Directory → Groups,创建与下游应用中现有组相对应的组
    • 将用户分配到这些 IdP 原生组
  3. 配置组推送 (适用于支持该功能的应用) :
    • 在应用的 IdP 配置中:Push Groups 选项卡 → 按名称查找组 → 链接到现有的下游组
    • 这样会让 IdP 覆盖应用内部的成员关系,IdP 将成为唯一的权威数据源
    • Devin 不需要组推送,因为它会直接从登录断言中读取组信息
  4. 在其他应用中禁用 SCIM 组同步
    • 确保“Import Groups”保持关闭,以防止下游应用重新成为权威数据源
对于 Devin,无需迁移。只需确保已完成上述步骤 1–3 (即在你的 IdP 中定义组、配置声明,并在 Devin 中设置映射) 。

关键注意事项

如果某个组被重命名,Devin 会将其视为一个新组。旧组的角色映射不会自动继承——你需要在 Devin 的设置中重新配置新的组名。
用户被添加到映射到 Devin 的 IdP 组后,只有在登录后才会获得相应访问权限。
将用户从 IdP 组中移除后,其 Devin 访问权限不会立即被撤销。在用户下次登录时,Devin 会进行同步并移除过期的组成员身份。任何直接成员身份 (即在组之外分配的成员身份) 都不会受到影响。
IdP 中的组名必须与 Devin 识别到的名称完全一致。区分大小写。
Devin 不支持嵌套/层级组。如果 IdP 发送的是父组,子组成员不会自动包含在内。每个组都必须显式分配。

如果你不使用 SCIM,但又希望获得尽可能严格的控制,请采用以下方法:
1

配置你的 Identity Provider(权威数据源)

  1. 定义组:Devin-AdminsDevin-BackendDevin-Frontend
  2. 将用户分配到相应组
  3. 配置 SAML/OIDC 组声明,并将过滤条件设为“Starts with: Devin-
2

Devin 在每次登录时同步

当用户通过 SSO 登录时,Devin 会自动:
  • 如果是新用户,则自动创建该用户
  • 执行完整的组同步 (添加新组,移除失效组)
  • 立即应用组到角色和组到组织的映射
3

可选:使用 V2 API 实现自动化

设置一个定时任务来补齐 SCIM 的缺口:
  1. 从你的 IdP API 读取活跃用户
  2. GET /v2/enterprise/members 读取 Devin 成员
  3. 通过 POST /v2/enterprise/members/invite 邀请新员工
  4. 通过 DELETE /v2/enterprise/members/{user_id} 移除已离职员工
这样,即使不使用 SCIM,你也能实现推送式的预配和取消预配。

这能为你带来什么

  • 将你的 IdP 作为组结构和成员关系的唯一可信权威数据源
  • 每次登录时自动授予基于组的访问权限
  • 通过 API 驱动的预配/去预配来弥补原本通常由 SCIM 填补的空缺
  • 为所有登录和成员变更提供完整的审计记录

当前限制

  • 登录间的组实时同步 — 组仅在用户登录时更新
  • 取消预配后立即撤销会话 — 会话会一直保持有效,直到过期
  • 由 IdP 发起的生命周期事件 (如 suspend/reactivate) 暂不支持