分隔符必须是单个字符,且为以下之一::(冒号)、-(连字符)、_(下划线)、 (空格)或 &(和号)。默认值为 :(冒号)。
更改分隔符不会重命名现有的 SCIM 组。如果您更改了分隔符,还必须在您的身份提供商中更新组名称以使用新的分隔符。

映射

虽然特定说明可能因身份提供商而异,但这些映射显示了 LangSmith SCIM 集成所支持的内容:

用户属性

  1. LangSmith 不要求 userName
  2. 电子邮件地址是必需的
  3. 如果您的 displayName 不符合 名 姓 的格式,请使用计算表达式
  4. 为避免不一致,这应与云客户的 SAML NameID 断言匹配,或与自托管的 sub OAuth2.0 声明匹配。

组属性

  1. 组必须遵循组命名约定部分中描述的命名约定。 如果您的公司有组命名策略,您应该改为从 description 身份提供商属性映射,并根据组命名约定部分设置描述。

步骤 1 - 配置 SAML SSO(仅限云端)

SAML SSO 配置有两种情况:
  1. 如果您的组织已经配置了 SAML SSO,您应该跳过最初添加应用程序的步骤(从 Okta 集成网络添加应用程序 或 创建新的 Entra ID 应用程序集成),因为您已经配置了一个应用程序,只需要启用配置。
  2. 如果您是第一次与 SCIM 一起配置 SAML SSO,请首先按照说明设置 SAML SSO,然后 按照此处的说明启用 SCIM。

NameID 格式

LangSmith 使用 SAML NameID 来标识用户。NameID 是 SAML 响应中的必填字段,不区分大小写。 NameID 必须:
  1. 对每个用户都是唯一的。
  2. 是一个永不变的持久值,例如随机生成的唯一用户 ID。
  3. 在每次登录尝试时都完全匹配。它不应依赖于用户输入。
NameID 不应该是电子邮件地址或用户名,因为电子邮件地址和用户名更有可能随时间变化,并且可能区分大小写。 NameID 格式必须是 Persistent,除非您使用的是需要不同格式的字段,如电子邮件。

步骤 2 - 禁用 JIT 配置

在启用 SCIM 之前,请禁用即时(JIT)配置以防止自动和手动用户配置之间发生冲突。

为云端禁用 JIT

使用 PATCH /orgs/current/info 端点。对于区域性 SaaS 部署,请将请求发送到区域主机上的相同路径(eu.api.smith.langchain.com、apac.api.smith.langchain.com 或 aws.api.smith.langchain.com):

为自托管禁用 JIT

从 LangSmith chart 版本 0.11.14 开始,您可以使用 SSO 禁用自托管组织的 JIT 配置。要禁用,请设置以下值:

步骤 3 - 生成 SCIM 承载令牌

在自托管环境中,下面的完整 URL 可能看起来像 https://langsmith.yourdomain.com/api/v1/platform/orgs/current/scim/tokens(没有子域,注意 /api/v1 路径前缀)或 https://langsmith.yourdomain.com/subdomain/api/v1/platform/orgs/current/scim/tokens(有子域)- 有关更多详细信息,请参阅 ingress 文档。
为您的组织生成 SCIM 承载令牌。您的 IdP 将使用此令牌对 SCIM API 请求进行身份验证。请确保环境变量设置正确,例如:
请注意,SCIM 承载令牌值仅在此请求的响应中可用。存在以下附加端点:
  • GET /v1/platform/orgs/current/scim/tokens
  • GET /v1/platform/orgs/current/scim/tokens/{scim_token_id}
  • PATCH /v1/platform/orgs/current/scim/tokens/{scim_token_id}(仅支持 description 字段)
  • DELETE /v1/platform/orgs/current/scim/tokens/{scim_token_id}

步骤 4 - 配置您的身份提供商

如果您使用 Azure Entra ID(前 Azure AD)或 Okta,则有关于身份提供商设置的具体说明(请参阅 Azure Entra ID、Okta)。上面的要求和步骤适用于所有身份提供商。

Azure Entra ID 配置步骤

有关更多信息,请参阅 Microsoft 的文档。
在自托管安装中,oid JWT 声明用作 sub。 请参阅此 Microsoft Learn 链接 和相关配置说明了解详细信息。
步骤 1:在您的企业应用程序中配置 SCIM
  1. 使用特权角色(例如,全局管理员)登录 Azure 门户。
  2. 导航到您现有的 LangSmith 企业应用程序。
  3. 在左侧导航中,选择 管理 > 配置。
  4. 单击 入门。
