以编程方式使用文档

本页面涵盖 LangSmith 中的用户管理功能,包括访问控制、身份验证和自动用户配置:

  • - 设置访问控制:配置基于角色的访问控制 (RBAC) 来管理工作区内的用户权限,包括创建自定义角色并将其分配给用户。
  • - SAML SSO(企业版):为使用 SAML 2.0 的企业客户设置单点登录身份验证,包括配置流行的身份提供者。
  • - SCIM 用户配置(企业版):使用 SCIM 在您的身份提供者和 LangSmith 之间自动配置和取消配置用户。

设置访问控制

LangSmith 依靠 RBAC 来管理 工作区内的用户权限。这允许您控制谁可以访问您的 LangSmith 工作区以及他们可以在其中做什么。拥有 workspaces:manage 权限的用户可以管理工作区设置,而拥有 workspaces:manage-members 权限的用户可以添加、删除和更新工作区成员。内置的工作区管理员角色包含这两项权限。

如需查看工作区角色及其权限的完整参考,请参阅 基于角色的访问控制 指南。如需了解每个角色可以执行的具体操作,请参阅 组织和工作区操作参考.

创建角色

默认情况下,LangSmith 提供一组系统角色:

  • - Admin:对工作区内的所有资源拥有完全访问权限。
  • - Viewer:对工作区内的所有资源拥有只读访问权限。
  • - Editor: has full permissions except for workspace management (adding/removing users, changing roles, configuring service keys).

如果这些不符合您的访问模式, Organization Admins 可以创建自定义角色来满足您的需求。

要创建角色,请导航到 **角色** 标签页,在 **成员和角色** 部分的 组织设置页面中。请注意,您创建的新角色可以在组织内的所有工作区中使用。

点击 **创建角色** 按钮来创建新角色。将打开 **创建角色** 表单。

!创建角色

为您需要控制访问权限的不同 LangSmith 资源分配权限。

为用户分配角色

设置好角色后,您可以将其分配给用户。要为用户分配角色,请导航到 Workspace members 中的 Workspaces 部分 组织设置页面

每个用户都有一个 **角色** 下拉菜单,您可以用它来分配角色。

!分配角色

您还可以使用指定角色邀请新用户。

!邀请用户

为您的组织设置 SAML SSO

单点登录(SSO)功能 **适用于企业版云** 客户可以通过单一身份验证源访问 LangSmith。这允许管理员集中管理团队访问权限,并保持信息更加安全。

LangSmith 的 SSO 配置基于 SAML(安全断言标记语言)2.0 标准构建。SAML 2.0 支持将身份提供者(IdP)连接到您的组织,以获得更简单、更安全的登录体验。

SSO 服务允许用户使用一组凭据(例如,姓名或电子邮件地址和密码)访问多个应用程序。该服务仅对用户被授予权限的所有应用程序进行一次身份验证,并在用户在相同会话中切换应用程序时消除进一步提示。SSO 的优势包括:

  • - 简化组织所有者的跨系统用户管理。
  • - 使组织能够执行其自己的安全策略(例如,MFA)。
  • - 消除最终用户需要记住和管理多个密码的需求。通过允许在多个应用程序的单一访问点登录,简化了最终用户体验。

实时配置(JIT)

LangSmith 在使用 SAML SSO 时支持实时配置。这允许通过 SAML SSO 登录的人自动以成员身份加入组织和所选工作区。 在 SSO 组织中管理用户访问.

登录方法和访问权限

完成组织的 SAML SSO 配置后,用户将能够通过 SAML SSO 以及 其他登录方式, such as username/password or Google Authentication:

  • - 通过 SAML SSO 登录时,用户只能访问配置了 SAML SSO 的相应组织。
  • - 将 SAML SSO 作为唯一登录方式的用户没有 个人组织.
  • - 通过任何其他方式登录时,用户可以访问配置了 SAML SSO 的组织以及他们所属的任何其他组织。

强制仅使用 SAML SSO

