跳到主要内容

SSO 与 OAuth2.0 和 OIDC

LangSmith 自托管通过 OAuth2.0 和 OIDC 提供 SSO。这将委派身份验证到您的身份提供商 (IdP),以管理对 LangSmith 的访问。

我们的实现几乎支持任何符合 OIDC 标准的东西,但有一些例外。
配置完成后,您将看到如下所示的登录屏幕

LangSmith UI with OAuth SSO

使用客户端密钥(推荐)

默认情况下,LangSmith 自托管支持使用客户端密钥Authorization Code 流。在此版本的流程中,您的客户端密钥安全地存储在 LangSmith 平台中(而不是在前端),并用于身份验证和建立身份验证会话。

要求

注意

您可以将 基本身份验证 安装升级到此模式,但不能将 无身份验证 安装升级到此模式。为了升级,只需删除基本身份验证配置并添加如下所示的必需配置参数。然后,用户只能通过 OAuth 登录。
为了在升级后保持访问权限,您必须能够使用先前通过基本身份验证登录的电子邮件地址通过 OAuth 登录。

警告

目前,LangSmith 在自托管模式下不支持从 SSO 迁移到基本身份验证模式。我们也不支持从带有客户端密钥的 OAuth 模式迁移到不带客户端密钥的 OAuth 模式,反之亦然。最后,我们不支持同时拥有基本身份验证和 OAuth。启用 OAuth 时,请确保禁用基本身份验证配置。

  • 您的 IdP 必须支持使用客户端密钥Authorization Code 流。
  • 您的 IdP 必须支持使用外部发现/颁发者 URL。我们将使用它来获取您的 IdP 所需的路由和密钥。
  • 您必须向 LangSmith 提供 OIDCemailprofile 作用域。我们使用这些来获取您的用户所需的用户信息和电子邮件。
  • 您需要在您的 IdP 中将回调 URL 设置为 http://<host>/api/v1/oauth/custom-oidc/callback,其中 host 是您为 LangSmith 实例配置的域名或 IP。这是您的 IdP 在用户完成身份验证后将用户重定向到的位置。
  • 您需要在您的 values.yaml 文件中提供 oauthClientIdoauthClientSecrethostnameoauthIssuerUrl。这是您配置 LangSmith 实例的位置。
  • 某些 IdP 可能需要向 LangSmith 提供 offline_access 作用域。这用于在用户令牌过期时刷新令牌。
config:
authType: mixed
hostname: https://langsmith.example.com
oauth:
enabled: true
oauthClientId: <YOUR CLIENT ID>
oauthClientSecret: <YOUR CLIENT SECRET>
oauthIssuerUrl: <YOUR DISCOVERY URL>
oauthScopes: "email,profile,openid"

身份提供商 (IdP) 设置

Google Workspace

您可以使用 Google Workspace 作为单点登录 (SSO) 提供商,使用 OAuth2.0 和 OIDC,无需 PKCE。

注意

您必须拥有组织 Google Cloud Platform (GCP) 帐户的管理员级别访问权限才能创建新项目,或者拥有为现有项目创建和配置 OAuth 2.0 凭据的权限。我们建议您创建一个新项目来管理访问权限,因为每个 GCP 项目都有一个 OAuth 同意屏幕。

  1. 创建一个新的 GCP 项目,请参阅 Google 文档主题 创建和管理项目
  2. 创建项目后,打开 Google API 控制台中的 凭据 页面(确保左上角的项目正确)
  3. 创建新凭据:创建凭据 → OAuth 客户端 ID
  4. 选择 Web 应用程序 作为 应用程序类型,并输入应用程序的名称,例如 LangSmith
  5. 授权的 Javascript 来源 中,放入您的 LangSmith 实例的域名,例如 https://langsmith.yourdomain.com
  6. 授权的重定向 URI 中,放入您的 LangSmith 实例的域名,后跟 /api/v1/oauth/custom-oidc/callback,例如 https://langsmith.yourdomain.com/api/v1/oauth/custom-oidc/callback
  7. 单击 创建,然后下载 JSON 或复制并保存 客户端 ID(以 .apps.googleusercontent.com 结尾)和 客户端密钥 到安全的地方。如果需要,您稍后可以访问这些信息
  8. 从左侧导航菜单中选择 OAuth 同意屏幕
    1. 选择应用程序类型为 内部如果您选择 公共,则任何拥有 Google 帐户的人都可以登录。
    2. 输入描述性的 应用程序名称。此名称在用户登录时在同意屏幕上向用户显示。例如,使用 LangSmith<组织名称> LangSmith 的 SSO
    3. 验证 Google API 的作用域是否仅列出 email、profile 和 openid 作用域。单点登录仅需要这些作用域。如果您授予其他作用域,则会增加暴露敏感数据的风险。
  9. (可选)控制您组织内谁可以访问 LangSmith:https://admin.google.com/ac/owl/list?tab=configuredApps。有关更多详细信息,请参阅 Google 的文档
  10. 配置 LangSmith 以使用此 OAuth 应用程序。例如,以下是 Kubernetes 配置将使用的 config
    1. oauthClientId客户端 ID(以 .apps.googleusercontent.com 结尾)
    2. oauthClientSecret客户端密钥
    3. hostname:您的实例的域名,例如 https://langsmith.yourdomain.com(无尾部斜杠)
    4. oauthIssuerUrlhttps://127.0.0.1
    5. oauth.enabledtrue
    6. authTypemixed

不使用客户端密钥 (PKCE)(已弃用)

如果可能,我们建议使用 客户端密钥 运行(以前我们不支持此方法)。但是,如果您的 IdP 不支持此方法,则可以使用 Authorization Code with PKCE 流。

此流程需要 客户端密钥 - 有关替代方法,请参阅上方

要求

使用 OAuth SSO 与 LangSmith 有几个要求

  • 您的 IdP 必须支持 Authorization Code with PKCE (例如,Google 不支持此流程,但有关 Google 支持的替代配置,请参阅下方)。这通常在您的 OAuth 提供商中显示为配置“单页应用程序 (SPA)”
  • 您的 IdP 必须支持使用外部发现/颁发者 URL。我们将使用它来获取您的 IdP 所需的路由和密钥。
  • 您必须向 LangSmith 提供 OIDCemailprofile 作用域。我们使用这些来获取您的用户所需的用户信息和电子邮件。
  • 您需要在您的 IdP 中将回调 URL 设置为 http://<host>/oauth-callback,其中 host 是您为 LangSmith 实例配置的域名或 IP。这是您的 IdP 在用户完成身份验证后将用户重定向到的位置。
  • 您需要在您的 values.yaml 文件中提供 oauthClientIdoauthIssuerUrl。这是您配置 LangSmith 实例的位置。
config:
oauth:
enabled: true
oauthClientId: <YOUR CLIENT ID>
oauthIssuerUrl: <YOUR DISCOVERY URL>

此页是否对您有帮助?


您可以留下详细的反馈 在 GitHub 上.