跳到内容

OAuth2 配置

Argilla 支持用户的 OAuth2 身份验证。这允许用户使用其他服务(如 Google、GitHub 或 Hugging Face)进行身份验证。以下部分将指导您完成 OAuth2 身份验证的配置。

OAuth2 配置文件

OAuth2 配置文件是一个 YAML 文件,其中包含您要启用的 OAuth2 提供程序的配置。默认文件名是 .oauth.yml,应将其放置在 Argilla 服务器的根目录中。您还可以使用 ARGILLA_AUTH_OAUTH_CFG 环境变量指定不同的文件名。

该文件应具有以下结构

providers:
  - name: huggingface
    client_id: "<client_id>"
    client_secret: "<client_secret>"
    scope: "openid profile"

  - name: google-oauth2
    client_id: "<client_id>"
    client_secret: "<client_secret>"
    scope: "openid email profile"

  - name: github
    client_id: "<client_id>"
    client_secret: "<client_secret>"

  - name: keycloack
    client_id: "<client_id>"
    client_secret: "<client_secret>"


allowed_workspaces:
  - name: argilla

allow_http_redirect: false

提供程序

providers 键是一个字典列表,每个字典代表一个提供程序配置,包括以下字段

  • name:提供程序的名称。默认情况下可用的选项是 huggingfacegithubgoogle-oauth2。稍后我们将看到如何添加更多默认不支持的提供程序。
  • client_id:OAuth2 提供程序提供的客户端 ID。您可以通过在提供程序的开发者控制台中创建应用程序来获取此值。这是一个必填字段,但您也可以使用 ARGILLA_OAUTH2_<PROVIDER_NAME>_CLIENT_ID 环境变量来设置该值。
  • client_secret:OAuth2 提供程序提供的客户端密钥。您可以通过在提供程序的开发者控制台中创建应用程序来获取此值。这是一个必填字段,但您也可以使用 ARGILLA_OAUTH2_<PROVIDER_NAME>_CLIENT_SECRET 环境变量来设置该值。
  • scope:OAuth2 提供程序的作用域。这是一个可选字段,通常您不需要设置它,但您可以使用它来请求用户访问的特定权限。

允许的工作区

allowed_workspaces 键定义了用户使用 OAuth2 提供程序登录时可用的工作区。这是一个 name 字段列表,应与 Argilla 服务器中的工作区名称匹配。默认情况下,argilla 工作区允许使用 OAuth2 提供程序进行身份验证。

如果工作区不存在,则会在首次服务器启动时自动创建它。

允许 HTTP 重定向

allow_http_redirect 键是一个布尔值,允许 OAuth2 提供程序将用户重定向到 HTTP URL。默认情况下,此值设置为 false,只有当您在不支持 HTTPS 的代理后面运行 Argilla 服务器,或者您在本地运行服务器时,才应将其设置为 true

不建议在生产环境中使用此选项,仅应将其用于开发目的。

支持的 OAuth2 提供程序配置

以下部分将指导您完成支持的 OAuth2 提供程序的配置。在深入配置之前,您应该在提供程序的开发者控制台中创建一个应用程序,以获取客户端 ID 和客户端密钥。

在提供程序的开发者控制台中创建应用程序时,一个常见的步骤是设置重定向 URI。重定向 URI 是 OAuth2 提供程序在身份验证过程后将用户重定向到的 URL。

重定向 URI 应设置为 Argilla 服务器 URL,后跟 /oauth/<provider_name>/callback。例如,如果 Argilla 服务器在 http://localhost:8000 上运行,则提供程序应用程序的重定向 URI 应为 http://localhost:8000/oauth/huggingface/callback

Hugging Face OAuth2 配置

Argilla 开箱即用地支持 Hugging Face OAuth2 身份验证,并且在 Hugging Face Spaces 上运行 Argilla 时已配置(有关更多信息,请参阅Hugging Face Spaces 设置)。

但是,如果您想手动配置 Hugging Face OAuth2 提供程序,则应在 .oauth.yml 文件中定义以下字段