要确保用户只能在通过 SAML SSO 登录时访问组织(不能使用其他方法),请勾选 **仅通过 SSO 登录** 复选框并点击 **保存**一旦发生此情况,通过非 SSO 登录方式访问组织的用户需要使用 SAML SSO 重新登录。可以通过取消选择复选框并点击将此设置切换回允许所有登录方式。 **保存**.

有关故障排除,请参阅 SAML SSO 常见问题。如果您在设置 SAML SSO 时遇到问题,请通过以下方式联系 LangChain 支持团队 support.langchain.com.

前提条件

  • - 您的组织必须使用企业计划。
  • - 您的身份提供商 (IdP) 必须支持 SAML 2.0 标准。
  • - 只有 Organization Admins 才能配置 SAML SSO。

有关将 SCIM 与 SAML 结合使用进行用户配置和取消配置的说明,请参阅 SCIM 设置.

初始配置

  1. 在您的 IdP 中:使用以下详细信息配置 SAML 应用程序,然后复制元数据 URL 或 XML 以供步骤 3 使用。

  1. 单点登录 URL(或 ACS URL):

2. 受众 URI(或 SP 实体 ID): 3. Name ID 格式:电子邮件地址。 4. 应用程序用户名:电子邮件地址。 5. 必需声明: subemail.

  1. 在 LangSmith 中:转到 **设置** -> **成员和角色** -> **SSO 配置**。填写必填信息并提交以激活 SSO 登录:
  1. 填写以下任一内容: SAML metadata URL or SAML metadata XML.
  2. 选择 Default workspace roleDefault workspaces。通过 SSO 登录的新用户将被添加到具有所选角色的指定工作区。
  • - Default workspace roleDefault workspaces 可以编辑。更新的设置将仅适用于新用户,不适用于现有用户。
  • - (即将推出) SAML metadata URLSAML metadata XML are editable. This is usually only necessary when cryptographic keys are rotated/expired or the metadata URL has changed but the same IdP is still used.

Supabase 属性映射

LangSmith 云使用 Supabase 作为 SAML SSO 后端。Supabase 传递一组标准的 SAML 属性(例如 emailsub)自动传递到用户的 JWT。您的 IdP 发出的任何其他非标准 SAML 属性(例如, groups 用于 SSO 组同步)必须通过 Supabase 显式转发,LangSmith 才能读取。