步骤 2:配置管理凭据
  1. 在 管理凭据 下:
    • 租户 URL:
      • 自托管:<langsmith_url>/scim/v2
    • 密钥令牌:输入步骤 3 中生成的 SCIM 承载令牌。
  2. 单击 测试连接 以验证配置。
  3. 单击 保存。
步骤 3:配置属性映射 在 映射 下配置以下属性映射: 用户属性 将 目标对象操作 设置为 创建 和 更新(出于安全考虑,先禁用 删除):
  1. 用户的电子邮件地址必须存在于 Entra ID 中。
  2. 如果您的 displayName 不符合 名 姓 的格式,请使用 Join 表达式。
  3. 为避免不一致,这应与 SAML NameID 断言和 sub OAuth2.0 声明匹配。对于云中的 SAML SSO,唯一用户标识符(Name ID) 所需声明应为 user.objectID,Name 标识符格式 应为 persistent。
组属性 将 目标对象操作 仅设置为 创建 和 更新(出于安全考虑,先禁用 删除):
  1. 组必须遵循组命名约定部分中描述的命名约定。 如果您的公司有组命名策略,您应该改为从 description Microsoft Entra ID 属性映射,并根据组命名约定部分设置描述。
步骤 4:分配用户和组
  1. 在 应用程序 > 应用程序 下,选择您的 LangSmith 企业应用程序。
  2. 在 分配 选项卡下,单击 分配,然后选择 分配给人员 或 分配给组。
  3. 进行所需的选择,然后单击 分配 和 完成。
步骤 5:启用配置
  1. 在 配置 下将 配置状态 设置为 启用。
  2. 监视初始同步,确保用户和组正确配置。
  3. 验证后,为用户和组映射启用 删除 操作。
有关故障排除,请参阅 SAML SSO 常见问题解答。如果您在设置 SCIM 时遇到问题,请通过 support.langchain.com 联系 LangChain 支持团队。

Okta 配置步骤

您必须使用 Okta 生命周期管理产品。此产品层级是在 Okta 上使用 SCIM 所必需的。
支持的功能
  • 创建用户
  • 更新用户属性
  • 停用用户
  • 组推送(不支持重命名组)
  • 导入用户
  • 导入组
步骤 1:从 Okta 集成网络添加应用程序
如果您已经通过 SAML(云端)或 OAuth2.0 与 OIDC(自托管)配置了 SSO 登录,请跳过此步骤。
有关云,请参阅 SAML SSO 设置;有关自托管,请参阅 OAuth2.0 设置。 步骤 2:配置 API 集成
  1. 在“常规”选项卡中,确保 LangSmithUrl 已根据步骤 1 的说明填写。
  2. 在“配置”选项卡中,选择 集成。
  3. 选择 编辑,然后选择 启用 API 集成。
  4. 对于 API 令牌,粘贴您上面生成的 SCIM 令牌。
  5. 保持 导入组 选中。
  6. 要验证配置,请选择测试 API 凭据。
  7. 选择保存。
  8. 保存 API 集成详细信息后,左侧会出现新的设置选项卡。选择 到应用。
  9. 选择编辑。
  10. 为创建用户、更新用户和停用用户选择启用复选框。
  11. 选择保存。
  12. 在“分配”选项卡中分配用户和/或组。分配的用户将在您的 LangSmith 组中创建和管理。
步骤 3:配置用户配置设置
  1. 配置配置:在 配置 > 到应用 > 配置到应用 下,单击 编辑,然后选中 创建用户、更新用户属性 和 停用用户。
  2. 在 <应用程序名称> 属性映射 下,按如下所示设置用户属性映射,并删除其余的:
SCIM Okta 用户属性映射 步骤 4:推送组
Okta 不支持除组名本身以外的组属性,因此组名_必须_遵循组命名约定部分中描述的命名约定。
按照 Okta 的启用组推送说明配置要按名称或按规则推送的组。

其他身份提供商

其他身份提供商尚未经过测试,但根据其 SCIM 实现,可能可以正常工作。

SSO 组同步(替代方案)

SSO 组同步适用于已配置 SAML SSO(云端)或 OIDC(自托管)的企业版计划上的组织。联系销售了解更多信息。
SSO 组同步是SCIM 的更简单替代方案,适用于无法或不愿配置 SCIM 组推送的组织。LangSmith 不是从 IdP 将组推送到单独的同步间隔,而是在登录时直接从 SSO 令牌中的可配置声明读取组成员资格,并使用与 SCIM 相同的命名约定应用组织级别和工作空间级别的角色分配。

