主题
用户管理
本页讲述 LangSmith 中的用户管理功能,包括访问控制、身份验证和自动化用户预配:
- 设置访问控制:配置基于角色的访问控制(RBAC)以管理工作区内用户权限,包括创建自定义角色并把它们指派给用户。
- SAML SSO(Enterprise 方案):为企业客户用 SAML 2.0 设置单点登录身份验证,包括流行身份提供商的配置。
- SCIM 用户预配(Enterprise 方案):用 SCIM 在你的身份提供商与 LangSmith 之间自动化用户预配与去配。
设置访问控制
TIP
在设置访问控制之前,阅读管理概览页可能会有帮助。
LangSmith 依赖 RBAC 来管理一个工作区内的用户权限。这让你能控制谁能访问你的 LangSmith 工作区以及他们在其中能做什么。带 workspaces:manage 权限的用户能管理工作区设置,带 workspaces:manage-members 权限的用户能添加、移除和更新工作区成员。内置的 Workspace Admin 角色包含这两个权限。
工作区角色及其权限的完整参考,参阅基于角色的访问控制指南。关于每个角色能执行的每个具体操作,参阅组织与工作区操作参考。
创建一个角色
默认情况下,LangSmith 带一组系统角色:
Admin:对工作区内所有资源有完全访问。Viewer:对工作区内所有资源有只读访问。Editor:有除工作区管理(添加/移除用户、更改角色、配置服务密钥)之外的完全权限。
如果这些不适合你的访问模型,Organization Admins 能创建自定义角色以满足你的需要。
要创建一个角色,导航到 Organization settings 页中 Members and roles 部分的 Roles 标签。注意你创建的新角色将在你组织内的所有工作区可用。
点击 Create Role 按钮创建一个新角色。会打开一个 Create role 表单。

为你想控制访问的各个 LangSmith 资源指派权限。
把一个角色指派给用户
角色设置好之后,你能把它们指派给用户。要把一个角色指派给用户,导航到 Organization settings 页中 Workspaces 部分的 Workspace members 标签
每个用户都会有一个 Role 下拉菜单,你能用它把角色指派给他们。

你也能以一个给定角色邀请新用户。