属性流 (1:1):

  1. **IdP**:发出带有配置名称的 SAML 属性(例如, groups).
  2. **Supabase**:仅当属性名称出现在 **Supabase 属性映射** 表中时才将属性转发到用户的 JWT。标准属性会自动转发;非标准属性除非明确列出,否则会被丢弃。
  3. **LangSmith**:按名称读取 JWT 声明(例如, SSO 组同步's **Groups 声明字段**).

属性名称在整个过程中保持一致:IdP 属性名称、Supabase 属性映射条目和下游 LangSmith 设置都使用相同的字符串。

配置

In **设置** → **成员和角色** → **SSO 配置**,滚动到 **Supabase 属性映射** 部分,为每个要转发的非标准属性添加一行:

描述
**属性名称**IdP 发出的 SAML 属性名称。必须与 LangSmith 下游期望的 JWT 声明名称匹配(对于 SSO 组同步,这匹配 **Groups 声明字段** 值)。
**数组**如果属性是多值的(字符串列表),请选中此项。对于标量(单值)属性,请勿选中。例如,对于 groups请选中此项;对于 full_name.

点击 **添加行** 添加每个其他属性,然后 **保存**。空的映射表意味着没有非标准属性流经 JWT。

Entra ID (Azure)

有关更多信息,请参阅 Microsoft 的 文档.

步骤 1:创建新的 Entra ID 应用程序集成

  1. 使用特权角色登录 Azure 门户 (例如, Global Administrator)。在左侧导航窗格中,选择 Entra ID service.
  1. 导航到 **企业应用程序** ,然后选择 **所有应用程序**.
  1. 点击 **创建您自己的应用程序**.
  1. 在 **创建您自己的应用程序** window:
  1. 为您的应用程序输入名称(例如, LangSmith).
  2. 选择 **集成您在库中找不到的任何其他应用程序(非库)**.
  1. 点击 **创建**.

第 2 步:配置 Entra ID 应用程序并获取 SAML 元数据

  1. 打开您创建的企业应用程序。
  1. 在左侧导航中,选择 **管理** > **单一登录**.
  1. 在单一登录页面上,点击 **SAML**.
  1. 更新 **基本 SAML 配置**:
  1. Identifier (Entity ID):
  1. Reply URL (Assertion Consumer Service URL):
  1. 保留 Relay State, Logout Url,然后 Sign on URL empty.
  2. 点击 **保存**.
  1. 确保所需声明存在 **命名空间**: http://schemas.xmlsoap.org/ws/2005/05/identity/claims:
  1. sub: user.objectid.
  2. emailaddress: user.userprincipalname or user.mail (如果使用后者,确保所有用户都填写了 Email 字段在 Contact Information).
  3. (可选)有关 SCIM,请参阅 设置文档 了解具体说明 Unique User Identifier (Name ID).
  1. 在基于 SAML 的登录页面上的 **SAML 证书**,复制 **应用联合元数据 URL**.

第 3 步:设置 LangSmith SSO 配置

按照以下说明进行操作 初始配置 中的 Fill in required information 步骤,使用上一步中的元数据 URL。

第 4 步:验证 SSO 设置

  1. Assign the application to users/groups in Entra ID:
  1. 选择 **管理** > **用户和组**.
  1. 点击 **Add user/group**.
  1. 在 **添加分配** window:
  1. 在 **用户**,点击 **未选择任何项**.
  2. 搜索要分配到企业应用程序的用户,然后点击 **选择**.
  3. 验证用户已选中,然后点击 **分配**.
  1. 让用户通过以下位置的唯一登录 URL 登录 **SSO 配置** 页面,或转到 **管理** > **单一登录** 并选择 **测试(应用名称)单点登录**.

Google

有关更多信息,请参阅 Google 的 文档.

第 1 步:创建并配置 Google Workspace SAML 应用

  1. 确保您已登录具有适当权限的管理员账户。
  1. 在管理控制台中,转到 **菜单** -> **应用** -> **Web 和移动应用**.
  1. 点击 **添加应用** 然后 **添加自定义 SAML 应用**.
  1. 输入应用名称,并可选择上传图标。点击 **继续**.
  1. 在 Google 身份提供商详细信息页面上,下载 **IDP 元数据** 并将其保存以供第 2 步使用。点击 **继续**.
  1. Service Provider Details 窗口中,输入:
  1. ACS URL:
  1. Entity ID:
  1. Start URLSigned response 框留空。
  2. Name ID 格式设置为 EMAIL 并保留 Name ID 为默认值(Basic Information > Primary email).
  3. 点击 Continue.
  1. 使用 Add mapping 确保所需声明存在:
  2. Basic Information > Primary email -> email

第 2 步:设置 LangSmith SSO 配置

按照 初始配置 中的说明进行操作, Fill in required information 步骤,使用上一步的 IDP metadata 作为元数据 XML。

第 3 步:在 Google 中启用 SAML 应用

  1. Menu -> Apps -> Web and mobile apps
  1. 下选择 SAML 应用 User access.
  1. 启用服务:
  1. 若要为组织中的所有人启用服务,请点击 On for everyone,然后点击 Save.
  1. 若要为组织单位启用服务:
  1. 在左侧,选择组织单位,然后 On.
  2. 若服务状态设置为 Inherited 且您希望即使父级设置更改也保留更新后的设置,请点击 Override.
  3. 若服务状态设置为 Overridden,请点击 Inherit 恢复为与父级相同的设置,或点击 Save 保留新设置,即使父级设置更改。
  1. 若要为跨组织单位或组织单位内的用户组启用服务,请选择一个访问群组。详情请参阅 使用群组自定义服务访问.
  1. 确保您的用户用于登录 LangSmith 的电子邮件地址与用于登录 Google 域的电子邮件地址一致。

步骤 4:验证 SSO 设置

让有访问权限的用户通过 **SSO 配置** 页面上的唯一登录 URL 登录,或前往 Google 中的 SAML 应用程序页面并点击 **测试 SAML 登录**.

Okta

支持的功能

  • - IdP 发起 SSO(单点登录)
  • - SP 发起 SSO
  • - 即时配置
  • - 仅强制 SSO

配置步骤

更多信息,请参阅 Okta 的 文档.

步骤 1:创建并配置 Okta SAML 应用程序

通过 Okta 集成网络(推荐)
  1. 登录 Okta.
  2. 在右上角,选择管理。从管理区域看不到此按钮。
  3. 选择 Browse App Integration Catalog.
  4. 找到并选择 LangSmith 应用程序。
  5. 在应用程序概述页面上,选择添加集成。
  6. 保留 ApiUrlBase empty.
  7. 填写 AuthHost:

1. (可选,如果计划使用 SCIM 也)填写 LangSmithUrl: 1. 在应用程序可见性下,保持该复选框未选中状态。 1. 选择下一步。 1. 选择 SAML 2.0. 1. 填写 Sign-On Options: - Application username format: Email - Update application username on: Create and update - Allow users to securely see their password:保留 **未选中**. 1. 复制 **元数据 URL** 从 **登录选项** 页面以在下一步使用。

通过自定义应用程序集成

  1. 以管理员身份登录 Okta,然后前往 **Okta 管理控制台**.
  1. 在 **应用程序** > **应用程序** 点击 **创建应用程序集成**.
  1. 选择 **SAML 2.0**.
  1. 输入 App name (e.g., LangSmith)并可选地输入 **应用程序徽标**,然后点击 **下一步**.
  1. 在 **配置 SAML** page:
  1. Single sign-on URL (ACS URL)。保持 Use this for Recipient URL and Destination URL checked:
  1. Audience URI (SP Entity ID):
  1. Name ID format: **持久化**.
  2. Application username: email.
  3. 将其他字段留空或设置为其默认值。
  4. 点击 **下一步**.
  1. 点击 **完成**.
  1. 复制 **元数据 URL** 从 **登录** 页面以在下一步使用。

第 2 步:设置 LangSmith SSO 配置

请按照以下位置的说明操作 初始配置 中的 **填写必填信息** 步骤,使用上一步中的元数据 URL。

第 3 步:在 Okta 中为 LangSmith 分配用户

  1. 在 **应用程序** > **应用程序**中,选择第 1 步创建的 SAML 应用程序。
  2. 在 **分配** 选项卡中,点击 **分配** 然后选择 **分配给人** or **分配给组**.
  3. 进行所需的选择,然后 **分配** 和 **完成**.

第 4 步:验证 SSO 设置

让有访问权限的用户通过以下位置的唯一登录 URL 登录 SSO Configuration 页面,或让用户从其 Okta 仪表板中选择应用程序。

SP 启动的 SSO

配置服务提供商启动的 SSO 后,用户可以使用唯一的登录 URL 登录。您可以在 LangSmith UI 的 **组织成员和角色** 然后 **SSO 配置**.

为您的组织设置 SCIM

跨域身份管理系统 (SCIM) 是一个允许自动化用户配置的开放标准。使用 SCIM,您可以自动配置和取消配置 LangSmith 中的用户 组织和workspace,使用户访问与您组织的身份提供程序保持同步。

SCIM 消除了手动管理用户的需求,并确保用户访问权限始终与您组织的身份系统保持同步。这可以实现:

  • 自动化用户管理:用户会根据其 IdP 中的状态自动添加到 LangSmith、更新或从 LangSmith 中移除。
  • 降低管理开销:无需在多个系统中手动管理用户访问权限。
  • 提高安全性:离开您组织的用户将自动从 LangSmith 中取消配置。
  • 一致的访问控制:用户属性和组成员资格在系统之间同步。
  • 扩展团队访问控制:高效管理拥有多个工作区和自定义角色的大型团队。
  • 角色分配:选择特定的 组织角色工作区角色 分配给用户组。

要求

前提条件

- 您的组织必须使用企业版计划。 - 您的身份提供商(IdP)必须支持 SCIM 2.0。 - 只有 组织管理员 可以配置 SCIM。 - 对于云客户: SAML SSO 必须可为您的组织配置。 - 对于自托管客户: OAuth 客户端密钥 认证模式必须已启用。 - 对于自托管客户,必须允许从身份提供商到 LangSmith 的网络流量: - Microsoft Entra ID 支持允许列出 IP 范围或基于代理的解决方案来提供连接。 (详情). - Okta 支持允许列出 IP 或域名(详情) 或基于代理的解决方案(详情)来提供连接。

角色优先级

当用户属于同一工作区的多个组时,按以下优先级规则处理:

  1. **组织管理员组** 具有最高优先级。这些组中的用户将 Admin 在所有工作区中具有管理员权限。
  2. **最近创建的工作区特定组** 优先于其他工作区组。

邮箱验证

仅限云端,使用 SCIM 创建新用户会向该用户触发一封邮件。 他们必须通过点击此邮件中的链接来验证其邮箱地址。 链接在 24 小时后过期,如需要可以通过 SCIM 移除并重新添加用户来重新发送。

属性和映射

组命名约定

组会员资格按照特定的命名约定映射到 LangSmith 工作区会员资格和工作区角色。默认情况下,组件之间的分隔符是冒号 (:),但您可以 配置自定义分隔符 用于您的组织。

组织管理员组

Format: <optional_prefix>Organization Admin or <optional_prefix>Organization Admins

Examples:

  • - LS:Organization Admins
  • - LS:OrganizationAdmins (省略空格——对于不允许组名中包含空格的 IdP 很有用)
  • - Groups-Organization Admins
  • - Organization Admin

特定工作区组

Format: <optional_prefix><org_role_name><separator><workspace_name><separator><workspace_role_name>

分隔符默认为 : (冒号)。支持的分隔符包括: : (冒号), - (连字符), _ (下划线), (空格), & (& 符号)。

使用默认冒号分隔符的示例:

  • - LS:Organization User:Production:Annotators
  • - LS:OrganizationUser:Production:Annotators (角色名称标记中省略空格)
  • - Groups-Organization User:Engineering:Developers
  • - Organization User:Marketing:Viewers

使用连字符分隔符的示例:

  • - LS-Organization User-Production-Annotators
  • - LS-OrganizationUser-Production-Annotators (角色名称标记中省略空格)
  • - Organization User-Engineering-Developers

配置自定义分隔符

要为您的组织更改 SCIM 组名称分隔符,请使用 PATCH /api/v1/orgs/current/info 端点。对于区域 SaaS 部署,请将请求发送到区域主机上的相同路径 (eu.api.smith.langchain.com, apac.api.smith.langchain.com, or aws.api.smith.langchain.com):

curl -X PATCH $LANGCHAIN_ENDPOINT/api/v1/orgs/current/info \
  -H "X-Api-Key: $LANGCHAIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scim_group_name_separator": "-"}'