何时使用 SSO 组同步与 SCIM

SSO 组同步和 SCIM 在技术上可以共存(每个都只管理标记有其自身配置方法的身份),但我们建议为每个组织选择一种机制,而不是同时使用两种,以避免令人困惑的优先级行为。 当 IdP 管理员参与最少且可接受响应式(登录时)同步时,请选择 SSO 组同步。当需要主动配置/取消配置和近实时组成员资格更新时,请选择 SCIM。

配置

  1. 在您的 IdP 中:将用户的组成员资格添加到 SSO 令牌声明(默认声明名称:groups)。组名称必须遵循 SCIM 命名约定。
  2. 在 LangSmith 中:转到 设置 → 成员和角色 → SSO 配置 → SSO 组同步 并配置以下内容:
您还可以通过向 SSO 设置端点发送 PATCH 来通过 API 配置这些设置:
禁用 SSO 组同步不会移除现有访问权限。由 SSO 组配置的用户将保留其当前访问权限,直到他们下次登录。

配置您的 IdP 以发出组 SAML 属性(云端)

本节仅适用于企业版云。自托管客户在其 OIDC IdP 中直接配置组,请参阅自托管上的 SSO 组同步。
要使用户的组成员资格在登录时对 LangSmith 可见,您需要做两件事:
  1. 配置您的 IdP 的 SAML 应用程序以发出多值组属性。
  2. 在 Supabase 属性映射中添加一个匹配条目,以便该属性流向 JWT(数组 已选中)。
要求:
  • IdP 属性名称(例如,groups)必须同时匹配 Supabase 属性映射 条目和 组声明字段 值(默认 groups)。
  • 该属性必须是多值的(字符串列表),而不是单个分隔字符串。如果您的 IdP 仅支持单值属性,则需要为每个组发出一个属性语句。
  • 每个值必须是遵循 SCIM 命名约定的组名称。
  • 仅处理名称符合约定的组。LangSmith 会忽略不符合其命名约定的组,例如组织范围的目录组或应用分配组。您无需在 IdP 侧过滤掉这些组——发出所有组,LangSmith 将跳过不相关的组。
按 IdP 设置:
在 LangSmith SAML 应用程序中:
  1. 目录 → 配置文件编辑器 → 选择 LangSmith 应用程序的用户配置文件。
  2. 添加一个名为 groups 的自定义属性,类型 为 string array。
  3. 登录 → 编辑 SAML 设置并添加一个属性语句:
    • 名称:groups
    • 名称格式:未指定(或 Basic)
    • 过滤器:匹配正则表达式,使用 .* 发送所有组,或使用更严格的正则表达式(例如,^LS:.*)限制为 LangSmith 前缀的组。

组命名示例

组名称遵循 SCIM 命名约定。<工作空间角色> 段接受内置角色和自定义工作空间角色(按名称)。

行为

  • 命名约定:组名称遵循与 SCIM 相同的格式(例如,LS:Organization Admins 表示组织管理员,LS:Organization User:Production:Editor 表示工作空间范围)。完整格式请参阅组命名约定。分隔符通过 scim_group_name_separator 按组织配置,并且与 SCIM 共享。
  • 格式错误的组名称:不符合约定的组名称将被静默跳过(记录日志),并且不会阻止有效组的登录。
  • 登录门控:当要求匹配的组才能登录启用且 SSO 令牌包含零个匹配组时,登录被阻止。
  • 优先级:SSO 组同步不会修改 SCIM 来源的、手动分配的或 JIT 配置的成员资格。它对自己的分配具有完全权限,并根据令牌的组成员资格在每次登录时替换它们。
  • 组织管理员传播:如果用户从其组中获得组织管理员角色,他们将在所有工作空间中被授予工作空间管理员权限(与 SCIM 行为相同)。

注意事项

  • 取消配置滞后:与 SCIM(主动推送)不同,SSO 组同步仅在登录时更新。从 IdP 的组中移除的用户保留其现有的工作空间访问权限,直到他们下次登录 LangSmith。要求匹配的组才能登录门控通过在下次登录时完全阻止用户来缓解此问题。
  • 无追溯同步:更改角色映射或启用该功能不会更新现有用户,直到他们再次登录。
  • 需要命名约定:客户必须按照 SCIM 约定命名其 IdP 组。如果您的 IdP 组遵循不同的命名策略,使用基于 description 映射的 SCIM(请参阅组属性)可能更合适。