providers:
  - name: huggingface
    client_id: "<client_id>" # You can use the ARGILLA_OAUTH2_HUGGINGFACE_CLIENT_ID environment variable
    client_secret: "<client_secret>" # You can use the ARGILLA_OAUTH2_HUGGINGFACE_CLIENT_SECRET environment variable
    scope: "openid profile" # This field is optional. But this value must be aligned your OAuth2 application created in Hugging Face.

...

要获取您的客户端 ID 和客户端密钥,您需要在 Hugging Face 设置页面中创建一个 OAuth2 应用程序

Hugging Face OAuth2 提供程序所需的最小作用域是 openid profile,因此您在创建应用程序时无需更改 scope

GitHub OAuth2 配置

Argilla 也开箱即用地支持 GitHub OAuth2 身份验证。要配置 GitHub OAuth2 提供程序,您应在 .oauth.yml 文件中定义以下字段

providers:
  - name: github
    client_id: "<client_id>" # You can use the ARGILLA_OAUTH2_GITHUB_CLIENT_ID environment variable
    client_secret: "<client_secret>" # You can use the ARGILLA_OAUTH2_GITHUB_CLIENT_SECRET environment variable

...

要获取您的客户端 ID 和客户端密钥,您需要在 GitHub 设置页面中注册一个新的 OAuth 应用程序

Google OAuth2 配置

Argilla 也开箱即用地支持 Google OAuth2 身份验证。要配置 Google OAuth2 提供程序,您应在 .oauth.yml 文件中定义以下字段

providers:
  - name: google-oauth2
    client_id: "<client_id>" # You can use the ARGILLA_OAUTH2_GOOGLE_OAUTH2_CLIENT_ID environment variable
    client_secret: "<client_secret>" # You can use the ARGILLA_OAUTH2_GOOGLE_OAUTH2_CLIENT_SECRET environment variable

...

要获取您的客户端 ID 和客户端密钥,您需要在 Google Cloud Console 中创建一个新的 OAuth2 客户端

Keycloak OAuth2 配置

Argilla 也开箱即用地支持 Keycloak OAuth2 身份验证。要配置 Keycloak OAuth2 提供程序,您应在 .oauth.yml 文件中定义以下字段

providers:
  - name: keycloak
    client_id: "<client_id>" # You can use the ARGILLA_OAUTH2_KEYCLOAK_CLIENT_ID environment variable
    client_secret: "<client_secret>" # You can use the ARGILLA_OAUTH2_KEYCLOAK_CLIENT_SECRET environment variable

要获取您的客户端 ID 和客户端密钥,您需要在 Keycloak 设置页面中创建一个新客户端。

由于 Keycloak 后端使用 Open ID Connect 协议,您可能需要在环境变量中设置 OIDC 端点

export SOCIAL_AUTH_KEYCLOAK_OIDC_ENDPOINT=<keycloak-server>/realms/<configured-realm>

添加更多 OAuth2 提供程序

如果您想添加更多默认不支持的 OAuth2 提供程序,您可以通过向 .oauth.yml 文件添加新的提供程序配置来实现。Argilla 服务器使用 Social Auth backends 组件来定义提供程序配置。您只需使用 .oauth.yml 文件中的 extra_backends 键注册提供程序后端。

例如,要配置 Apple OAuth2 提供程序,您应将以下配置添加到 .oauth.yml 文件中

providers:
  - name: apple-id
    client_id: "<client_id>" # You can use the ARGILLA_OAUTH2_APPLE_ID_CLIENT_ID environment variable
    client_secret: "<client_secret>" # You can use the ARGILLA_OAUTH2_APPLE_ID_CLIENT_SECRET environment variable

extra_backends:
    - social_core.backends.apple.AppleIdAuth # Register the Apple OAuth2 provider backend

Argilla 服务器支持所有 SOCIAL_AUTH_* 环境变量,因此您可以使用这些环境变量自定义提供程序配置。