分隔符必须是单个字符,且为以下之一: : (冒号), - (连字符), _ (下划线), (空格),或 & (& 符号)。默认值为 : (冒号)

映射

虽然根据身份提供程序的具体说明可能有所不同,但这些映射显示了 LangSmith SCIM 集成支持的内容:

用户属性

**LangSmith 应用属性****身份提供程序属性****匹配优先级**
userName<sup>1</sup>电子邮件地址
active!deactivated
emails[type eq "work"].value电子邮件地址<sup>2</sup>
name.formatteddisplayName OR givenName + familyName<sup>3</sup>
givenNamegivenName
familyNamefamilyName
externalIdsub<sup>4</sup>1
  1. userName LangSmith 不需要此字段
  2. 需要电子邮件地址
  3. 如果您的 displayName 与以下格式不匹配 Firstname Lastname
  4. 为避免不一致,这应该与 SAML NameID 云客户的断言或 sub 自托管的 OAuth2.0 声明。

组属性

**LangSmith 应用属性****身份提供程序属性****匹配优先级**
displayNamedisplayName<sup>1</sup>1
externalIdobjectId
membersmembers

1. 组必须遵循中描述的命名约定 组命名约定 section. 如果您的公司有组命名策略,则应从以下位置映射 description 身份提供程序属性和 根据以下内容设置描述 组命名约定 section.

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