为你的组织设置 SAML SSO
单点登录(SSO)功能**对企业云(Enterprise Cloud)**客户可用,让他们能通过单一身份验证源访问 LangSmith。这让管理员能集中管理团队访问并让信息更安全。
LangSmith 的 SSO 配置用 SAML(Security Assertion Markup Language)2.0 标准构建。SAML 2.0 能把一个身份提供商(IdP)连到你的组织,以获得更容易、更安全的登录体验。
SSO 服务允许用户用一整套凭据(例如一个名字或邮箱地址和密码)访问多个应用。该服务对用户被授予权限的所有应用只身份验证终端用户一次,并消除用户在同一个会话中切换应用时的进一步提示。SSO 的好处包括:
- 为组织所有者精简跨系统的用户管理。
- 让组织能强制执行它们自己的安全策略(例如 MFA)。
- 免去终端用户记住和管理多个密码的需要。通过允许多个应用在一个单一访问点登录,简化终端用户体验。
即时(JIT)预配
LangSmith 在使用 SAML SSO 时支持即时预配。这让一个通过 SAML SSO 登录的人能作为成员自动加入该组织和选定的工作区。关于管理 JIT 预配和用户邀请的详细信息,参阅管理 SSO 组织中的用户访问。
NOTE
JIT 预配只对新用户运行,即那些尚未通过一个不同登录方法以同一邮箱地址拥有该组织访问权的用户。
登录方法与访问
一旦你完成为你的组织的 SAML SSO 配置,用户将能通过 SAML SSO 登录,此外还有其他登录方法,如用户名/密码或 Google 身份验证:
- 通过 SAML SSO 登录时,用户只能访问配置了 SAML SSO 的对应组织。
- 以 SAML SSO 为唯一登录方法的用户没有个人组织。
- 通过任何其他方法登录时,用户能访问配置了 SAML SSO 的组织,以及他们所属的任何其他组织。
强制执行仅 SAML SSO
NOTE
在强制执行仅 SAML SSO 的组织中不支持用户邀请。初始工作区成员资格和角色由 JIT 预配决定,之后的更改能在 UI 中管理。 要更多自动化用户管理的灵活性,LangSmith 支持 SCIM。
要确保用户只能在用 SAML SSO 登录、且不用其他方法时访问该组织,勾选 Allow Invites 复选框。这之后,通过非 SSO 登录方法登录、访问该组织的用户被要求用 SAML SSO 重新登录。取消勾选该复选框就能把此设置切回允许所有登录方法。
NOTE
你必须通过 SAML SSO 登录才能把这个设置更新为 Only SAML SSO。这是为了确保 SAML 设置有效,避免把用户锁在你的组织之外。
关于故障排除,参阅 SAML SSO 常见问题。如果设置 SAML SSO 时遇到问题,通过 support.langchain.com 联系 LangChain 支持团队。
前提条件
NOTE
SAML SSO 对处于 Enterprise 方案的组织可用。联系我们的销售团队以了解更多。
- 你的组织必须在 Enterprise 方案上。
- 你的身份提供商(IdP)必须支持 SAML 2.0 标准。
- 只有
Organization Admins能配置 SAML SSO。
关于连同 SAML 一起用 SCIM 做用户预配和去配的说明确,参阅 SCIM 设置。
初始配置
- 在你的 IdP 中:配置一个带以下详情的 SAML 应用,然后复制元数据 URL 或 XML 供步骤 3 使用。
NOTE
以下 URL 取决于你的组织在 GCP US、GCP EU、GCP APAC 还是 AWS US 云区域。确保你选对链接。
Single sign-on URL(或 ACS URL):
Region Host / URL GCP US {`$ / https://${prefix_0 || "api.smith"}.langchain.com${suffix_0 || ""}`}GCP EU {`$ / https://eu.${prefix_0 || "api.smith"}.langchain.com${suffix_0 || ""}`}GCP APAC {`$ / https://apac.${prefix_0 || "api.smith"}.langchain.com${suffix_0 || ""}`}AWS US {`$ / https://aws.${prefix_0 || "api.smith"}.langchain.com${suffix_0 || ""}`}Audience URI(或 SP Entity ID):
Region Host / URL GCP US {`$ / https://${prefix_1 || "api.smith"}.langchain.com${suffix_1 || ""}`}GCP EU {`$ / https://eu.${prefix_1 || "api.smith"}.langchain.com${suffix_1 || ""}`}GCP APAC {`$ / https://apac.${prefix_1 || "api.smith"}.langchain.com${suffix_1 || ""}`}AWS US {`$ / https://aws.${prefix_1 || "api.smith"}.langchain.com${suffix_1 || ""}`}Name ID 格式:email address。
Application username:email address。
必需声明:
sub和email。在 LangSmith 中:前往 Settings -> Members and roles -> SSO Configuration。填入所需信息并提交以激活 SSO 登录:
填入
SAML metadata URL或SAML metadata XML之一。选择
Default workspace role和Default workspaces。通过 SSO 登录的新用户会以所选角色被添加到指定的工作区。Default workspace role和Default workspaces可编辑。更新后的设置只适用于新用户,不适用于现有用户。- (即将推出)
SAML metadata URL和SAML metadata XML可编辑。这通常仅在加密密钥轮换/过期、或元数据 URL 变了但仍用同一 IdP 时才需要。
SAML 属性映射
NOTE
SAML 属性映射是一个仅云功能。自托管部署直接与 IdP 配置 SAML/OIDC 属性——见用 OAuth2.0 和 OIDC 设置 SSO。
LangSmith 云会把一小组标准 SAML 属性(如 email 和 sub)自动传上用户的 JWT。你的 IdP 发出的任何额外、非标准 SAML 属性(例如为 SSO Groups Sync 的 groups)必须先显式列在 SAML 属性映射表中,LangSmith 才能读它。
属性流(1:1):
- IdP:发出一个带配置名的 SAML 属性(例如
groups)。 - SAML 属性映射:只有当属性名出现在 SSO 提供商的 SAML Attribute Mapping 表中时,才把该属性传上用户的 JWT。标准属性自动转发;非标准属性除非显式列出否则被丢弃。
- LangSmith:按名读 JWT 声明(例如 SSO Groups Sync 的 Groups claim field 的值)。
属性名端到端保留:IdP 属性名、SAML 属性映射条目,以及下游的 LangSmith 设置都用同一个字符串。
配置
在 Settings > Members and roles > SSO Configuration 中,滚到 SAML Attribute Mapping 节,并为你想转发的每个非标准属性添加一行:
| 列 | 描述 |
|---|---|
| Attribute name | 你的 IdP 发出的 SAML 属性名。必须匹配 LangSmith 下游期望的 JWT 声明名(对 SSO Groups Sync,它匹配 Groups claim field 值)。 |
| Array | 若该属性是多值的(一个字符串列表)则勾选它。标量(单值)属性保持不勾选。例子:对 groups 勾选它;对 full_name 保持不勾选。 |
对每个额外属性点击 Add row,然后 Save。空的映射表意味着没有非标准属性流向 JWT。
Entra ID(Azure)
更多信息,见 Microsoft 的文档。
步骤 1:创建一个新的 Entra ID 应用集成
用一个特权角色(例如
Global Administrator)登录 Azure 门户。在左侧导航窗格,选择Entra ID服务。导航到 Enterprise Applications,然后选择 All Applications。
点击 Create your own application。
在 Create your own application 窗口中:
- 为你的应用输入一个名字(例如
LangSmith)。 - 选择 Integrate any other application you don't find in the gallery (Non-gallery)。
- 为你的应用输入一个名字(例如
点击 Create。
步骤 2:配置 Entra ID 应用并获取 SAML 元数据
打开你创建的那个企业应用。
在左侧导航,选择 Manage > Single sign-on。
在 Single sign-on 页面,点击 SAML。
更新 Basic SAML Configuration:
Identifier (Entity ID):Region Host / URL GCP US {`$ / https://${prefix_2 || "api.smith"}.langchain.com${suffix_2 || ""}`}GCP EU {`$ / https://eu.${prefix_2 || "api.smith"}.langchain.com${suffix_2 || ""}`}GCP APAC {`$ / https://apac.${prefix_2 || "api.smith"}.langchain.com${suffix_2 || ""}`}AWS US {`$ / https://aws.${prefix_2 || "api.smith"}.langchain.com${suffix_2 || ""}`}Reply URL (Assertion Consumer Service URL):Region Host / URL GCP US {`$ / https://${prefix_3 || "api.smith"}.langchain.com${suffix_3 || ""}`}GCP EU {`$ / https://eu.${prefix_3 || "api.smith"}.langchain.com${suffix_3 || ""}`}GCP APAC {`$ / https://apac.${prefix_3 || "api.smith"}.langchain.com${suffix_3 || ""}`}AWS US {`$ / https://aws.${prefix_3 || "api.smith"}.langchain.com${suffix_3 || ""}`}把
Relay State、Logout Url和Sign on URL留空。点击 Save。
确保必需声明带 Namespace 存在:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims:sub:user.objectid。emailaddress:user.userprincipalname或user.mail(若用后者,确保所有用户在Contact Information下填了Email字段)。- (可选)对于 SCIM,关于
Unique User Identifier (Name ID)的具体说明见设置文档。
在 SAML-based Sign-on 页面,SAML Certificates 下,复制 App Federation Metadata URL。
步骤 3:设置 LangSmith SSO 配置
遵循初始配置下 Fill in required information 步骤中的说明,用前一步的元数据 URL。
步骤 4:验证 SSO 设置
在 Entra ID 中把该应用指派给用户/群组:
选择 Manage > Users and groups。
点击 Add user/group。
在 Add Assignment 窗口中:
- 在 Users 下,点击 None Selected。
- 搜索你想指派给企业应用的用户,然后点击 Select。
- 核实用户已被选中,并点击 Assign。
让用户通过 SSO Configuration 页面的唯一登录 URL 登录,或前往 Manage > Single sign-on 并选择 Test single sign-on with (application name)。
更多信息,见 Google 的文档。
步骤 1:创建并配置 Google Workspace SAML 应用
确保你登录的是一个带适当权限的管理员账户。
在 Admin console 中,前往 Menu -> Apps -> Web and mobile apps。
点击 Add App,然后 Add custom SAML app。
输入应用名,并可选地上传一个图标。点击 Continue。
在 Google Identity Provider details 页面,下载 IDP metadata 并保存以供步骤 2 使用。点击 Continue。
在
Service Provider Details窗口中,输入:ACS URL:Region Host / URL GCP US {`$ / https://${prefix_4 || "api.smith"}.langchain.com${suffix_4 || ""}`}GCP EU {`$ / https://eu.${prefix_4 || "api.smith"}.langchain.com${suffix_4 || ""}`}GCP APAC {`$ / https://apac.${prefix_4 || "api.smith"}.langchain.com${suffix_4 || ""}`}AWS US {`$ / https://aws.${prefix_4 || "api.smith"}.langchain.com${suffix_4 || ""}`}Entity ID:Region Host / URL GCP US {`$ / https://${prefix_5 || "api.smith"}.langchain.com${suffix_5 || ""}`}GCP EU {`$ / https://eu.${prefix_5 || "api.smith"}.langchain.com${suffix_5 || ""}`}GCP APAC {`$ / https://apac.${prefix_5 || "api.smith"}.langchain.com${suffix_5 || ""}`}AWS US {`$ / https://aws.${prefix_5 || "api.smith"}.langchain.com${suffix_5 || ""}`}把
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。 - 若 Service status 设为
Inherited,且你想在父级设置改变时仍保留更新后的设置,点击Override。 - 若 Service status 设为
Overridden,要么点击Inherit回退到与其父级相同的设置,要么点击Save在父级设置改变时仍保留新设置。
- 在左侧,选择该组织单元然后
要为跨或在一个组织单元内的一组用户开启一个服务,选择一个访问组。详情见使用组来自定义服务访问。
确保你用户用来登录 LangSmith 的邮箱地址,与他们用来登录你 Google 域的邮箱地址一致。
步骤 4:验证 SSO 设置
让一个有访问权的用户通过 SSO Configuration 页面的唯一登录 URL 登录,或前往 Google 中的 SAML 应用页面并点击 TEST SAML LOGIN。
Okta
受支持的功能
- IdP 发起的 SSO(单点登录)
- SP 发起的 SSO
- 即时预配
- 强制执行仅 SSO
配置步骤
更多信息,见 Okta 的文档。
步骤 1:创建并配置 Okta SAML 应用
经由 Okta 集成网络(推荐)
登录 Okta。
在右上角,选择 Admin。该按钮在 Admin 区域不可见。
选择
Browse App Integration Catalog。找到并选择 LangSmith 应用。
在应用概览页面,选择 Add Integration。
把
ApiUrlBase留空。填入
AuthHost:Region Host / URL GCP US {`$ / https://${prefix_6 || "api.smith"}.langchain.com${suffix_6 || ""}`}GCP EU {`$ / https://eu.${prefix_6 || "api.smith"}.langchain.com${suffix_6 || ""}`}GCP APAC {`$ / https://apac.${prefix_6 || "api.smith"}.langchain.com${suffix_6 || ""}`}AWS US {`$ / https://aws.${prefix_6 || "api.smith"}.langchain.com${suffix_6 || ""}`}(可选,若计划同时使用 SCIM)填入
LangSmithUrl:Region Host / URL GCP US {`$ / https://${prefix_7 || "api.smith"}.langchain.com${suffix_7 || ""}`}GCP EU {`$ / https://eu.${prefix_7 || "api.smith"}.langchain.com${suffix_7 || ""}`}GCP APAC {`$ / https://apac.${prefix_7 || "api.smith"}.langchain.com${suffix_7 || ""}`}AWS US {`$ / https://aws.${prefix_7 || "api.smith"}.langchain.com${suffix_7 || ""}`}在 Application Visibility 下,保持该框未勾选。
选择 Next。
选择
SAML 2.0。填入
Sign-On Options:Application username format:EmailUpdate application username on:Create and update
从 Sign On Options 页面复制 Metadata URL 供下一步使用。
Via Custom App Integration
NOTE
SCIM 能用一个自定义应用集成工作,尽管推荐 Okta Integration Network 应用。关于 SCIM 设置,见用自定义 SAML 应用配置 SCIM。
以管理员登录 Okta,并前往 Okta Admin console。
在 Applications > Applications 下点击 Create App Integration。
选择 SAML 2.0。
输入一个
App name(例如LangSmith),并可选一个 App logo,然后点击 Next。在 Configure SAML 页面输入以下信息:
Single sign-on URL(ACS URL)。保持Use this for Recipient URL and Destination URL勾选:Region Host / URL GCP US {`$ / https://${prefix_8 || "api.smith"}.langchain.com${suffix_8 || ""}`}GCP EU {`$ / https://eu.${prefix_8 || "api.smith"}.langchain.com${suffix_8 || ""}`}GCP APAC {`$ / https://apac.${prefix_8 || "api.smith"}.langchain.com${suffix_8 || ""}`}AWS US {`$ / https://aws.${prefix_8 || "api.smith"}.langchain.com${suffix_8 || ""}`}Audience URI (SP Entity ID):Region Host / URL GCP US {`$ / https://${prefix_9 || "api.smith"}.langchain.com${suffix_9 || ""}`}GCP EU {`$ / https://eu.${prefix_9 || "api.smith"}.langchain.com${suffix_9 || ""}`}GCP APAC {`$ / https://apac.${prefix_9 || "api.smith"}.langchain.com${suffix_9 || ""}`}AWS US {`$ / https://aws.${prefix_9 || "api.smith"}.langchain.com${suffix_9 || ""}`}Name ID format:Persistent。Application username:email。把其余字段留空或设为其默认。
点击 Next。
点击 Finish。
从 Sign On 页面复制 Metadata URL 供下一步使用。
步骤 2:设置 LangSmith SSO 配置
遵循初始配置下 Fill in required information 步骤中的说明,用前一步的元数据 URL。
步骤 3:在 Okta 中把用户指派给 LangSmith
- 在 Applications > Applications 下,选择步骤 1 中创建的 SAML 应用。
- 在 Assignments 标签下,点击 Assign,然后 Assign to People 或 Assign to Groups。
- 做所需的选择,然后 Assign 和 Done。
步骤 4:验证 SSO 设置
让一个有访问权的用户通过 SSO Configuration 页面的唯一登录 URL 登录,或让一个用户从他们的 Okta 仪表盘选择该应用。
SP 发起的 SSO
一旦配置好服务提供方发起的 SSO,用户就能用一个唯一登录 URL 登录。你能在 LangSmith UI 的 Organization members and roles 然后 SSO configuration 下找到它。
要在登录后把一个用户送到一个特定页面,给登录 URL 添加一个 URL 编码的 redirect_to 路径:
text
https://smith.langchain.com/sso/login/<slug>?redirect_to=%2Fo%2F<organization-id>%2Fprojects%2Fp%2F<project-id>%2Fr%2F<run-id>该值必须解码为同一主机上一个以 / 开头的路径。在上面的例子中它解码为 /o/<organization-id>/projects/p/<project-id>/r/<run-id>,所以用户会落到那个运行上。指向另一主机的值会被拒绝,用户改落到 LangSmith 首页。
对该路径做编码。一个含其自身查询字符串或片段的未编码路径,会在第一个 & 或 # 处被截断,这会把用户送到一个不完整的目的地。
NOTE
大多数链接不需要这个参数。直接打开一个 LangSmith URL,然后用工作邮箱通过 SSO 登录,已经会把用户带回那个页面。当链接必须自己启动 SAML 登录时(例如一个由脚本生成的、或为通过单一身份提供商登录的团队发布的链接),用 redirect_to。
为你的组织设置 SCIM
NOTE
在找一个比 SCIM 更轻量、无需 IdP 管理员介入就能推送群组的替代方案?见下面的 SSO Groups Sync——它在登录时直接从 SSO 令牌读群组成员资格,并复用同一命名约定。
跨域身份管理系统(SCIM)是一个允许自动化用户预配的开放标准。用 SCIM,你能自动预配和去配你 LangSmith 组织和工作区中的用户,让-user 访问与你组织的身份提供商保持同步。
NOTE
SCIM 对处于 Enterprise 方案的组织可用。联系我们的销售团队以了解更多。
SCIM 在 Helm chart 版本 0.10.41(应用版本 0.10.108)及之后可用。
SCIM 支持仅限 API(见下方说明)。
SCIM 消除了手动用户管理的需要,并确保用户访问始终与你组织的身份系统保持最新。这带来:
- 自动化用户管理:依据用户在 IdP 中的状态,用户被自动从 LangSmith 添加、更新和移除。
- 降低管理开销:无需跨多个系统手动管理用户访问。
- 改进的安全:离开你组织的用户会被自动从 LangSmith 去配。
- 一致的访问控制:用户属性和群组成员资格在各系统间同步。
- 扩展团队访问控制:高效管理带许多工作区和自定义角色的大团队。
- 角色指派:为用户群组选择特定的组织角色和工作区角色。
要求
前置条件
- 你的组织必须在 Enterprise 方案上。
- 你的身份提供商(IdP)必须支持 SCIM 2.0。
- 只有 Organization Admins 能配置 SCIM。
- 对于云客户:SAML SSO 必须能为你的组织配置。
- 对于自托管客户:带 Client Secret 的 OAuth 身份验证模式必须启用。
- 对于自托管客户,必须允许从身份提供商到 LangSmith 的网络流量:
NOTE
SCIM 连接通常需要 HTTP/1.1 或更高。如果你的客户端用 HTTP/1.0,你可能会遇到一个 426 Upgrade Required 错误。
角色优先级
当用户属于同一工作区的多个群组时,适用以下优先级:
- Organization Admin 群组 优先级最高。这些群组中的用户将在所有工作区中是
Admin。 - 最近创建的工作区专属群组 优先于其他工作区群组。
NOTE
当一个群组被删除、或一个用户从群组移除时,他们的访问会依据其剩余的群组成员资格更新,遵循那些优先级规则。
SCIM 群组成员资格会覆盖手动指派的、或通过即时(JIT)预配指派的角色。我们建议禁用 JIT 预配以避免冲突。更多细节,参阅管理 SSO 组织中的用户访问。
邮箱验证
仅在云上,用 SCIM 创建一个新用户会触发一封给用户的邮件。 他们必须通过点击这封邮件中的链接来验证其邮箱地址。 该链接 24 小时后过期,并可通过移除并重新用 SCIM 添加该用户来重发(如果需要)。
属性与映射
群组命名约定
WARNING
通过 SCIM 不支持重命名群组。群组名是持久的,因为它们必须匹配 LangSmith 中的角色名和/或工作区名。
群组成员资格用一个特定的命名约定映射到 LangSmith 工作区成员资格和工作区角色。默认地,各部分之间的分隔符是冒号(:),但你能为你组织配置一个自定义分隔符。
NOTE
你能省略群组名中组织角色名那部分的空格。这有助于不允许群组名含空格的身份提供商。例如,LangSmith 接受 OrganizationAdmins 和 OrganizationUser 作为 Organization Admins 和 Organization User 的等价形式。这一灵活性仅适用于组织角色名这个记号。工作区名和工作区角色名把空格当作字面字符,所以省略空格的变体不会与它们带空格的对应形式匹配。
Organization Admin 群组
格式:<optional_prefix>Organization Admin 或 <optional_prefix>Organization Admins
示例:
LS:Organization AdminsLS:OrganizationAdmins(省略空格——对不允许群组名含空格的 IdP 有用)Groups-Organization AdminsOrganization Admin
工作区专属群组
格式:<optional_prefix><org_role_name><separator><workspace_name><separator><workspace_role_name>
分隔符默认为 :(冒号)。受支持的分隔符有::(冒号)、-(连字符)、_(下划线)、(空格)、&(与号)。
带默认冒号分隔符的例子:
LS:Organization User:Production:AnnotatorsLS:OrganizationUser:Production:Annotators(角色名记号中省略空格)Groups-Organization User:Engineering:DevelopersOrganization User:Marketing:Viewers
带连字符分隔符的例子:
LS-Organization User-Production-AnnotatorsLS-OrganizationUser-Production-Annotators(角色名记号中省略空格)Organization User-Engineering-Developers
NOTE
如果你的工作区名含分隔符字符(例如工作区 my-team 配分隔符 -),LangSmith 会自动尝试所有可能的拆分以找到一个有效的工作区和角色组合。
配置自定义分隔符
要更改你组织的 SCIM 群组名分隔符,用 PATCH /api/v1/orgs/current/info 端点。对于区域 SaaS 部署,把请求发送到区域主机上的同一路径(eu.api.smith.langchain.com、apac.api.smith.langchain.com,或 aws.api.smith.langchain.com):
bash
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 群组。若你更改了分隔符,你也必须更新你身份提供商中的群组名以使用新分隔符。
映射
虽然依身份提供商而不同的具体说明可能变化,这些映射展示 LangSmith SCIM 集成支持什么:
用户属性
| LangSmith 应用属性 | 身份提供商属性 | 匹配优先级 |
|---|---|---|
userName1 | email address | |
active | !deactivated | |
emails[type eq "work"].value | email address2 | |
name.formatted | displayName OR givenName + familyName3 | |
givenName | givenName | |
familyName | familyName | |
externalId | sub4 | 1 |
- LangSmith 不要求
userName - 邮箱地址是必需的
- 若你的
displayName不匹配Firstname Lastname格式,用那个计算表达式 - 为避免不一致,对云客户这应当匹配 SAML
NameID断言,对自托管匹配subOAuth2.0 声明。
群组属性
| LangSmith 应用属性 | 身份提供商属性 | 匹配优先级 |
|---|---|---|
displayName | displayName1 | 1 |
externalId | objectId | |
members | members |
步骤 1 - 配置 SAML SSO(仅云)
SAML SSO 配置有两种情形:
- 若 SAML SSO 已为你组织配置,你应当跳过初次添加应用的步骤(从 Okta Integration Network 添加应用 或 创建一个新的 Entra ID 应用集成),因为你已配好一个应用、只需启用预配。
- 若你首次配置 SAML SSO 并连同 SCIM 一起,先遵循说明设置 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,或 aws.api.smith.langchain.com):
bash
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}'为 Self-Hosted 禁用 JIT
从 LangSmith chart 版本 0.11.14 起,你能用 SSO 为你的自托管组织禁用 JIT 预配。要禁用,设以下值:
yaml
commonEnv:
- name: SELF_HOSTED_JIT_PROVISIONING_ENABLED
value: "false"步骤 3 - 生成 SCIM bearer 令牌
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 文档。
为你的组织生成一个 SCIM Bearer 令牌。你的 IdP 会用这个令牌对 SCIM API 请求身份验证。确保环境变量恰当设置,例如:
bash
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 Bearer 令牌的值在此请求的响应之外不可获取。存在这些额外端点:
GET /v1/platform/orgs/current/scim/tokensGET /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、Okta)。上面的要求和步骤适用于所有身份提供商。
Azure Entra ID 配置步骤
更多信息,见 Microsoft 的文档。
NOTE
在自托管安装中,oid JWT 声明被用作 sub。 见这个 Microsoft Learn 链接 和相关配置说明以了解更多细节。
步骤 1:在你的 Enterprise Application 中配置 SCIM
- 用一个特权角色(例如
Global Administrator)登录 Azure 门户。 - 导航到你现有的 LangSmith Enterprise Application。
- 在左侧导航,选择 Manage > Provisioning。
- 点击 Get started。
步骤 2:配置管理员凭据
在 Admin Credentials 下:
Tenant URL:
Region Host / URL GCP US {`$ / https://${prefix_10 || "api.smith"}.langchain.com${suffix_10 || ""}`}GCP EU {`$ / https://eu.${prefix_10 || "api.smith"}.langchain.com${suffix_10 || ""}`}GCP APAC {`$ / https://apac.${prefix_10 || "api.smith"}.langchain.com${suffix_10 || ""}`}AWS US {`$ / https://aws.${prefix_10 || "api.smith"}.langchain.com${suffix_10 || ""}`}- 自托管:
<langsmith_url>/scim/v2
- 自托管:
Secret Token:输入步骤 3 中生成的 SCIM Bearer 令牌。
点击 Test Connection 验证配置。
点击 Save。
步骤 3:配置属性映射
在 Mappings 下配置以下属性映射:
用户属性
把 Target Object Actions 设为 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 中存在。
- 若你的
displayName不匹配Firstname Lastname格式,用Join表达式。 - 为避免不一致,这应当匹配 SAML NameID 断言和
subOAuth2.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 | displayName1 | 1 |
externalId | objectId | |
members | members |
步骤 4:指派用户和群组
- 在 Applications > Applications 下,选择你的 LangSmith Enterprise Application。
- 在 Assignments 标签下,点击 Assign,然后 Assign to People 或 Assign to Groups。
- 做所需的选择,然后 Assign 和 Done。
步骤 5:启用预配
- 在 Provisioning 下把 Provisioning Status 设为
On。 - 监控初始同步,确保用户和群组被正确预配。
- 一旦验证,为用户和群组映射都启用
Delete动作。
关于故障排除,参阅 SAML SSO 常见问题。如果设置 SCIM 时遇到问题,通过 support.langchain.com 联系 LangChain 支持团队。
Okta 配置步骤
NOTE
你必须使用 Okta Lifecycle Management 产品。要在 Okta 上用 SCIM 需要这个产品档。
支持的功能
- 创建用户
- 更新用户属性
- 停用用户
- 群组推送(不带群组重命名)
- 导入用户
- 导入群组
步骤 1:从 Okta Integration Network 添加应用
NOTE
如果你已通过 SAML(云)或 OAuth2.0 带 OIDC(自托管)配置了 SSO 登录,跳过这一步。
云见 SAML SSO 设置,自托管见 OAuth2.0 设置。
步骤 2:配置 API 集成
- 在 General 标签中,确保
LangSmithUrl依步骤 1的说明填好 - 在 Provisioning 标签中,选择
Integration。 - 选择
Edit,然后Enable API integration。 - 对于 API Token,粘贴你上面生成的 SCIM 令牌。
- 保持
Import Groups勾选。 - 要验证配置,选择 Test API Credentials。
- 选择 Save。
- 保存 API 集成详情后,左侧会出现新的设置标签。选择
To App。 - 选择 Edit。
- 为 Create Users、Update Users 和 Deactivate Users 勾选 Enable 复选框。
- 选择 Save。
- 在 Assignments 标签中指派用户和/或群组。被指派的用户会在你的 LangSmith 群组中被创建和管理。
步骤 3:配置用户预配设置
- 配置预配:在
Provisioning > To App > Provisioning to App下,点击Edit,然后勾选Create Users、Update User Attributes和Deactivate Users。 - 在
<application_name> Attribute Mappings下,按下图设置用户属性映射,并删除其余:

步骤 4:推送群组
NOTE
Okta 除群组名本身之外不支持群组属性,所以群组名 必须 遵循群组命名约定一节中描述的命名约定。
遵循 Okta 的启用群组推送说明确,按名或按规则配置要推送的群组。
用自定义 SAML 应用配置 SCIM
如果你已经通过一个自定义 SAML 应用登录,你有两个选项。
仅为 SCIM 添加 Okta Integration Network 应用(推荐)。 从 Okta Integration Network 添加 LangSmith 应用,然后遵循上面步骤 2 到 4。步骤 1 说 SSO 配置好后跳过它,但 SCIM 需要该应用,所以无论如何都要添加它。别动它的 SAML 设置:你的自定义应用继续处理登录。在 Application Visibility 下,勾选 Do not display application icon to users,这样就不会给用户显示一个无法让他们登录的磁贴。
在你的自定义应用上启用 SCIM。 在 General > App Settings 下,把 Provisioning 设为 SCIM。然后在 Provisioning > Integration 下,配置:
SCIM connector base URL:
区域 主机 / URL GCP US {`$ / https://${prefix_11 || "api.smith"}.langchain.com${suffix_11 || ""}`}GCP EU {`$ / https://eu.${prefix_11 || "api.smith"}.langchain.com${suffix_11 || ""}`}GCP APAC {`$ / https://apac.${prefix_11 || "api.smith"}.langchain.com${suffix_11 || ""}`}AWS US {`$ / https://aws.${prefix_11 || "api.smith"}.langchain.com${suffix_11 || ""}`}用户唯一标识符字段:
userName支持的预配动作:
Push New Users、Push Profile Updates、Push Groups、Import Groups身份验证模式:
HTTP Header,用你上面生成的 SCIM 令牌
这些设置替代步骤 2 的 API 集成。从该步骤的 To App 设置继续:启用 Create Users、Update Users 和 Deactivate Users,然后指派你的用户和群组。步骤 3 和 4 讲述属性映射和群组推送。
NOTE
如果 Provisioning 不出现在你应用的设置中,检查你组织是否有 Okta Lifecycle Management,Okta 对 SCIM 预配需要它。如果你有它而该选项仍缺失,联系 Okta 以启用它。
其他身份提供商
其他身份提供商未经测试,但依其 SCIM 实现或许能用。
SSO Groups Sync(替代方案)
NOTE
SSO Groups Sync 对配置了 SAML SSO(云)或 OIDC(自托管)的、处于 Enterprise 方案 的组织可用。联系我们的销售团队以了解更多。
SSO Groups Sync 是一个比 SCIM 更简单的替代方案,适合不能或不愿配置 SCIM 群组推送的组织。与其在一个单独同步间隔从你的 IdP 把群组推送到 LangSmith,LangSmith 在登录时从一个可配置声明直接在 SSO 令牌读群组成员资格,并用与 SCIM 相同的命名约定应用组织级和工作区级角色指派。
何时用 SSO Groups Sync 对用 SCIM
SSO Groups Sync 和 SCIM 技术上能共存(各自只管理带其自身预配方法标记的身份),但我们推荐每个组织选一种机制,而非两者都用,以避免混乱的优先级行为。
| SSO Groups Sync | SCIM | |
|---|---|---|
| 同步触发 | 在每次 SSO 登录 | 从 IdP 主动推送(~1 小时节奏) |
| IdP 管理员介入 | 极少,只需把群组含入 SSO 令牌 | 必需,配置 SCIM 预配应用 |
| 去配 | 滞后直到下次登录 | 通过 IdP 推送近实时 |
| 命名约定 | 复用 SCIM 约定 | SCIM 约定 |
| 自定义分隔符 | 复用组织级 scim_group_name_separator | scim_group_name_separator |
当 IdP 管理员介入极少、且被动(登录时)同步可接受时,选 SSO Groups Sync。当需要主动预配/去配和近实时的群组成员资格更新时,选 SCIM。
配置
在你的 IdP 中:把用户的群组成员资格加到 SSO 令牌声明(默认声明名:
groups)。群组名必须遵循 SCIM 命名约定。在 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
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 Groups Sync 不会移除现有访问。由 SSO 群组预配的用户会保留其当前访问直到下次登录。
配置你的 IdP 发出一个 groups SAML 属性(云)
NOTE
本节仅适用于企业云。自托管客户直接在其 OIDC IdP 中配置群组,见自托管上的 SSO Groups Sync。
要在登录时让用户群组成员资格对 LangSmith 可见,你需要做两件事:
- 配置你 IdP 的 SAML 应用以发出一个多值群组属性。
- 向 SAML 属性映射添加一个匹配条目,好让该属性流到 JWT(勾选 Array)。
要求:
- IdP 属性名(例如
groups)必须同时匹配 SAML Attribute Mapping 条目和 Groups claim field 值(默认groups)。 - 该属性必须是多值的(一个字符串列表),而非单个分隔字符串。若你的 IdP 只支持单值属性,你得为每个群组发一个属性声明。
- 每个值必须是遵循 SCIM 命名约定的群组名。
- 只处理名字匹配该约定的群组。LangSmith 忽略不匹配其命名约定的群组,如组织级目录群组或应用指派群组。你不需要在 IdP 侧过滤掉它们——发出所有群组,LangSmith 会跳过无关的那些。
按 IdP 的设置:
在 LangSmith SAML 应用中:
- 前往 Directory > Profile Editor,然后选择 LangSmith 应用的用户配置文件。
- 添加一个名为
groups、Type 为string array的自定义属性。 - 在 Sign On 上,编辑 SAML 设置并添加一个属性声明:
- Name:
groups - Name format:
Unspecified(或Basic) - Filter:
Matches regex配.*发送所有群组,或用一个更严格的正则(例如^LS:.*)限定到 LangSmith 前缀群组。
- Name:
群组命名例子
群组名遵循 SCIM 命名约定。<workspace_role> 段既接受内置角色,也按名接受自定义工作区角色。
| 意图 | 群组名例子 |
|---|---|
| 组织管理员(在所有工作区授予工作区管理员) | 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)。完整格式见群组命名约定。分隔符按组织经scim_group_name_separator配置,并与 SCIM 共享。 - 畸形的群组名:不匹配该约定的群组名被静默跳过(记日志)且不阻止有效群组的登录。
- 登录闸门:当 Require matching group to sign in 启用且 SSO 令牌含零个匹配群组时,登录被阻止。
- 优先级:SSO Groups Sync 不修改 SCIM 来源、手动指派、或 JIT 预配的成员的成员资格。它对自己的指派完全权威,并在每次登录依据令牌的群组成员资格替换它们。
- 组织管理员传播:若一个用户从其群组获得一个组织管理员角色,他们在所有工作区被授予工作区管理员(与 SCIM 行为相同)。
需要注意的事项
- 去配滞后:与 SCIM(主动推送)不同,SSO Groups Sync 只在登录时更新。一个在 IdP 中被从群组移除的用户,会保留其现有工作区访问直到下次 LangSmith 登录。Require matching group to sign in 闸门通过在下次登录完全阻止该用户来缓解这一点。
- 无追溯同步:更改角色映射或启用该功能,不会在现有用户再次登录之前更新他们。
- 需要命名约定:客户必须遵循 SCIM 约定为其 IdP 群组命名。若你的 IdP 群组遵循不同的命名策略,用基于
description映射的 SCIM(见群组属性)或许更合适。