
概述
带客户端密钥(推荐)
默认情况下,LangSmith 自托管版本支持带客户端密钥 的 授权码 流程。在此版本的流程中,您的客户端密钥安全地存储在 LangSmith 中(而非前端),并用于身份验证和建立认证会话。
先决条件
- 您必须是自托管版本并使用企业计划。
- 您的身份提供商必须支持带
客户端密钥的授权码流程。 - 您的身份提供商必须支持使用外部发现/颁发者 URL。我们将使用此 URL 来获取您身份提供商的必要路由和密钥。
- 您必须向 LangSmith 提供
OIDC、email和profile作用域。我们使用这些来获取必要的用户信息和电子邮件。
LangSmith SSO 仅支持通过
https 使用。配置
- 您需要在身份提供商中将回调 URL 设置为
https://<host>/api/v1/oauth/custom-oidc/callback,其中host是您为 LangSmith 实例配置的域名或 IP。这是身份提供商在用户认证后将用户重定向到的位置。 - 要在登出时终止身份提供商会话(以便用户必须重新认证),请将您的 LangSmith URL(例如
https://<host>)注册为身份提供商中的 登出后重定向 URI(有时称为“登出重定向 URI”),然后在您的环境中设置OAUTH_IDP_LOGOUT_ENABLED=true(通过 Helm 中的commonEnv或 Docker Compose 中的.env文件)。 - 您需要在
values.yaml文件中提供oauthClientId、oauthClientSecret、hostname和oauthIssuerUrl。这是您配置 LangSmith 实例的地方。 - 如果您尚未配置带客户端密钥的 OAuth,或者您只有个人组织,则必须提供一个电子邮件地址,作为新配置的 SSO 组织的初始组织管理员。如果您是从基本身份验证升级,则将重用您现有的组织。
会话时长控制
本节中的所有环境变量均适用于
platform-backend 服务,可以通过 Helm 中的 platformBackend.deployment.extraEnv 添加。- 默认情况下,会话时长由身份提供商返回的身份令牌过期时间控制
- 大多数设置应使用刷新令牌,以便将会话时长扩展到身份令牌过期时间之后,最长可达
OAUTH_SESSION_MAX_SEC,这可能需要通过添加到oauthScopes(Helm)或OAUTH_SCOPES(Docker)来包含offline_access作用域 OAUTH_SESSION_MAX_SEC(默认 1 天)可以覆盖为最长一周(604800)- 对于不支持刷新令牌的身份提供商设置,设置
OAUTH_OVERRIDE_TOKEN_EXPIRY="true"将使用OAUTH_SESSION_MAX_SEC作为会话时长,忽略身份令牌过期时间
覆盖 sub 声明
在某些情况下,可能需要覆盖从身份提供商中用作sub 声明的声明。
例如,在 SCIM 中,解析的 sub 声明和 SCIM externalId 必须匹配才能成功登录。
如果对 sub 声明的源属性和/或 SCIM externalId 有限制,请设置 ISSUER_SUB_CLAIM_OVERRIDES 环境变量以选择哪个 OIDC JWT 声明用作 sub。
如果颁发者 URL 以此配置中的某个 URL 开头,则 sub 声明取自指定的字段名。
例如,使用以下配置,颁发者为 https://idp.yourdomain.com/application/uuid 的令牌将使用 customClaim 值作为 sub:
oid 声明:
SSO 组同步
自托管环境中的 SSO 组同步需要 LangSmith chart 版本 0.15.0-rc.3(应用程序版本 0.15.2rc1)或更高版本。
- 配置您的身份提供商应用程序在 OIDC ID 令牌中发出组成员声明。源属性和生成的声明名称因身份提供商而异。常见示例包括
groups、roles或自定义声明名称。LangSmith 不规定源属性。 - 根据您的身份提供商,您可能需要向
oauthScopes添加额外的作用域(通常是groups)以接收该声明。请查阅您的身份提供商文档,了解所需的作用域以及在令牌中包含组成员身份所需的任何额外配置。 - 组名称必须遵循 SCIM 命名约定(例如
LS:Organization Admin、LS:Organization User:prod:Editor)。分隔符通过scim_group_name_separator与 SCIM 共享。
groups),请将其添加到 oauthScopes:
groups、roles 等)取决于您的身份提供商。请查阅您的身份提供商的 OIDC 文档。
LangSmith 端配置:
每个提供商的 SSO 组同步设置存储在 SSO 提供商记录上,并通过 LangSmith UI 或 API 切换(而非通过 Helm 值)。一旦您的身份提供商发出组声明,请从 UI 中的 设置 → 成员和角色 → SSO 配置 → SSO 组同步 配置 SSO 组同步。或者,按照 主要 SSO 组同步文档 中的描述通过 API 配置。在 组声明字段 中配置的声明名称必须与您的身份提供商发出的声明匹配。
Google Workspace 身份提供商设置
您可以使用 Google Workspace 作为单点登录 (SSO) 提供商,通过 OAuth2.0 和 OIDC 而无需 PKCE。您必须拥有组织 Google Cloud Platform (GCP) 账户的管理员级访问权限才能创建新项目,或者拥有为现有项目创建和配置 OAuth 2.0 凭据的权限。我们建议您创建一个新项目来管理访问权限,因为每个 GCP 项目只有一个 OAuth 同意屏幕。
- 创建一个新的 GCP 项目,请参阅 Google 文档主题 创建和管理项目
- 创建项目后,在 Google API 控制台中打开 凭据 页面(确保左上角的项目正确)
-
创建新凭据:
创建凭据 → OAuth 客户端 ID -
选择
Web 应用程序作为应用程序类型,并输入应用程序的名称,例如LangSmith -
在
授权的 JavaScript 来源中输入您的 LangSmith 实例的域名,例如https://langsmith.yourdomain.com -
在
授权的重定向 URI中输入您的 LangSmith 实例的域名,后跟/api/v1/oauth/custom-oidc/callback,例如https://langsmith.yourdomain.com/api/v1/oauth/custom-oidc/callback -
点击
创建,然后下载 JSON 或复制并保存客户端 ID(以.apps.googleusercontent.com结尾)和客户端密钥到安全的地方。如果需要,您稍后可以访问这些信息。 -
从左侧导航菜单中选择
OAuth 同意屏幕- 将应用程序类型选择为
内部。如果您选择公开,任何拥有 Google 帐户的人都可以登录。 - 输入描述性的
应用程序名称。此名称在用户登录时显示在同意屏幕上。例如,使用LangSmith或<organization_name> SSO for LangSmith。 - 验证 Google API 的范围仅列出电子邮件、个人资料和 openid 范围。单点登录只需要这些范围。如果您授予额外的范围,则会增加暴露敏感数据的风险。
- 将应用程序类型选择为
- (可选)控制组织内谁可以访问 LangSmith:https://admin.google.com/ac/owl/list?tab=configuredApps。有关更多详细信息,请参阅 Google 的文档。
-
配置 LangSmith 使用此 OAuth 应用程序。例如,以下是用于 Kubernetes 配置的
config值:oauthClientId:客户端 ID(以.apps.googleusercontent.com结尾)oauthClientSecret:客户端密钥hostname:您的 LangSmith 实例的域名,例如https://langsmith.yourdomain.com(无尾部斜杠)oauthIssuerUrl:https://accounts.google.comoauth.enabled:trueauthType:mixed
Okta 身份提供商设置
支持的功能
- 身份提供商发起的 SSO
- 服务提供商发起的 SSO
- 即时配置(请参阅 管理 SSO 组织中的用户访问权限)
配置步骤
有关更多信息,请参阅 Okta 的 文档。 如果您有任何问题或疑虑,请通过 support.langchain.com 联系支持团队。通过 Okta 集成网络(推荐)
有关 SCIM 设置的详细信息,请参阅 为您的组织设置 SCIM。
要将 SCIM 与 Okta 一起使用,需要此配置方法。
- 登录 Okta。
- 在右上角,选择管理员。该按钮在管理员区域不可见。
- 选择
浏览应用程序集成目录。 - 找到并选择 LangSmith 应用程序。
- 在应用程序概览页面上,选择添加集成。
- 填写
ApiUrlBase:- 您的 LangSmith API URL 不带协议(
https://),格式为<langsmith_domain>/api/v1,例如langsmith.yourdomain.com/api/v1。 - 如果您的安装配置了子域/路径前缀,请在 URL 中包含该前缀,例如
langsmith.yourdomain.com/prefix/api/v1。
- 您的 LangSmith API URL 不带协议(
- 将
AuthHost留空。 - (可选,如果计划同时使用 SCIM)填写
LangSmithUrl:上述的<langsmith_url>部分,例如langsmith.yourdomain.com。 - 在应用程序可见性下,保持复选框未选中。
- 选择下一步。
- 选择
OpenID Connect。 - 填写
登录选项:应用程序用户名格式:电子邮件。更新应用程序用户名:创建和更新。允许用户安全地查看其密码:保持 未选中。
- 点击 保存。
- 配置 LangSmith 使用此 OAuth 应用程序(有关
initialOrgAdminEmail的详细信息,请参阅 通用配置部分):
有关 SCIM 设置的详细信息,请参阅 为您的组织设置 SCIM。
通过自定义应用程序集成
- 以管理员身份登录 Okta,并转到 Okta 管理控制台。
- 在 应用程序 > 应用程序 下,点击 创建应用程序集成。
- 选择 OIDC - OpenID Connect 作为登录方法,Web 应用程序 作为应用程序类型,然后点击 下一步。
- 输入
应用程序集成名称(例如LangSmith)。 - 推荐:选中 核心授权 > 刷新令牌(请参阅 会话时长控制)。
- 在 登录重定向 URI 中输入您的 LangSmith 实例的域名,后跟
/api/v1/oauth/custom-oidc/callback,例如https://langsmith.yourdomain.com/api/v1/oauth/custom-oidc/callback。如果您的安装配置了子域/路径前缀,请在 URL 中包含该前缀,例如https://langsmith.yourdomain.com/prefix/api/v1/oauth/custom-oidc/callback。 - 在 登出重定向 URI 下,将值设置为您的 LangSmith URL,例如
https://langsmith.yourdomain.com。这确保了当用户从 LangSmith 登出时,身份提供商会话会被终止。 - 在 受信任的来源 > 基础 URI 下,添加带有协议的您的 langsmith URL,例如
https://langsmith.yourdomain.com。 - 在 分配 > 受控访问 下选择您想要的选项:
- 允许组织中的所有人访问。
- 限制对选定组的访问。
- 暂时跳过组分配。
- 点击 保存。
- 在 登录 > OpenID Connect ID 令牌 下,将 颁发者 设置为 Okta URL。
- (可选)在 常规 > 登录 下,将 登录发起者 设置为
Okta 或应用程序以启用身份提供商发起的登录。 - (推荐)在 常规 > 登录 > 电子邮件验证体验 下,将 回调 URI 填写为 LangSmith URL,例如
https://langsmith.yourdomain.com。 - 配置 LangSmith 使用此 OAuth 应用程序(有关
initialOrgAdminEmail的详细信息,请参阅 通用配置部分):
服务提供商发起的 SSO
用户可以使用 LangSmith 主页上的 通过 SSO 登录 按钮进行登录。不带客户端密钥 (PKCE)(已弃用)
如果可能,我们建议使用客户端密钥 运行(以前我们不支持此功能)。但是,如果您的身份提供商不支持此功能,您可以使用 带 PKCE 的授权码 流程。
此流程不需要 客户端密钥。有关替代工作流程,请参阅 带客户端密钥。
要求
使用 OAuth SSO 与 LangSmith 有几个要求:- 您的身份提供商必须支持
带 PKCE 的授权码流程(例如 Google 不支持此流程,但请参阅 上方 了解 Google 支持的替代配置)。这通常在您的 OAuth 提供商中显示为配置“单页应用程序 (SPA)” - 您的身份提供商必须支持使用外部发现/颁发者 URL。我们将使用此 URL 来获取您身份提供商的必要路由和密钥。
- 您必须向 LangSmith 提供
OIDC、email和profile作用域。我们使用这些来获取必要的用户信息和电子邮件。 - 您需要在身份提供商中将回调 URL 设置为
http://<host>/oauth-callback,其中 host 是您为 LangSmith 实例配置的域名或 IP。这是身份提供商在用户认证后将用户重定向到的位置。 - 您需要在
values.yaml文件中提供oauthClientId和oauthIssuerUrl。这是您配置 LangSmith 实例的地方。
将这些文档 通过 MCP 连接到 Claude、VSCode 等,以获取实时答案。