有两种场景用于 SAML SSO configuration:

  1. 如果您的组织已配置 SAML SSO,则应跳过最初添加应用程序的步骤(从 Okta Integration Network 添加应用程序 or 创建新的 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, or aws.api.smith.langchain.com):

curl -X PATCH $LANGCHAIN_ENDPOINT/orgs/current/info \
  -H "X-Api-Key: $LANGCHAIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jit_provisioning_enabled": false}'

为自托管禁用 JIT

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

commonEnv:
  - name: SELF_HOSTED_JIT_PROVISIONING_ENABLED
    value: "false"

步骤 3 - 生成 SCIM 持有者令牌

为您的组织生成 SCIM 持有者令牌。此令牌将用于您的 IdP 验证 SCIM API 请求。请确保正确设置环境变量,例如:

curl -X POST $LANGCHAIN_ENDPOINT/v1/platform/orgs/current/scim/tokens \
  -H "X-Api-Key: $LANGCHAIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"description": "Your description here"}'

请注意,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 配置步骤

有关更多信息,请参阅 Microsoft 的 文档.

步骤 1:在您的企业应用程序中配置 SCIM

  1. 使用特权角色登录 Azure 门户 (例如 Global Administrator).
  2. 导航到您现有的 LangSmith 企业应用程序。
  3. 在左侧导航中,选择 **管理** > **配置**.
  4. 点击 **开始**.

