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
:提供程序的名称。默认情况下可用的选项是huggingface
、github
和google-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 端点
添加更多 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_*
环境变量,因此您可以使用这些环境变量自定义提供程序配置。