本页面涵盖 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 设置.
初始配置
- 在您的 IdP 中:使用以下详细信息配置 SAML 应用程序,然后复制元数据 URL 或 XML 以供步骤 3 使用。
- 单点登录 URL(或 ACS URL):
2. 受众 URI(或 SP 实体 ID): 3. Name ID 格式:电子邮件地址。 4. 应用程序用户名:电子邮件地址。 5. 必需声明: sub 和 email.
- 在 LangSmith 中:转到 **设置** -> **成员和角色** -> **SSO 配置**。填写必填信息并提交以激活 SSO 登录:
- 填写以下任一内容:
SAML metadata URLorSAML metadata XML. - 选择
Default workspace role和Default workspaces。通过 SSO 登录的新用户将被添加到具有所选角色的指定工作区。
- -
Default workspace role和Default workspaces可以编辑。更新的设置将仅适用于新用户,不适用于现有用户。 - - (即将推出)
SAML metadata URL和SAML metadata XMLare 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 属性(例如 email 和 sub)自动传递到用户的 JWT。您的 IdP 发出的任何其他非标准 SAML 属性(例如, groups 用于 SSO 组同步)必须通过 Supabase 显式转发,LangSmith 才能读取。
属性流 (1:1):
- **IdP**:发出带有配置名称的 SAML 属性(例如,
groups). - **Supabase**:仅当属性名称出现在 **Supabase 属性映射** 表中时才将属性转发到用户的 JWT。标准属性会自动转发;非标准属性除非明确列出,否则会被丢弃。
- **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 应用程序集成
- 使用特权角色登录 Azure 门户 (例如,
Global Administrator)。在左侧导航窗格中,选择Entra IDservice.
- 导航到 **企业应用程序** ,然后选择 **所有应用程序**.
- 点击 **创建您自己的应用程序**.
- 在 **创建您自己的应用程序** window:
- 为您的应用程序输入名称(例如,
LangSmith). - 选择 **集成您在库中找不到的任何其他应用程序(非库)**.
- 点击 **创建**.
第 2 步:配置 Entra ID 应用程序并获取 SAML 元数据
- 打开您创建的企业应用程序。
- 在左侧导航中,选择 **管理** > **单一登录**.
- 在单一登录页面上,点击 **SAML**.
- 更新 **基本 SAML 配置**:
Identifier (Entity ID):
Reply URL (Assertion Consumer Service URL):
- 保留
Relay State,Logout Url,然后Sign on URLempty. - 点击 **保存**.
- 确保所需声明存在 **命名空间**:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims:
sub:user.objectid.emailaddress:user.userprincipalnameoruser.mail(如果使用后者,确保所有用户都填写了Email字段在Contact Information).- (可选)有关 SCIM,请参阅 设置文档 了解具体说明
Unique User Identifier (Name ID).
- 在基于 SAML 的登录页面上的 **SAML 证书**,复制 **应用联合元数据 URL**.
第 3 步:设置 LangSmith SSO 配置
按照以下说明进行操作 初始配置 中的 Fill in required information 步骤,使用上一步中的元数据 URL。
第 4 步:验证 SSO 设置
- Assign the application to users/groups in Entra ID:
- 选择 **管理** > **用户和组**.
- 点击 **Add user/group**.
- 在 **添加分配** window:
- 在 **用户**,点击 **未选择任何项**.
- 搜索要分配到企业应用程序的用户,然后点击 **选择**.
- 验证用户已选中,然后点击 **分配**.
- 让用户通过以下位置的唯一登录 URL 登录 **SSO 配置** 页面,或转到 **管理** > **单一登录** 并选择 **测试(应用名称)单点登录**.
有关更多信息,请参阅 Google 的 文档.
第 1 步:创建并配置 Google Workspace SAML 应用
- 确保您已登录具有适当权限的管理员账户。
- 在管理控制台中,转到 **菜单** -> **应用** -> **Web 和移动应用**.
- 点击 **添加应用** 然后 **添加自定义 SAML 应用**.
- 输入应用名称,并可选择上传图标。点击 **继续**.
- 在 Google 身份提供商详细信息页面上,下载 **IDP 元数据** 并将其保存以供第 2 步使用。点击 **继续**.
- 在
Service Provider Details窗口中,输入:
ACS URL:
Entity ID:
- 将
Start URL和Signed response框留空。 - 将
Name ID格式设置为EMAIL并保留Name ID为默认值(Basic Information > Primary email). - 点击
Continue.
- 使用
Add mapping确保所需声明存在: Basic Information > Primary email->email
第 2 步:设置 LangSmith SSO 配置
按照 初始配置 中的说明进行操作, Fill in required information 步骤,使用上一步的 IDP metadata 作为元数据 XML。
第 3 步:在 Google 中启用 SAML 应用
- 在
Menu -> Apps -> Web and mobile apps
- 下选择 SAML 应用
User access.
- 启用服务:
- 若要为组织中的所有人启用服务,请点击
On for everyone,然后点击Save.
- 若要为组织单位启用服务:
- 在左侧,选择组织单位,然后
On. - 若服务状态设置为
Inherited且您希望即使父级设置更改也保留更新后的设置,请点击Override. - 若服务状态设置为
Overridden,请点击Inherit恢复为与父级相同的设置,或点击Save保留新设置,即使父级设置更改。
- 若要为跨组织单位或组织单位内的用户组启用服务,请选择一个访问群组。详情请参阅 使用群组自定义服务访问.
- 确保您的用户用于登录 LangSmith 的电子邮件地址与用于登录 Google 域的电子邮件地址一致。
步骤 4:验证 SSO 设置
让有访问权限的用户通过 **SSO 配置** 页面上的唯一登录 URL 登录,或前往 Google 中的 SAML 应用程序页面并点击 **测试 SAML 登录**.
Okta
支持的功能
- - IdP 发起 SSO(单点登录)
- - SP 发起 SSO
- - 即时配置
- - 仅强制 SSO
配置步骤
更多信息,请参阅 Okta 的 文档.
步骤 1:创建并配置 Okta SAML 应用程序
通过 Okta 集成网络(推荐)- 登录 Okta.
- 在右上角,选择管理。从管理区域看不到此按钮。
- 选择
Browse App Integration Catalog. - 找到并选择 LangSmith 应用程序。
- 在应用程序概述页面上,选择添加集成。
- 保留
ApiUrlBaseempty. - 填写
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** 从 **登录选项** 页面以在下一步使用。
通过自定义应用程序集成
- 以管理员身份登录 Okta,然后前往 **Okta 管理控制台**.
- 在 **应用程序** > **应用程序** 点击 **创建应用程序集成**.
- 选择 **SAML 2.0**.
- 输入
App name(e.g.,LangSmith)并可选地输入 **应用程序徽标**,然后点击 **下一步**.
- 在 **配置 SAML** page:
Single sign-on URL(ACS URL)。保持Use this for Recipient URL and Destination URLchecked:
Audience URI (SP Entity ID):
Name ID format: **持久化**.Application username:email.- 将其他字段留空或设置为其默认值。
- 点击 **下一步**.
- 点击 **完成**.
- 复制 **元数据 URL** 从 **登录** 页面以在下一步使用。
第 2 步:设置 LangSmith SSO 配置
请按照以下位置的说明操作 初始配置 中的 **填写必填信息** 步骤,使用上一步中的元数据 URL。
第 3 步:在 Okta 中为 LangSmith 分配用户
- 在 **应用程序** > **应用程序**中,选择第 1 步创建的 SAML 应用程序。
- 在 **分配** 选项卡中,点击 **分配** 然后选择 **分配给人** or **分配给组**.
- 进行所需的选择,然后 **分配** 和 **完成**.
第 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 或域名(详情) 或基于代理的解决方案(详情)来提供连接。
角色优先级
当用户属于同一工作区的多个组时,按以下优先级规则处理:
- **组织管理员组** 具有最高优先级。这些组中的用户将
Admin在所有工作区中具有管理员权限。 - **最近创建的工作区特定组** 优先于其他工作区组。
邮箱验证
仅限云端,使用 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.formatted | displayName OR givenName + familyName<sup>3</sup> | |
givenName | givenName | |
familyName | familyName | |
externalId | sub<sup>4</sup> | 1 |
userNameLangSmith 不需要此字段- 需要电子邮件地址
- 如果您的
displayName与以下格式不匹配Firstname Lastname - 为避免不一致,这应该与 SAML
NameID云客户的断言或sub自托管的 OAuth2.0 声明。
组属性
| **LangSmith 应用属性** | **身份提供程序属性** | **匹配优先级** |
|---|---|---|
displayName | displayName<sup>1</sup> | 1 |
externalId | objectId | |
members | members |
1. 组必须遵循中描述的命名约定 组命名约定 section. 如果您的公司有组命名策略,则应从以下位置映射 description 身份提供程序属性和 根据以下内容设置描述 组命名约定 section.
步骤 1 - 配置 SAML SSO(仅限云)
有两种场景用于 SAML SSO configuration:
- 如果您的组织已配置 SAML SSO,则应跳过最初添加应用程序的步骤(从 Okta Integration Network 添加应用程序 or 创建新的 Entra ID 应用程序集成),因为您已经配置了应用程序,只需要启用配置。
- 如果您是首次随 SCIM 一起配置 SAML SSO,请先按照以下说明操作 设置 SAML SSO, _然后_ 按照此处的说明启用 SCIM。
NameID 格式
LangSmith 使用 SAML NameID 来标识用户。NameID 是 SAML 响应中的必填字段,且不区分大小写。
NameID 必须:
- 对每个用户都是唯一的。
- 是一个持久值,永不更改,例如随机生成的唯一用户 ID。
- 在每次登录尝试时必须完全匹配。它不应依赖于用户输入。
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
- 使用特权角色登录 Azure 门户 (例如
Global Administrator). - 导航到您现有的 LangSmith 企业应用程序。
- 在左侧导航中,选择 **管理** > **配置**.
- 点击 **开始**.
步骤 2:配置管理员凭据
- 在 **管理员凭据**:
- 租户 URL:
- - Self-hosted:
<langsmith_url>/scim/v2 - 密钥令牌输入步骤3中生成的SCIM Bearer Token。
- 点击 **测试连接** 验证配置。
- 点击 **保存**.
步骤3:配置属性映射
在以下位置配置属性映射 Mappings:
用户属性
设置 **目标对象操作** to Create 和 Update (从以下开始 Delete 为安全起见,先禁用):
| **LangSmith应用属性** | **Microsoft Entra ID属性** | **匹配优先级** |
|---|---|---|
userName | userPrincipalName | |
active | Not([IsSoftDeleted]) | |
emails[type eq "work"].value | mail1 | |
name.formatted | displayName OR Join(" ", [givenName], [surname])2 | |
externalId | objectId3 | 1 |
- 用户的电子邮件地址必须存在于Entra ID中。
- 如果您的
Join表达式与displayName的格式不匹配,请使用Firstname Lastname. - 为避免不一致,这应与SAML NameID声明和
subOAuth2.0声明匹配。对于云中的SAML SSO,Unique User Identifier (Name ID)必需的声明应为user.objectID而Name identifier format应为persistent.
组属性
设置 **目标对象操作** to Create 和 Update 仅限(从以下开始 Delete 为安全起见,先禁用):
| **LangSmith应用属性** | **Microsoft Entra ID属性** | **匹配优先级** |
|---|---|---|
displayName | displayName1 | 1 |
externalId | objectId | |
members | members |
1. 组必须遵循 组命名约定 section. 如果贵公司有组命名策略,则应改为从 description Microsoft Entra ID属性映射,并 根据 组命名约定 section.
设置描述。步骤4:分配用户和组
- 在 **应用程序** > **应用程序**下,选择您的LangSmith Enterprise应用程序。
- 在 **分配** 选项卡上,点击 **分配** 然后选择 **分配给人员** or **分配给组**.
- 进行所需的选择,然后 **分配** 和 **完成**.
步骤5:启用预配
- 设置 **配置状态** to
On在 **配置**. - 监控初始同步以确保用户和组正确配置。
- 验证后,启用
Delete用户和组映射的操作。
有关故障排除,请参阅 SAML SSO 常见问题。如果设置 SCIM 时遇到问题,请通过以下方式联系 LangChain 支持团队 support.langchain.com.
Okta 配置步骤
支持的功能- - 创建用户
- - 更新用户属性
- - 停用用户
- - 组推送(**不支持组重命名**)
- - 导入用户
- - 导入组
请参阅 SAML SSO 设置 (云端)或 OAuth2.0 设置 用于自托管。
步骤 2:配置 API 集成
- 在“常规”选项卡中,确保
LangSmithUrl根据 步骤 1 - 在“配置”选项卡中,选择
Integration. - 选择
Edit然后Enable API integration. - 对于 API 令牌,请粘贴您 在上面生成的 SCIM 令牌.
- 保留
Import Groupschecked. - 要验证配置,请选择“测试 API 凭据”。
- 选择“保存”。
- 保存 API 集成详细信息后,左侧会出现新的设置选项卡。选择
To App. - 选择“编辑”。
- 为“创建用户”、“更新用户”和“停用用户”选择“启用”复选框。
- 选择“保存”。
- Assign users and/or groups in the Assignments tab. Assigned users are created and managed in your LangSmith group.
步骤 3:配置用户配置设置
- 配置配置:在
Provisioning > To App > Provisioning to App下,点击Edit,然后选中Create Users,Update User Attributes和Deactivate Users. - 在
<application_name> Attribute Mappings下,按下图设置用户属性映射,然后删除其余的:
步骤 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_separator | scim_group_name_separator |
选择 **SSO组同步** 当IdP管理员参与最少且可接受响应式(登录时)同步时。选择 **SCIM** when proactive provisioning/deprovisioning and near real-time group membership updates are required.
配置
- 在您的IdP中:将用户的组成员资格添加到SSO令牌声明中(默认声明名称:
groups)。组名称必须遵循 SCIM命名约定. - 在LangSmith中:转到 **设置** → **成员和角色** → **SSO配置** → **SSO组同步** 并配置以下内容:
| 设置 | 描述 |
|---|---|
| **启用 SSO 群组同步** | 根据 SSO 令牌中的群组成员资格自动分配工作区角色。 |
**群组声明字段** (默认值 groups) | SSO 令牌中包含群组成员资格的声明名称。 |
| **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 可见,您需要做两件事:
- 配置您的 IdP 的 SAML 应用程序以发出多值群组属性。
- 在 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 企业应用中:
- **单点登录** → **属性和声明** → **添加群组声明**.
- 选择要发送的群组(通常为 **分配给应用的群组**).
- 设置 **源属性** to
Cloud-only group display names以便发送群组名称(必须与 命名约定匹配)而不是对象 ID。 - 设置声明 **名称** to
groups(或您配置的 **群组声明字段** 值),不带命名空间。
Google Workspace
Google 的 SAML SSO 默认不将 Google 群组成员资格作为 SAML 属性发出。要将 SSO 群组同步与 Google Workspace 结合使用,您必须:
- - 通过目录同步工具管理群组成员资格,该工具将群组公开为 SAML 属性,或
- - 使用 SCIM 代替,它支持从 Google Workspace 推送群组。
群组命名示例
群组名称遵循 SCIM 命名约定。 <workspace_role> 段接受内置角色和 自定义工作区角色 (按名称)。
| 意图 | 示例群组名称 |
|---|---|
| 组织管理员(在所有工作区中授予工作区管理员权限) | LS:Organization Admins |
工作区管理员(位于 Production | LS:Organization User:Production:Admin |
工作区编辑者(位于 Engineering | LS:Organization User:Engineering:Editor |
工作区查看者(位于 Marketing | LS:Organization User:Marketing:Viewer |
自定义角色 Annotators in Production | LS: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的映射(参见 群组属性)可能更合适。