步骤 2:配置管理员凭据

  1. 在 **管理员凭据**:
  • 租户 URL:
  • - Self-hosted: <langsmith_url>/scim/v2
  • 密钥令牌输入步骤3中生成的SCIM Bearer Token。
  1. 点击 **测试连接** 验证配置。
  1. 点击 **保存**.

步骤3:配置属性映射

在以下位置配置属性映射 Mappings:

用户属性

设置 **目标对象操作** to CreateUpdate (从以下开始 Delete 为安全起见,先禁用):

**LangSmith应用属性****Microsoft Entra ID属性****匹配优先级**
userNameuserPrincipalName
activeNot([IsSoftDeleted])
emails[type eq "work"].valuemail1
name.formatteddisplayName OR Join(" ", [givenName], [surname])2
externalIdobjectId31
  1. 用户的电子邮件地址必须存在于Entra ID中。
  2. 如果您的 Join 表达式与 displayName 的格式不匹配,请使用 Firstname Lastname.
  3. 为避免不一致,这应与SAML NameID声明和 sub OAuth2.0声明匹配。对于云中的SAML SSO, Unique User Identifier (Name ID) 必需的声明应为 user.objectIDName identifier format 应为 persistent.

组属性

设置 **目标对象操作** to CreateUpdate 仅限(从以下开始 Delete 为安全起见,先禁用):

**LangSmith应用属性****Microsoft Entra ID属性****匹配优先级**
displayNamedisplayName11
externalIdobjectId
membersmembers

1. 组必须遵循 组命名约定 section. 如果贵公司有组命名策略,则应改为从 description Microsoft Entra ID属性映射,并 根据 组命名约定 section.

