
概览
LangSmith 目前不支持在自托管版中从 SSO 切换到基本身份验证模式。我们也不支持在带有客户端密钥的 OAuth 模式和不带客户端密钥的 OAuth 模式之间切换,反之亦然。最后,我们不支持同时使用基本身份验证和 OAuth。启用 OAuth 时,请确保禁用基本身份验证配置。
使用客户端密钥(推荐)
默认情况下,LangSmith 自托管版支持带有客户端密钥的授权码流。在此版本的流中,您的客户端密钥安全地存储在 LangSmith 中(而不是在前端),并用于身份验证和建立身份验证会话。
先决条件
- 您必须是自托管用户并使用企业计划。
- 您的 IdP 必须支持带有
客户端密钥的授权码流。 - 您的 IdP 必须支持使用外部发现/颁发者 URL。我们将使用它来获取您的 IdP 所需的路由和密钥。
- 您必须向 LangSmith 提供
OIDC、email和profile范围。我们使用这些范围来获取您的用户所需的用户信息和电子邮件。
LangSmith SSO 仅支持通过
https。配置
- 您需要在 IdP 中将回调 URL 设置为
https://,其中/api/v1/oauth/custom-oidc/callback host是您为 LangSmith 实例提供的域或 IP。这是您的 IdP 在用户进行身份验证后将用户重定向到的位置。 - 您需要在
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 Claim
在某些情况下,可能需要覆盖从身份提供商处用作sub claim 的 claim。例如,在 SCIM 中,为了成功登录,解析的 sub claim 和 SCIM externalId 必须匹配。如果 sub claim 的源属性和/或 SCIM externalId 存在限制,请设置 ISSUER_SUB_CLAIM_OVERRIDES 环境变量以选择哪个 OIDC JWT claim 用作 sub。 如果颁发者 URL以此配置中的某个 URL 开头,则 sub claim 将从指定的字段名中获取。例如,使用以下配置,颁发者为 https://idp.yourdomain.com/application/uuid 的令牌将使用 customClaim 值作为 sub:oid claim。
Google Workspace IdP 设置
您可以使用 Google Workspace 作为单点登录 (SSO) 提供商,方法是使用OAuth2.0 和 OIDC,无需 PKCE。您必须拥有组织 Google Cloud Platform (GCP) 帐户的管理员级别访问权限,才能创建新项目,或拥有为现有项目创建和配置 OAuth 2.0 凭据的权限。我们建议您创建一个新项目来管理访问,因为每个 GCP 项目只有一个 OAuth 同意屏幕。
- 创建一个新的 GCP 项目,请参阅 Google 文档主题创建和管理项目
- 创建项目后,在 Google API Console 中打开凭据页面(确保左上角的项目正确)
-
创建新凭据:
创建凭据 → 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或。LangSmith 的 SSO - 验证 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://#oauth.enabled:trueauthType:mixed
Okta IdP 设置
支持的功能
- IdP 发起的 SSO
- SP 发起的 SSO
配置步骤
有关更多信息,请参阅 Okta 的文档。如果您有任何问题,请联系support@langchain.dev。通过 Okta 集成网络(推荐)
要将 SCIM 与 Okta 一起使用,必须采用此配置方法。
- 登录Okta。
- 在右上角,选择“管理员”。该按钮在“管理员”区域不可见。
- 选择
浏览应用集成目录。 - 查找并选择 LangSmith 应用程序。
- 在应用程序概览页面上,选择“添加集成”。
- 填写
ApiUrlBase- 您的 LangSmith API URL 不带协议 (
https://),格式为,例如/api/v1 langsmith.yourdomain.com/api/v1。 - 如果您的安装配置了子域/路径前缀,请将其包含在 URL 中,例如,
langsmith.yourdomain.com/prefix/api/v1。
- 您的 LangSmith API URL 不带协议 (
- 将
AuthHost留空。 - (可选,如果也计划使用SCIM)填写
LangSmithUrl:如上所示的部分,例如langsmith.yourdomain.com。 - 在“应用程序可见性”下,保持该框未选中状态。
- 选择下一步。
- 选择
OpenID Connect。 - 填写
登录选项应用程序用户名格式:电子邮件。更新应用程序用户名时间:创建和更新。允许用户安全查看其密码:保持未选中。
- 单击保存。
- 配置 LangSmith 以使用此 OAuth 应用程序(有关
initialOrgAdminEmail的详细信息,请参阅通用配置部分)
通过自定义应用程序集成
SCIM 不兼容此配置方法。请参阅通过 Okta 集成网络。
- 以管理员身份登录 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下的默认 URI。
- 在 受信任的来源 > 基本 URI 下,添加您的 Langsmith URL 和协议,例如
https://langsmith.yourdomain.com。 - 在 分配 > 受控访问 下选择您想要的选项
- 允许组织中的所有人访问。
- 限制对选定组的访问。
- 暂时跳过群组分配。
- 单击保存。
- 在 登录 > OpenID Connect ID 令牌 下,将 颁发者 设置为 Okta URL。
- (可选)在 常规 > 登录 下,将 登录发起方 设置为
Okta 或应用程序,以启用 IdP 发起的登录。 - (推荐)在 常规 > 登录 > 电子邮件验证体验 下,填写 回调 URI 为 LangSmith URL,例如
https://langsmith.yourdomain.com。 - 配置 LangSmith 以使用此 OAuth 应用程序(有关
initialOrgAdminEmail的详细信息,请参阅通用配置部分)
SP 发起的 SSO
用户可以通过 LangSmith 主页上的 通过 SSO 登录 按钮登录。不带客户端密钥(PKCE)(已弃用)
如果可能,我们建议使用客户端密钥(以前我们不支持此功能)。但是,如果您的 IdP 不支持此功能,您可以使用带 PKCE 的授权码流。 此流不需要客户端密钥。有关替代工作流程,请参阅带客户端密钥。要求
使用 LangSmith 的 OAuth SSO 有一些要求- 您的 IdP 必须支持带有 PKCE 的授权码流(例如,Google 不支持此流,但请参阅上文以获取 Google 支持的替代配置)。这通常在您的 OAuth 提供商中显示为配置“单页应用程序 (SPA)”
- 您的 IdP 必须支持使用外部发现/颁发者 URL。我们将使用它来获取您的 IdP 所需的路由和密钥。
- 您必须向 LangSmith 提供
OIDC、email和profile范围。我们使用这些范围来获取您的用户所需的用户信息和电子邮件。 - 您需要在 IdP 中将回调 URL 设置为
http://,其中 host 是您为 LangSmith 实例预置的域名或 IP。这是您的 IdP 在用户进行身份验证后将用户重定向到的位置。/oauth-callback - 您需要在
values.yaml文件中提供oauthClientId和oauthIssuerUrl。这是您配置 LangSmith 实例的位置。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。