> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 用户管理

本页介绍 LangSmith 中的用户管理功能，包括访问控制、身份验证和自动化用户配置：

* [设置访问控制](#set-up-access-control)：配置基于角色的访问控制（RBAC）以管理工作区内的用户权限，包括创建自定义角色并将其分配给用户。
* [SAML SSO（企业计划）](#set-up-saml-sso-for-your-organization)：为企业客户设置使用 SAML 2.0 的单点登录身份验证，包括针对流行身份提供商的配置。
* [SCIM 用户配置（企业计划）](#set-up-scim-for-your-organization)：使用 SCIM 在您的身份提供商和 LangSmith 之间自动化用户配置和取消配置。

## 设置访问控制

<Note>
  基于角色的访问控制（RBAC）是一项仅对企业客户开放的功能。如果您对此功能感兴趣，请[联系我们的销售团队](https://www.langchain.com/contact-sales)。其他计划默认为所有用户使用 [`Admin` 角色](/langsmith/administration-overview)。
</Note>

<Check>
  在设置访问控制之前，阅读[管理概览](/langsmith/administration-overview)页面可能会有所帮助。
</Check>

LangSmith 依赖 RBAC 来管理[工作区](/langsmith/administration-overview#workspaces)内的用户权限。这使您可以控制谁可以访问您的 LangSmith 工作区以及他们在其中可以做什么。拥有 `workspaces:manage` 权限的用户可以管理工作区设置，拥有 `workspaces:manage-members` 权限的用户可以添加、移除和更新工作区成员。内置的 Workspace Admin 角色包含这两种权限。

有关工作区角色及其权限的完整参考，请参阅[基于角色的访问控制](/langsmith/rbac#workspace-roles)指南。有关每个角色可以执行的具体操作，请参阅[组织和工作区操作参考](/langsmith/organization-workspace-operations)。

### 创建角色

默认情况下，LangSmith 附带一组系统角色：

* `Admin`：对工作区内的所有资源拥有完全访问权限。
* `Viewer`：对工作区内的所有资源拥有只读访问权限。
* `Editor`：拥有除工作区管理（添加/移除用户、更改角色、配置服务密钥）之外的所有权限。

如果这些不符合您的访问模型，`组织管理员`可以创建自定义角色以满足您的需求。

要创建角色，请导航到[组织设置页面](https://smith.langchain.com/settings)的 **Members and roles** 部分中的 **Roles** 选项卡。请注意，您创建的新角色将在您组织内的所有工作区中可用。

点击 **Create Role** 按钮以创建新角色。将打开一个 **Create role** 表单。

<img src="https://mintcdn.com/other-405835d4/jwwDDYly65_K9YMB/langsmith/images/create-role.png?fit=max&auto=format&n=jwwDDYly65_K9YMB&q=85&s=9b3153da3097879db795b7ad88c9a85e" alt="创建角色" width="3078" height="1932" data-path="langsmith/images/create-role.png" />

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

### 将角色分配给用户

设置好角色后，您可以将它们分配给用户。要将角色分配给用户，请导航到[组织设置页面](https://smith.langchain.com/settings)的 `Workspaces` 部分中的 `Workspace members` 选项卡。

每个用户都有一个 **Role** 下拉菜单，您可以使用它为他们分配角色。

<img src="https://mintcdn.com/other-405835d4/U_V3brHb6y_62TSF/langsmith/images/assign-role.png?fit=max&auto=format&n=U_V3brHb6y_62TSF&q=85&s=b8d4674e472be3b3f37114dae807565a" alt="分配角色" width="1888" height="574" data-path="langsmith/images/assign-role.png" />

您也可以邀请具有给定角色的新用户。

<img src="https://mintcdn.com/other-405835d4/G7l9ZuXFPY6DQG2A/langsmith/images/invite-user.png?fit=max&auto=format&n=G7l9ZuXFPY6DQG2A&q=85&s=567485f83f33811c9199dbf80d89e24e" alt="邀请用户" width="1204" height="886" data-path="langsmith/images/invite-user.png" />

## 为您的组织设置 SAML SSO

单点登录（SSO）功能**适用于企业云客户**，允许通过单一身份验证源访问 LangSmith。这使管理员可以集中管理团队访问，并使信息更加安全。

LangSmith 的 SSO 配置基于 SAML（安全断言标记语言）2.0 标准构建。SAML 2.0 允许将身份提供商（IdP）连接到您的组织，以实现更轻松、更安全的登录体验。

SSO 服务允许用户使用一组凭据（例如，姓名或电子邮件地址和密码）访问多个应用程序。该服务仅为用户有权访问的所有应用程序对最终用户进行一次身份验证，并在用户在同一会话期间切换应用程序时消除进一步的提示。SSO 的好处包括：

* 为组织所有者简化跨系统的用户管理。
* 使组织能够强制执行其自身的安全策略（例如，MFA）。
* 消除最终用户记住和管理多个密码的需要。通过允许在单一访问点跨多个应用程序登录，简化最终用户体验。

### 即时（JIT）配置

LangSmith 在使用 SAML SSO 时支持即时配置。这允许通过 SAML SSO 登录的人自动作为成员加入组织和选定的工作区。有关管理 JIT 配置和用户邀请的详细信息，请参阅[在 SSO 组织中管理用户访问](/langsmith/jit-invite-sso)。

<Note>
  JIT 配置仅适用于新用户，即尚未通过[其他登录方法](/langsmith/authentication-methods#cloud)使用相同电子邮件地址访问该组织的用户。
</Note>

### 登录方法和访问

为组织完成 SAML SSO 配置后，用户除了可以通过[其他登录方法](/langsmith/authentication-methods#cloud)（如用户名/密码或 Google 身份验证）登录外，还可以通过 SAML SSO 登录：

* 通过 SAML SSO 登录时，用户只能访问配置了 SAML SSO 的相应组织。
* 仅将 SAML SSO 作为其唯一登录方法的用户没有[个人组织](/langsmith/administration-overview#organizations)。
* 通过任何其他方法登录时，用户可以访问配置了 SAML SSO 的组织以及他们所属的任何其他组织。

### 强制仅使用 SAML SSO

<Note>
  在强制仅使用 SAML SSO 的组织中不支持用户邀请。初始工作区成员身份和角色由 [JIT 配置](/langsmith/jit-invite-sso#jit-provisioning)确定，之后的更改可以在 UI 中管理。
  为了在自动化用户管理方面提供更大的灵活性，LangSmith 支持 SCIM。
</Note>

为确保用户只能在使用 SAML SSO 登录时访问组织，而不能使用其他方法，请选中 **Login via SSO only** 复选框并点击 **Save**。一旦执行此操作，通过非 SSO 登录方法登录的访问组织的用户将需要使用 SAML SSO 重新登录。可以通过取消选中复选框并点击 **Save** 将此设置切换回允许所有登录方法。

<Note>
  您必须通过 SAML SSO 登录才能将此设置更新为 `Only SAML SSO`。这是为了确保 SAML 设置有效并避免将用户锁定在组织之外。
</Note>

有关故障排除，请参阅 [SAML SSO 常见问题](/langsmith/faq#saml-sso-faqs)。如果您在设置 SAML SSO 时遇到问题，请通过 [support.langchain.com](https://support.langchain.com) 联系 LangChain 支持团队。

### 先决条件

<Note>
  SAML SSO 适用于[企业计划](https://www.langchain.com/pricing-langsmith)上的组织。请[联系销售](https://www.langchain.com/contact-sales)以了解更多信息。
</Note>

* 您的组织必须在企业计划上。
* 您的身份提供商（IdP）必须支持 SAML 2.0 标准。
* 只有 [`组织管理员`](/langsmith/organization-workspace-operations#sso-and-authentication)可以配置 SAML SSO。

有关使用 SCIM 与 SAML 进行用户配置和取消配置的说明，请参阅 [SCIM 设置](#set-up-scim-for-your-organization)。

### 初始配置

<Note>
  有关特定 IdP 的配置步骤，请参阅以下之一：

  * [Entra ID](#entra-id-azure)
  * [Google](#google)
  * [Okta](#okta)
</Note>

1. 在您的 IdP 中：配置一个 SAML 应用程序，包含以下详细信息，然后复制元数据 URL 或 XML 用于步骤 3。

   <Note>
     以下 URL 取决于您的组织位于美国（GCP）、欧盟（GCP）还是美国（AWS）云区域。请确保选择正确的链接。
   </Note>

   1. 单点登录 URL（或 ACS URL）：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/acs](https://auth.langchain.com/auth/v1/sso/saml/acs)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/acs](https://eu.auth.langchain.com/auth/v1/sso/saml/acs)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/acs](https://aws.auth.langchain.com/auth/v1/sso/saml/acs)
   2. 受众 URI（或 SP 实体 ID）：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/metadata](https://auth.langchain.com/auth/v1/sso/saml/metadata)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/metadata](https://eu.auth.langchain.com/auth/v1/sso/saml/metadata)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/metadata](https://aws.auth.langchain.com/auth/v1/sso/saml/metadata)
   3. Name ID 格式：电子邮件地址。
   4. 应用程序用户名：电子邮件地址。
   5. 必需的声明：`sub` 和 `email`。

2. 在 LangSmith 中：转到 **Settings** -> **Members and roles** -> **SSO Configuration**。填写所需信息并提交以激活 SSO 登录：

   1. 填写 `SAML metadata URL` 或 `SAML metadata XML`。
   2. 选择 `Default workspace role` 和 `Default workspaces`。通过 SSO 登录的新用户将被添加到指定的工作区，并具有所选角色。

      * `Default workspace role` 和 `Default workspaces` 是可编辑的。更新后的设置仅适用于新用户，不适用于现有用户。
      * （即将推出）`SAML metadata URL` 和 `SAML metadata XML` 是可编辑的。这通常仅在加密密钥轮换/过期或元数据 URL 已更改但仍使用相同 IdP 时才需要。

### Supabase 属性映射

<Note>
  Supabase 属性映射是一项[仅限云](/langsmith/cloud)的功能。[自托管](/langsmith/self-hosted)部署直接与 IdP 配置 SAML/OIDC 属性——请参阅[使用 OAuth2.0 和 OIDC 设置 SSO](/langsmith/self-host-sso)。
</Note>

LangSmith 云使用 [Supabase](/langsmith/cloud) 作为 SAML SSO 后端。Supabase 自动将一小部分标准 SAML 属性（如 `email` 和 `sub`）传递到用户的 JWT。您的 IdP 发出的任何额外的、非标准的 SAML 属性（例如，用于 [SSO 组同步](#sso-groups-sync-alternative)的 `groups`）必须通过 Supabase 显式转发，LangSmith 才能读取它。

**属性流（1:1）：**

1. **IdP**：发出具有配置名称的 SAML 属性（例如，`groups`）。
2. **Supabase**：仅当属性名称出现在 SSO 提供商的 **Supabase 属性映射**表中时，才将属性转发到用户的 JWT。标准属性会自动转发；非标准属性除非明确列出，否则会被丢弃。
3. **LangSmith**：按名称读取 JWT 声明（例如，[SSO 组同步](#sso-groups-sync-alternative)的 **Groups claim field** 的值）。

属性名称端到端保留：IdP 属性名称、Supabase 属性映射条目和下游 LangSmith 设置都使用相同的字符串。

#### 配置

在 **Settings** → **Members and roles** → **SSO Configuration** 中，滚动到 **Supabase Attribute Mapping** 部分，并为要转发的每个非标准属性添加一行：

| 列                  | 描述                                                                                             |
| ------------------ | ---------------------------------------------------------------------------------------------- |
| **Attribute name** | 您的 IdP 发出的 SAML 属性名称。必须与 LangSmith 下游期望的 JWT 声明名称匹配（对于 SSO 组同步，这与 **Groups claim field** 值匹配）。 |
| **Array**          | 如果属性是多值的（字符串列表），请选中此项。对于标量（单值）属性，请取消选中。示例：为 `groups` 选中此项；为 `full_name` 取消选中。                  |

点击 **Add row** 添加每个额外属性，然后点击 **Save**。空的映射表意味着没有非标准属性流向 JWT。

### Entra ID (Azure)

更多信息，请参阅 Microsoft 的[文档](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/add-application-portal-setup-sso)。

<div id="create-application-entra-id" />

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

1. 使用特权角色（例如，`Global Administrator`）登录到 [Azure 门户](https://portal.azure.com/#home)。在左侧导航窗格中，选择 `Entra ID` 服务。

2. 导航到 **Enterprise Applications**，然后选择 **All Applications**。

3. 点击 **Create your own application**。

4. 在 **Create your own application** 窗口中：

   1. 为您的应用程序输入一个名称（例如，`LangSmith`）。
   2. 选择 **Integrate any other application you don't find in the gallery (Non-gallery)**。

5. 点击 **Create**。

**步骤 2：配置 Entra ID 应用程序并获取 SAML 元数据**

1. 打开您创建的企业应用程序。

2. 在左侧导航中，选择 **Manage** > **Single sign-on**。

3. 在 Single sign-on 页面上，点击 **SAML**。

4. 更新 **Basic SAML Configuration**：

   1. `Identifier (Entity ID)`：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/metadata](https://auth.langchain.com/auth/v1/sso/saml/metadata)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/metadata](https://eu.auth.langchain.com/auth/v1/sso/saml/metadata)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/metadata](https://aws.auth.langchain.com/auth/v1/sso/saml/metadata)
   2. `Reply URL (Assertion Consumer Service URL)`：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/acs](https://auth.langchain.com/auth/v1/sso/saml/acs)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/acs](https://eu.auth.langchain.com/auth/v1/sso/saml/acs)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/acs](https://aws.auth.langchain.com/auth/v1/sso/saml/acs)
   3. 将 `Relay State`、`Logout Url` 和 `Sign on URL` 留空。
   4. 点击 **Save**。

5. 确保必需的声明存在，**Namespace** 为：`http://schemas.xmlsoap.org/ws/2005/05/identity/claims`：

   1. `sub`：`user.objectid`。
   2. `emailaddress`：`user.userprincipalname` 或 `user.mail`（如果使用后者，请确保所有用户在 `Contact Information` 下的 `Email` 字段已填写）。
   3. （可选）对于 SCIM，请参阅[设置文档](/langsmith/user-management)以获取有关 `Unique User Identifier (Name ID)` 的具体说明。

6. 在 SAML-based Sign-on 页面上，在 **SAML Certificates** 下，复制 **App Federation Metadata URL**。

**步骤 3：设置 LangSmith SSO 配置**

按照[初始配置](#initial-configuration)中 `Fill in required information` 步骤下的说明操作，使用上一步中的元数据 URL。

**步骤 4：验证 SSO 设置**

1. 在 Entra ID 中将应用程序分配给用户/组：

   1. 选择 **Manage** > **Users and groups**。

   2. 点击 **Add user/group**。

   3. 在 **Add Assignment** 窗口中：

      1. 在 **Users** 下，点击 **None Selected**。
      2. 搜索您想要分配给企业应用程序的用户，然后点击 **Select**。
      3. 验证用户已被选中，然后点击 **Assign**。

2. 让用户通过 **SSO Configuration** 页面上的唯一登录 URL 登录，或转到 **Manage** > **Single sign-on** 并选择 **Test single sign-on with (application name)**。

### Google

更多信息，请参阅 Google 的[文档](https://support.google.com/a/answer/6087519)。

**步骤 1：创建并配置 Google Workspace SAML 应用程序**

1. 确保您使用具有适当权限的管理员帐户登录。

2. 在管理控制台中，转到 **Menu** -> **Apps** -> **Web and mobile apps**。

3. 点击 **Add App**，然后点击 **Add custom SAML app**。

4. 输入应用程序名称，并可选择上传图标。点击 **Continue**。

5. 在 Google Identity Provider 详细信息页面上，下载 **IDP metadata** 并将其保存用于步骤 2。点击 **Continue**。

6. 在 `Service Provider Details` 窗口中，输入：

   1. `ACS URL`：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/acs](https://auth.langchain.com/auth/v1/sso/saml/acs)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/acs](https://eu.auth.langchain.com/auth/v1/sso/saml/acs)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/acs](https://aws.auth.langchain.com/auth/v1/sso/saml/acs)
   2. `Entity ID`：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/metadata](https://auth.langchain.com/auth/v1/sso/saml/metadata)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/metadata](https://eu.auth.langchain.com/auth/v1/sso/saml/metadata)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/metadata](https://aws.auth.langchain.com/auth/v1/sso/saml/metadata)
   3. 将 `Start URL` 和 `Signed response` 框留空。
   4. 将 `Name ID` 格式设置为 `EMAIL`，并将 `Name ID` 保留为默认值（`Basic Information > Primary email`）。
   5. 点击 `Continue`。

7. 使用 `Add mapping` 确保必需的声明存在：
   1. `Basic Information > Primary email` -> `email`

**步骤 2：设置 LangSmith SSO 配置**

按照[初始配置](#initial-configuration)中 `Fill in required information` 步骤下的说明操作，使用上一步中的 `IDP metadata` 作为元数据 XML。

**步骤 3：在 Google 中启用 SAML 应用程序**

1. 在 `Menu -> Apps -> Web and mobile apps` 下选择 SAML 应用程序

2. 点击 `User access`。

3. 启用服务：

   1. 要为组织中的所有人启用服务，请点击 `On for everyone`，然后点击 `Save`。

   2. 要为组织单位启用服务：

      1. 在左侧，选择组织单位，然后点击 `On`。
      2. 如果服务状态设置为 `Inherited` 并且您希望保留更新后的设置（即使父设置更改），请点击 `Override`。
      3. 如果服务状态设置为 `Overridden`，请点击 `Inherit` 以恢复为与其父级相同的设置，或点击 `Save` 以保留新设置（即使父设置更改）。

   3. 要为跨组织单位或组织单位内的一组用户启用服务，请选择一个访问组。详情请访问[使用组自定义服务访问权限](https://support.google.com/a/answer/9050643)。

4. 确保用户用于登录 LangSmith 的电子邮件地址与其用于登录 Google 域的电子邮件地址匹配。

**步骤 4：验证 SSO 设置**

让有访问权限的用户通过 **SSO Configuration** 页面上的唯一登录 URL 登录，或转到 Google 中的 SAML 应用程序页面并点击 **TEST SAML LOGIN**。

### Okta

#### 支持的功能

* IdP 发起的 SSO（单点登录）
* SP 发起的 SSO
* 即时配置
* 强制仅使用 SSO

#### 配置步骤

更多信息，请参阅 Okta 的[文档](https://help.okta.com/en-us/content/topics/apps/apps_app_integration_wizard_saml.htm)。

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

<div id="via-okta-integration-network">
  <b>通过 Okta 集成网络（推荐）</b>
</div>

1. 登录 [Okta](https://login.okta.com/)。
2. 在右上角，选择 Admin。该按钮在管理区域中不可见。
3. 选择 `Browse App Integration Catalog`。
4. 找到并选择 LangSmith 应用程序。
5. 在应用程序概述页面上，选择 Add Integration。
6. 将 `ApiUrlBase` 留空。
7. 填写 `AuthHost`：
   * 美国（GCP）：`auth.langchain.com`
   * 欧盟（GCP）：`eu.auth.langchain.com`
   * 美国（AWS）：`aws.auth.langchain.com`
8. （可选，如果计划同时使用 [SCIM](#set-up-scim-for-your-organization)）填写 `LangSmithUrl`：
   * 美国（GCP）：`api.smith.langchain.com`
   * 欧盟（GCP）：`eu.api.smith.langchain.com`
   * 美国（AWS）：`aws.api.smith.langchain.com`
9. 在 Application Visibility 下，保持复选框未选中。
10. 选择 Next。
11. 选择 `SAML 2.0`。
12. 填写 `Sign-On Options`：
    * `Application username format`：`Email`
    * `Update application username on`：`Create and update`
    * `Allow users to securely see their password`：保持**未选中**。
13. 从 **Sign On Options** 页面复制 **Metadata URL** 以在下一步中使用。

**通过自定义应用程序集成**

<Warning>
  SCIM 与此配置方法不兼容。请参阅 [**通过 Okta 集成网络**](#via-okta-integration-network)。
</Warning>

1. 以管理员身份登录 Okta，并转到 **Okta Admin console**。

2. 在 **Applications** > **Applications** 下，点击 **Create App Integration**。

3. 选择 **SAML 2.0**。

4. 输入 `App name`（例如，`LangSmith`）并可选择输入 **App logo**，然后点击 **Next**。

5. 在 **Configure SAML** 页面中输入以下信息：

   1. `Single sign-on URL`（`ACS URL`）。保持 `Use this for Recipient URL and Destination URL` 选中：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/acs](https://auth.langchain.com/auth/v1/sso/saml/acs)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/acs](https://eu.auth.langchain.com/auth/v1/sso/saml/acs)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/acs](https://aws.auth.langchain.com/auth/v1/sso/saml/acs)
   2. `Audience URI (SP Entity ID)`：
      * 美国（GCP）：[https://auth.langchain.com/auth/v1/sso/saml/metadata](https://auth.langchain.com/auth/v1/sso/saml/metadata)
      * 欧盟（GCP）：[https://eu.auth.langchain.com/auth/v1/sso/saml/metadata](https://eu.auth.langchain.com/auth/v1/sso/saml/metadata)
      * 美国（AWS）：[https://aws.auth.langchain.com/auth/v1/sso/saml/metadata](https://aws.auth.langchain.com/auth/v1/sso/saml/metadata)
   3. `Name ID format`：**Persistent**。
   4. `Application username`：`email`。
   5. 将其余字段留空或设置为默认值。
   6. 点击 **Next**。

6. 点击 **Finish**。

7. 从 **Sign On** 页面复制 **Metadata URL** 以在下一步中使用。

**步骤 2：设置 LangSmith SSO 配置**

按照[初始配置](#initial-configuration)中 **Fill in required information** 步骤下的说明操作，使用上一步中的元数据 URL。

**步骤 3：在 Okta 中将用户分配给 LangSmith**

1. 在 **Applications** > **Applications** 下，选择步骤 1 中创建的 SAML 应用程序。
2. 在 **Assignments** 选项卡下，点击 **Assign**，然后选择 **Assign to People** 或 **Assign to Groups**。
3. 进行所需的选择，然后点击 **Assign** 和 **Done**。

**步骤 4：验证 SSO 设置**

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

#### SP 发起的 SSO

配置服务提供商发起的 SSO 后，用户可以使用唯一的登录 URL 登录。您可以在 LangSmith UI 的 **Organization members and roles** 下的 **SSO configuration** 中找到此 URL。

## 为您的组织设置 SCIM

<Note>
  正在寻找比 SCIM 更轻量级的替代方案，无需 IdP 管理员参与即可推送组？请参阅下面的 [SSO 组同步](#sso-groups-sync-alternative)——它在登录时直接从 SSO 令牌读取组成员身份，并重用相同的命名约定。
</Note>

跨域身份管理系统（SCIM）是一种开放标准，允许自动化用户配置。使用 SCIM，您可以自动配置和取消配置 LangSmith [组织和工作区](/langsmith/administration-overview)中的用户，使用户访问与组织的身份提供商保持同步。

<Note>
  SCIM 适用于[企业计划](https://www.langchain.com/pricing)上的组织。[联系销售](https://www.langchain.com/contact-sales)以了解更多信息。

  SCIM 在 Helm chart 版本 0.10.41（应用程序版本 0.10.108）及更高版本上可用。

  SCIM 支持仅限 API（请参阅下面的说明）。
</Note>

SCIM 消除了手动用户管理的需要，并确保用户访问始终与组织的身份系统保持最新。这允许：

* **自动化用户管理**：根据用户在 IdP 中的状态，自动将用户添加、更新和移除出 LangSmith。
* **减少管理开销**：无需跨多个系统手动管理用户访问。
* **提高安全性**：离开组织的用户会自动从 LangSmith 取消配置。
* **一致的访问控制**：用户属性和组成员身份在系统之间同步。
* **扩展团队访问控制**：高效管理拥有多个工作区和自定义角色的大型团队。
* **角色分配**：为用户组选择特定的[组织角色](/langsmith/rbac#organization-roles)和[工作区角色](/langsmith/rbac#workspace-roles)。

### 要求

#### 先决条件

* 您的组织必须在企业计划上。
* 您的身份提供商（IdP）必须支持 SCIM 2.0。
* 只有[组织管理员](/langsmith/administration-overview#organization-roles)可以配置 SCIM。
* 对于云客户：您的组织必须可配置 [SAML SSO](#set-up-saml-sso-for-your-organization)。
* 对于自托管客户：必须启用 [OAuth with Client Secret](/langsmith/self-host-sso#with-client-secret-recommended) 身份验证模式。
* 对于自托管客户，必须允许从身份提供商到 LangSmith 的网络流量：
  * Microsoft Entra ID 支持 IP 范围允许列表或基于代理的解决方案以提供连接性。
    ([详情](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/use-scim-to-provision-users-and-groups#ip-ranges))。
  * Okta 支持 IP 或域名允许列表 ([详情](https://help.okta.com/en-us/content/topics/security/ip-address-allow-listing.htm))
    或基于代理的解决方案 ([详情](https://help.okta.com/en-us/content/topics/provisioning/opp/opp-main.htm)) 以提供连接性。

<Note>
  SCIM 连接通常需要 HTTP/1.1 或更高版本。如果您的客户端使用 HTTP/1.0，您可能会遇到 `426 Upgrade Required` 错误。
</Note>

#### 角色优先级

当用户属于同一工作区的多个组时，适用以下优先级：

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

<Note>
  当组被删除或用户从组中移除时，他们的访问权限将根据其剩余的组成员身份进行更新，并遵循优先级规则。

  SCIM 组成员身份会覆盖手动分配的角色或通过即时（JIT）配置分配的角色。我们建议禁用 JIT 配置以避免冲突。有关更多详细信息，请参阅[在 SSO 组织中管理用户访问](/langsmith/jit-invite-sso#scim-integration)。
</Note>

#### 电子邮件验证

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

### 属性和映射

#### 组命名约定

<Warning>
  不支持通过 SCIM 重命名组。组名是持久的，因为它们必须与 LangSmith 中的角色名称和/或工作区名称匹配。
</Warning>

组成员身份映射到 LangSmith 工作区成员身份和工作区角色，并遵循特定的命名约定。默认情况下，组件之间的分隔符是冒号（`:`），但您可以为您的组织[配置自定义分隔符](#configure-custom-separator)。

**组织管理员组**

格式：`<optional_prefix>Organization Admin` 或 `<optional_prefix>Organization Admins`

示例：

* `LS:Organization Admins`
* `Groups-Organization Admins`
* `Organization Admin`

**特定于工作区的组**

格式：`<optional_prefix><org_role_name><separator><workspace_name><separator><workspace_role_name>`

分隔符默认为 `:`（冒号）。支持的分隔符有：`:`（冒号）、`-`（连字符）、`_`（下划线）、` `（空格）、`&`（与号）。

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

* `LS:Organization User:Production:Annotators`
* `Groups-Organization User:Engineering:Developers`
* `Organization User:Marketing:Viewers`

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

* `LS-Organization User-Production-Annotators`
* `Organization User-Engineering-Developers`

<Note>
  如果您的工作区名称包含分隔符字符（例如，分隔符为 `-` 的工作区 `my-team`），LangSmith 将自动尝试所有可能的拆分以找到有效的工作区和角色组合。
</Note>

#### 配置自定义分隔符

要更改组织的 SCIM 组名分隔符，请使用 `PATCH /api/v1/orgs/current/info` [端点](https://api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch)（欧盟（GCP）：[`eu.api.smith.langchain.com` 上的相同路径](https://eu.api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch)；美国（AWS）：[`aws.api.smith.langchain.com` 上的相同路径](https://aws.api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch)）：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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": "-"}'
```

分隔符必须是单个字符，并且是以下之一：`:`（冒号）、`-`（连字符）、`_`（下划线）、` `（空格）或 `&`（与号）。默认为 `:`（冒号）。

<Note>
  更改分隔符不会重命名现有的 SCIM 组。如果您更改分隔符，还必须在身份提供商中更新组名以使用新的分隔符。
</Note>

### 映射

虽然特定于身份提供商的说明可能有所不同，但这些映射显示了 LangSmith SCIM 集成支持的内容：

#### 用户属性

| **LangSmith 应用属性**             | **身份提供商属性**                                          | **匹配优先级** |
| ------------------------------ | ---------------------------------------------------- | --------- |
| `userName`<sup>1</sup>         | 电子邮件地址                                               |           |
| `active`                       | `!deactivated`                                       |           |
| `emails[type eq "work"].value` | 电子邮件地址<sup>2</sup>                                   |           |
| `name.formatted`               | `displayName` 或 `givenName + familyName`<sup>3</sup> |           |
| `givenName`                    | `givenName`                                          |           |
| `familyName`                   | `familyName`                                         |           |
| `externalId`                   | `sub`<sup>4</sup>                                    | 1         |

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

#### 组属性

| **LangSmith 应用属性** | **身份提供商属性**               | **匹配优先级** |
| ------------------ | ------------------------- | --------- |
| `displayName`      | `displayName`<sup>1</sup> | 1         |
| `externalId`       | `objectId`                |           |
| `members`          | `members`                 |           |

1. 组必须遵循[组命名约定](#group-naming-convention)部分描述的命名约定。
   如果您的公司有组命名策略，您应该改为从 `description` 身份提供商属性进行映射，并根据[组命名约定](#group-naming-convention)部分设置描述。

### 步骤 1 - 配置 SAML SSO（仅限云）

[SAML SSO](#set-up-saml-sso-for-your-organization) 配置有两种场景：

1. 如果您的组织已经配置了 SAML SSO，您应该跳过初始添加应用程序的步骤（[从 Okta 集成网络添加应用程序](#add-application-okta-oin)或[创建新的 Entra ID 应用程序集成](#create-application-entra-id)），因为您已经配置了应用程序，只需要启用配置。
2. 如果您是首次与 SCIM 一起配置 SAML SSO，请先按照说明[设置 SAML SSO](#set-up-saml-sso-for-your-organization)，\_然后\_按照此处的说明启用 SCIM。

#### NameID 格式

LangSmith 使用 SAML NameID 来标识用户。NameID 是 SAML 响应中的必填字段，不区分大小写。

NameID 必须：

1. 对每个用户唯一。
2. 是一个永不更改的持久值，例如随机生成的唯一用户 ID。
3. 在每次登录尝试时完全匹配。它不应依赖于用户输入。

NameID 不应是电子邮件地址或用户名，因为电子邮件地址和用户名更有可能随时间变化，并且可能区分大小写。

NameID 格式必须是 `Persistent`，除非您使用的是需要不同格式的字段，例如电子邮件。

### 步骤 2 - 禁用 JIT 配置

在启用 SCIM 之前，请禁用[即时（JIT）配置](/langsmith/jit-invite-sso#jit-provisioning)以防止自动和手动用户配置之间的冲突。

#### 为云禁用 JIT

使用 `PATCH /orgs/current/info` [端点](https://api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch)（欧盟（GCP）和美国（AWS）：[`eu.api.smith.langchain.com`](https://eu.api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch) 和 [`aws.api.smith.langchain.com`](https://aws.api.smith.langchain.com/redoc#tag/orgs/operation/update_current_organization_info_api_v1_orgs_current_info_patch) 上的相同路径）：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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 配置。要禁用，请设置以下值：

```yaml theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
commonEnv:
  - name: SELF_HOSTED_JIT_PROVISIONING_ENABLED
    value: "false"
```

### 步骤 3 - 生成 SCIM 令牌

<Note>
  在自托管环境中，下面的完整 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 文档](/langsmith/self-host-ingress)。
</Note>

为您的组织生成 SCIM 令牌。此令牌将由您的 IdP 用于对 SCIM API 请求进行身份验证。确保环境变量设置正确，例如：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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 - 配置您的身份提供商

<Note>
  如果您使用 Azure Entra ID（以前称为 Azure AD）或 Okta，则有特定的身份提供商设置说明（请参阅 [Azure Entra ID](#azure-entra-id-configuration-steps)、[Okta](#okta)）。上述要求和步骤适用于所有身份提供商。
</Note>

#### Azure Entra ID 配置步骤

更多信息，请参阅 Microsoft 的[文档](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/user-provisioning)。

<Note>
  在自托管安装中，`oid` JWT 声明用作 `sub`。
  有关更多详细信息，请参阅 [Microsoft Learn 链接](https://learn.microsoft.com/en-us/answers/questions/5546297/how-to-link-oidc-users-with-scim)
  和[相关配置说明](/langsmith/self-host-sso#override-sub-claim)。
</Note>

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

1. 使用特权角色（例如，`Global Administrator`）登录到 [Azure 门户](https://portal.azure.com/#home)。
2. 导航到您现有的 LangSmith 企业应用程序。
3. 在左侧导航中，选择 **Manage** > **Provisioning**。
4. 点击 **Get started**。

**步骤 2：配置管理员凭据**

1. 在 **Admin Credentials** 下：

   * **Tenant URL**：

     * 美国（GCP）：`https://api.smith.langchain.com/scim/v2`
     * 欧盟（GCP）：`https://eu.api.smith.langchain.com/scim/v2`
     * 美国（AWS）：`https://aws.api.smith.langchain.com/scim/v2`
     * 自托管：`<langsmith_url>/scim/v2`

   * **Secret Token**：输入步骤 3 中生成的 SCIM 令牌。

2. 点击 **Test Connection** 以验证配置。

3. 点击 **Save**。

**步骤 3：配置属性映射**

在 `Mappings` 下配置以下属性映射：

**用户属性**

将 **Target Object Actions** 设置为 `Create` 和 `Update`（为安全起见，开始时禁用 `Delete`）：

|       **LangSmith 应用属性**       |               **Microsoft Entra ID 属性**              | **匹配优先级** |
| :----------------------------: | :--------------------------------------------------: | :-------: |
|           `userName`           |                  `userPrincipalName`                 |           |
|            `active`            |                `Not([IsSoftDeleted])`                |           |
| `emails[type eq "work"].value` |                        `mail`1                       |           |
|        `name.formatted`        | `displayName` 或 `Join(" ", [givenName], [surname])`2 |           |
|          `externalId`          |                      `objectId`3                     |     1     |

1. 用户的电子邮件地址必须存在于 Entra ID 中。
2. 如果您的 `displayName` 不符合 `Firstname Lastname` 的格式，请使用 `Join` 表达式。
3. 为避免不一致，这应与 SAML NameID 断言和 `sub` OAuth2.0 声明匹配。对于云中的 SAML SSO，必需的声明 `Unique User Identifier (Name ID)` 应为 `user.objectID`，`Name identifier format` 应为 `persistent`。

**组属性**

将 **Target Object Actions** 仅设置为 `Create` 和 `Update`（为安全起见，开始时禁用 `Delete`）：

| **LangSmith 应用属性** | **Microsoft Entra ID 属性** | **匹配优先级** |
| :----------------: | :-----------------------: | :-------: |
|    `displayName`   |       `displayName`1      |     1     |
|    `externalId`    |         `objectId`        |           |
|      `members`     |         `members`         |           |

1. 组必须遵循[组命名约定](#group-naming-convention)部分描述的命名约定。
   如果您的公司有组命名策略，您应该改为从 `description` Microsoft Entra ID 属性进行映射，并根据[组命名约定](#group-naming-convention)部分设置描述。

**步骤 4：分配用户和组**

1. 在 **Applications** > **Applications** 下，选择您的 LangSmith 企业应用程序。
2. 在 **Assignments** 选项卡下，点击 **Assign**，然后选择 **Assign to People** 或 **Assign to Groups**。
3. 进行所需的选择，然后点击 **Assign** 和 **Done**。

**步骤 5：启用配置**

1. 在 **Provisioning** 下将 **Provisioning Status** 设置为 `On`。
2. 监控初始同步以确保用户和组被正确配置。
3. 验证后，为用户和组映射启用 `Delete` 操作。

有关故障排除，请参阅 [SAML SSO 常见问题](/langsmith/faq#saml-sso-faqs)。如果您在设置 SCIM 时遇到问题，请通过 [support.langchain.com](https://support.langchain.com) 联系 LangChain 支持团队。

#### Okta 配置步骤

<Note>
  您必须使用 [Okta Lifecycle Management](https://www.okta.com/products/lifecycle-management/) 产品。此产品层级是在 Okta 上使用 SCIM 所必需的。
</Note>

<div id="supported-features">
  <b>支持的功能</b>
</div>

* 创建用户
* 更新用户属性
* 停用用户
* 组推送（**不支持组重命名**）
* 导入用户
* 导入组

<div id="add-application-okta-oin">
  <b>步骤 1：从 Okta 集成网络添加应用程序</b>
</div>

<Note>
  如果您已经通过 SAML（云）或 OAuth2.0 与 OIDC（自托管）配置了 SSO 登录，请跳过此步骤。
</Note>

有关云，请参阅 [SAML SSO 设置](#okta)；有关自托管，请参阅 [OAuth2.0 设置](/langsmith/self-host-sso#okta-idp-setup)。

**步骤 2：配置 API 集成**

1. 在 General 选项卡中，确保 `LangSmithUrl` 根据[步骤 1](#add-application-okta-oin)的说明填写
2. 在 Provisioning 选项卡中，选择 `Integration`。
3. 选择 `Edit`，然后选择 `Enable API integration`。
4. 对于 API Token，粘贴您[上面生成](#step-3-generate-scim-bearer-token)的 SCIM 令牌。
5. 保持 `Import Groups` 选中。
6. 要验证配置，请选择 Test API Credentials。
7. 选择 Save。
8. 保存 API 集成详细信息后，左侧会出现新的设置选项卡。选择 `To App`。
9. 选择 Edit。
10. 选择 Create Users、Update Users 和 Deactivate Users 的 Enable 复选框。
11. 选择 Save。
12. 在 Assignments 选项卡中分配用户和/或组。分配的用户将在您的 LangSmith 组中创建和管理。

**步骤 3：配置用户配置设置**

1. 配置配置：在 `Provisioning > To App > Provisioning to App` 下，点击 `Edit`，然后选中 `Create Users`、`Update User Attributes` 和 `Deactivate Users`。
2. 在 `<application_name> Attribute Mappings` 下，按如下所示设置用户属性映射，并删除其余部分：

<img src="https://mintcdn.com/other-405835d4/ozzEsp14Hd9jH9J-/langsmith/images/scim_okta_user_attributes.png?fit=max&auto=format&n=ozzEsp14Hd9jH9J-&q=85&s=6270bc9357e82fb472a38ae2c3404d44" alt="SCIM Okta 用户属性映射" width="748" height="467" data-path="langsmith/images/scim_okta_user_attributes.png" />

**步骤 4：推送组**

<Note>
  Okta 不支持除组名本身之外的组属性，因此组名\_必须\_遵循[组命名约定](#group-naming-convention)部分描述的命名约定。
</Note>

按照 Okta 的[启用组推送](https://help.okta.com/en-us/content/topics/users-groups-profiles/usgp-enable-group-push.htm)说明配置要按名称或按规则推送的组。

#### 其他身份提供商

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

### SSO 组同步（替代方案）

<Note>
  SSO 组同步适用于配置了 SAML SSO（云）或 OIDC（自托管）的[企业计划](/langsmith/pricing-plans)上的组织。[联系销售](https://www.langchain.com/contact-sales)以了解更多信息。
</Note>

SSO 组同步是 [SCIM](#set-up-scim-for-your-organization) 的更简单替代方案，适用于无法或不愿配置 SCIM 组推送的组织。LangSmith 不是在单独的同步间隔从 IdP 向 LangSmith 推送组，而是在登录时直接从 SSO 令牌中的可配置声明读取组成员身份，并使用与 SCIM 相同的[命名约定](#group-naming-convention)应用组织级和工作区级角色分配。

这是 GitLab（SAML 组链接）、Grafana（团队同步）、HashiCorp Vault（`groups_claim`）和 Atlassian（JIT 组分配）使用的成熟模式。

#### 何时使用 SSO 组同步与 SCIM

SSO 组同步和 SCIM 在技术上可以共存（每个仅管理标记为其自身配置方法的身份），但我们建议每个组织选择**一种机制**，而不是两者都选，以避免混淆优先级行为。

|               | SSO 组同步                                                          | SCIM                                                       |
| ------------- | ---------------------------------------------------------------- | ---------------------------------------------------------- |
| **同步触发器**     | 在每次 SSO 登录时                                                      | 从 IdP 主动推送（约 1 小时间隔）                                       |
| **IdP 管理员参与** | 最小化，只需在 SSO 令牌中包含组                                               | 必需，配置 SCIM 配置应用程序                                          |
| **取消配置**      | 滞后直到下次登录                                                         | 通过 IdP 推送近实时                                               |
| **命名约定**      | 重用 [SCIM 约定](#group-naming-convention)                           | [SCIM 约定](#group-naming-convention)                        |
| **自定义分隔符**    | 重用组织级 [`scim_group_name_separator`](#configure-custom-separator) | [`scim_group_name_separator`](#configure-custom-separator) |

当 IdP 管理员参与最小化且响应式（登录时）同步可接受时，选择 **SSO 组同步**。当需要主动配置/取消配置和近实时组成员身份更新时，选择 **SCIM**。

#### 配置

1. 在您的 IdP 中：将用户的组成员身份添加到 SSO 令牌声明（默认声明名称：`groups`）。组名必须遵循 [SCIM 命名约定](#group-naming-convention)。
2. 在 LangSmith 中：转到 **Settings** → **Members and roles** → **SSO Configuration** → **SSO Groups Sync** 并配置以下内容：

   | 设置                                    | 描述                           |
   | ------------------------------------- | ---------------------------- |
   | **Enable SSO Groups Sync**            | 根据 SSO 令牌中的组成员身份自动分配工作区角色。   |
   | **Groups claim field**（默认 `groups`）   | SSO 令牌中包含组成员身份的声明名称。         |
   | **Sync workspace/role assignments**   | 在每次 SSO 登录时根据组名更新工作区成员身份和角色。 |
   | **Require matching group to sign in** | 如果 SSO 令牌中没有匹配命名约定的组，则阻止登录。  |

您也可以通过向 SSO 设置端点发送 `PATCH` 来通过 API 配置这些设置：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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
  }'
```

<Warning>
  禁用 SSO 组同步不会移除现有访问权限。由 SSO 组配置的用户将保留其当前访问权限，直到下次登录。
</Warning>

#### 配置您的 IdP 以发出组 SAML 属性（云）

<Note>
  本节仅适用于**企业云**。自托管客户在其 OIDC IdP 中直接配置组，请参阅[自托管上的 SSO 组同步](/langsmith/self-host-sso#sso-groups-sync)。
</Note>

要使用户的组成员身份在登录时对 LangSmith 可见，您需要做两件事：

1. 配置您的 IdP 的 SAML 应用程序以发出多值组属性。
2. 添加一个匹配的条目到 [Supabase 属性映射](#supabase-attribute-mapping)，以便该属性流向 JWT（选中 **Array**）。

**要求：**

* IdP 属性名称（例如，`groups`）必须与 **Supabase 属性映射**条目和 **Groups claim field** 值（默认 `groups`）都匹配。
* 该属性必须是**多值的**（字符串列表），而不是单个分隔字符串。如果您的 IdP 仅支持单值属性，您需要为每个组发出一个属性语句。
* 每个值必须是遵循 [SCIM 命名约定](#group-naming-convention)的组名。
* 只有名称匹配约定的组才会被处理。LangSmith 会忽略不符合其命名约定的组，例如组织范围的目录组或应用程序分配组。您不需要在 IdP 端过滤这些——发出所有组，LangSmith 会跳过不相关的组。

**每个 IdP 的设置：**

<Tabs>
  <Tab title="Okta">
    在 LangSmith SAML 应用程序中：

    1. **Directory** → **Profile Editor** → 选择 LangSmith 应用程序的用户配置文件。
    2. 添加一个名为 `groups` 的自定义属性，**Type** 为 `string array`。
    3. **Sign On** → 编辑 SAML 设置并添加属性语句：
       * **Name**：`groups`
       * **Name format**：`Unspecified`（或 `Basic`）
       * **Filter**：`Matches regex`，使用 `.*` 发送所有组，或使用更严格的正则表达式（例如，`^LS:.*`）限制为 LangSmith 前缀的组。
  </Tab>

  <Tab title="Entra ID (Azure)">
    在 LangSmith 企业应用程序中：

    1. **Single sign-on** → **Attributes & Claims** → **Add a group claim**。
    2. 选择要发出的组（通常是 **Groups assigned to the application**）。
    3. 将 **Source attribute** 设置为 `Cloud-only group display names`，以便发送组名（必须匹配[命名约定](#group-naming-convention)）而不是对象 ID。
    4. 将声明 **Name** 设置为 `groups`（或您配置的 **Groups claim field** 值），不带命名空间。
  </Tab>

  <Tab title="Google Workspace">
    Google 的 SAML SSO 不会原生地将 Google 组成员身份作为 SAML 属性发出。要将 SSO 组同步与 Google Workspace 一起使用，您必须：

    * 通过将组公开为 SAML 属性的目录同步工具管理组成员身份，或
    * 改用 [SCIM](#set-up-scim-for-your-organization)，它支持从 Google Workspace 推送组。
  </Tab>
</Tabs>

#### 组命名示例

组名遵循 [SCIM 命名约定](#group-naming-convention)。`<workspace_role>` 部分接受内置角色和按名称指定的[自定义工作区角色](/langsmith/rbac#custom-roles)。

| 意图                                | 示例组名                                         |
| --------------------------------- | -------------------------------------------- |
| 组织管理员（在所有工作区授予工作区管理员）             | `LS:Organization Admins`                     |
| `Production` 中的工作区管理员             | `LS:Organization User:Production:Admin`      |
| `Engineering` 中的工作区编辑者            | `LS:Organization User:Engineering:Editor`    |
| `Marketing` 中的工作区查看者              | `LS:Organization User:Marketing:Viewer`      |
| `Production` 中的自定义角色 `Annotators` | `LS:Organization User:Production:Annotators` |

#### 行为

* **命名约定**：组名遵循与 SCIM 相同的格式（例如，`LS:Organization Admins` 表示组织管理员，`LS:Organization User:Production:Editor` 表示工作区范围）。完整格式请参阅[组命名约定](#group-naming-convention)。分隔符通过 [`scim_group_name_separator`](#configure-custom-separator) 按组织配置，并与 SCIM 共享。
* **格式错误的组名**：不符合约定的组名会被静默跳过（记录日志），并且不会阻止有效组的登录。
* **登录门控**：当启用 **Require matching group to sign in** 且 SSO 令牌包含零个匹配组时，登录将被阻止。
* **优先级**：SSO 组同步不会修改 SCIM 来源的、手动分配的或 JIT 配置的成员身份。它对其自身的分配具有完全权威性，并在每次登录时根据令牌的组成员身份替换它们。
* **组织管理员传播**：如果用户从其组中获得组织管理员角色，他们将在所有工作区中被授予工作区管理员（与 SCIM 行为相同）。

#### 注意事项

* **取消配置延迟**：与 SCIM（主动推送）不同，SSO 组同步仅在登录时更新。从 IdP 中移除组的用户将保留其现有的工作区访问权限，直到下次 LangSmith 登录。**Require matching group to sign in** 门控通过在下次登录时完全阻止用户来缓解此问题。
* **无回溯同步**：更改角色映射或启用该功能不会更新现有用户，直到他们再次登录。
* **需要命名约定**：客户必须按照 SCIM 约定命名其 IdP 组。如果您的 IdP 组遵循不同的命名策略，使用基于 `description` 映射的 SCIM（请参阅[组属性](#group-attributes)）可能更合适。

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档连接](/use-these-docs)到 Claude、VSCode 等，通过 MCP 获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/langsmith/user-management.mdx)或[提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