设置描述。步骤4:分配用户和组

  1. 在 **应用程序** > **应用程序**下,选择您的LangSmith Enterprise应用程序。
  2. 在 **分配** 选项卡上,点击 **分配** 然后选择 **分配给人员** or **分配给组**.
  3. 进行所需的选择,然后 **分配** 和 **完成**.

步骤5:启用预配

  1. 设置 **配置状态** to On 在 **配置**.
  2. 监控初始同步以确保用户和组正确配置。
  3. 验证后,启用 Delete 用户和组映射的操作。

有关故障排除,请参阅 SAML SSO 常见问题。如果设置 SCIM 时遇到问题,请通过以下方式联系 LangChain 支持团队 support.langchain.com.

Okta 配置步骤

支持的功能
  • - 创建用户
  • - 更新用户属性
  • - 停用用户
  • - 组推送(**不支持组重命名**)
  • - 导入用户
  • - 导入组
步骤 1:从 Okta 集成网络添加应用程序

请参阅 SAML SSO 设置 (云端)或 OAuth2.0 设置 用于自托管。

步骤 2:配置 API 集成

  1. 在“常规”选项卡中,确保 LangSmithUrl 根据 步骤 1
  2. 在“配置”选项卡中,选择 Integration.
  3. 选择 Edit 然后 Enable API integration.
  4. 对于 API 令牌,请粘贴您 在上面生成的 SCIM 令牌.
  5. 保留 Import Groups checked.
  6. 要验证配置,请选择“测试 API 凭据”。
  7. 选择“保存”。
  8. 保存 API 集成详细信息后,左侧会出现新的设置选项卡。选择 To App.
  9. 选择“编辑”。
  10. 为“创建用户”、“更新用户”和“停用用户”选择“启用”复选框。
  11. 选择“保存”。
  12. Assign users and/or groups in the Assignments tab. Assigned users are created and managed in your LangSmith group.

步骤 3:配置用户配置设置

  1. 配置配置:在 Provisioning > To App > Provisioning to App下,点击 Edit,然后选中 Create Users, Update User AttributesDeactivate Users.
  2. <application_name> Attribute Mappings下,按下图设置用户属性映射,然后删除其余的:

!SCIM Okta 用户属性映射

步骤 4:推送组

按照 Okta 的 启用组推送 说明来配置按名称或规则推送组。

其他身份提供者

其他身份提供者尚未经过测试,但可能会根据其 SCIM 实现情况运行。

SSO 组同步(替代方案)

SSO 组同步是一种比 SCIM 更简单的替代方案,适用于无法或不想配置 SCIM 组推送的组织。LangSmith 不是按单独的同步间隔将组从您的 IdP 推送到 LangSmith,而是在登录时直接从 SSO 令牌中的可配置声明读取组成员身份,并使用与 相同的命名约定 相同的命名约定。

这是一种成熟的模式,被 GitLab(SAML 组链接)、Grafana(团队同步)、HashiCorp Vault(groups_claim)和 Atlassian(JIT 组分配)所采用。

何时使用 SSO 组同步与 SCIM

SSO 组同步和 SCIM 技术上可以共存(每个只管理标记有其自身配置方法的身份),但我们建议选择 **每个组织使用一种机制**,而不是同时使用两者,以避免出现混乱的优先级行为。

SSO 组同步SCIM
**同步触发器**每次SSO登录时IdP主动推送(约1小时周期)
**IdP管理员参与**极少,仅需在SSO令牌中包含组必须,配置SCIM配置应用
**取消配置**延迟到下次登录通过IdP推送近乎实时
**命名约定**复用 SCIM约定SCIM约定
**自定义分隔符**复用组织级别 scim_group_name_separatorscim_group_name_separator

选择 **SSO组同步** 当IdP管理员参与最少且可接受响应式(登录时)同步时。选择 **SCIM** when proactive provisioning/deprovisioning and near real-time group membership updates are required.

配置

  1. 在您的IdP中:将用户的组成员资格添加到SSO令牌声明中(默认声明名称: groups)。组名称必须遵循 SCIM命名约定.
  2. 在LangSmith中:转到 **设置** → **成员和角色** → **SSO配置** → **SSO组同步** 并配置以下内容:
设置描述
**启用 SSO 群组同步**根据 SSO 令牌中的群组成员资格自动分配工作区角色。
**群组声明字段** (默认值 groupsSSO 令牌中包含群组成员资格的声明名称。
**Sync workspace/role assignments**在每次 SSO 登录时从群组名称更新工作区成员资格和角色。
**需要匹配的群组才能登录**如果 SSO 令牌中不包含与命名规范匹配的群组,则阻止登录。

您也可以通过发送 PATCH 到 SSO 设置端点来通过 API 配置这些设置:

curl -X PATCH $LANGCHAIN_ENDPOINT/api/v1/orgs/current/sso-settings/$SSO_PROVIDER_ID \
  -H "X-Api-Key: $LANGCHAIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sso_groups_enabled": true,
    "sso_groups_claim_field": "groups",
    "sso_groups_role_sync_enabled": true,
    "sso_groups_required": false
  }'

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

要使用户的群组成员资格在登录时对 LangSmith 可见,您需要做两件事:

  1. 配置您的 IdP 的 SAML 应用程序以发出多值群组属性。
  2. Supabase 属性映射 中添加匹配的条目,使属性流向 JWT(勾选 **数组** )。

Requirements:

  • - IdP 属性名称(例如, groups)必须与 **Supabase 属性映射** 条目和 **群组声明字段** 值(默认值 groups).
  • - 属性必须是 **multi-valued** (字符串列表),而不是单个分隔字符串。如果您的 IdP 仅支持单值属性,您需要为每个群组发出一个属性语句。
  • - 每个值必须是遵循 SCIM 命名规范.
  • - 的群组名称。只有名称符合规范的群组才会被处理。LangSmith 会忽略不符合其命名规范的群组,例如组织范围的目录群组或应用分配群组。您无需在 IdP 端过滤这些——发出所有群组,LangSmith 将跳过不相关的群组。

按 IdP 的设置:

Okta

在 LangSmith SAML 应用程序中:

1. **目录** → **个人资料编辑器** → 选择 LangSmith 应用程序的用户个人资料。 2. 添加一个名为 groups 的自定义属性, **类型** string array. 3. **登录** → 编辑 SAML 设置并添加属性语句: - **名称**: groups - **名称格式**: Unspecified (or Basic) - **过滤器**: Matches regex ,值为 .* 发送所有组,或使用更严格的正则表达式(例如, ^LS:.*)来限制为 LangSmith 前缀的组。

Entra ID (Azure)

在 LangSmith 企业应用中:

  1. **单点登录** → **属性和声明** → **添加群组声明**.
  2. 选择要发送的群组(通常为 **分配给应用的群组**).
  3. 设置 **源属性** to Cloud-only group display names 以便发送群组名称(必须与 命名约定匹配)而不是对象 ID。
  4. 设置声明 **名称** to groups (或您配置的 **群组声明字段** 值),不带命名空间。

Google Workspace

Google 的 SAML SSO 默认不将 Google 群组成员资格作为 SAML 属性发出。要将 SSO 群组同步与 Google Workspace 结合使用,您必须:

  • - 通过目录同步工具管理群组成员资格,该工具将群组公开为 SAML 属性,或
  • - 使用 SCIM 代替,它支持从 Google Workspace 推送群组。

群组命名示例

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

意图示例群组名称
组织管理员(在所有工作区中授予工作区管理员权限)LS:Organization Admins
工作区管理员(位于 ProductionLS:Organization User:Production:Admin
工作区编辑者(位于 EngineeringLS:Organization User:Engineering:Editor
工作区查看者(位于 MarketingLS:Organization User:Marketing:Viewer
自定义角色 Annotators in ProductionLS:Organization User:Production:Annotators

行为

  • 命名约定:群组名称遵循与 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的映射(参见 群组属性)可能更合适。