🔐 双 OAuth 配置 (Microsoft 和 Google)
非官方变通方案
此配置是社区贡献的变通方案,未得到 Open WebUI 团队的正式支持。虽然它在当前版本中有效,但行为可能会在未来的更新中发生变化。本教程仅作为高级用户的演示。
概述
虽然 Open WebUI 官方仅支持通过 OPENID_PROVIDER_URL 变量同时使用一个 OpenID Connect (OIDC) 提供程序,但其实是可以同时支持 Microsoft 和 Google 的。
诀窍是将一个提供程序(例如 Microsoft)配置为主 OIDC 提供程序,而通过利用 Open WebUI 对特定提供程序的内置支持,将另一个提供程序(例如 Google)配置为标准 OAuth 提供程序。
前提条件
- 访问您的 Open WebUI 环境变量(Docker 或本地)。
- 来自 Google Cloud Console 和 Microsoft Azure/Entra ID 的客户端 ID 和密钥。
- 必须启用
OAUTH_MERGE_ACCOUNTS_BY_EMAIL=true,以确保无论使用哪个提供程序,用户都映射到同一个账户。
配置逻辑
Open WebUI 将 OPENID_PROVIDER_URL 作为 OIDC 的通用“全能型”变量。但是,它也有针对 Google 和 Microsoft 的原生模块。通过将 OPENID_PROVIDER_URL 留给 Microsoft,并仅为 Google 提供客户端 ID,系统可以内部化这两个流程。
环境变量
将以下内容添加到您的 docker-compose.yaml 或环境配置中:
# 启用注册和账户合并 (至关重要)
ENABLE_OAUTH_SIGNUP=true
OAUTH_MERGE_ACCOUNTS_BY_EMAIL=true
# 1. Microsoft 作为主 OIDC 提供程序
# 这通过 OPENID_PROVIDER_URL 使用通用的 OIDC 流程
MICROSOFT_CLIENT_ID=your_microsoft_client_id
MICROSOFT_CLIENT_SECRET=your_microsoft_client_secret
MICROSOFT_CLIENT_TENANT_ID=your_tenant_id
MICROSOFT_REDIRECT_URI=https://your-webui.com/oauth/microsoft/callback
OPENID_PROVIDER_URL=https://login.microsoftonline.com/your_tenant_id/v2.0/.well-known/openid-configuration
# 2. Google 作为辅助 OAuth 提供程序
# 注意:不要为 Google 提供 OPENID_PROVIDER_URL。
# 系统将使用其内部的 Google OAuth 实现。
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
为什么这可行
- Microsoft 通过通用 OIDC 流程处理,因为
OPENID_PROVIDER_URL设置为 Microsoft 端点。 - Google 通过专用的内部 Google OAuth 模块处理,因为系统检测到了
GOOGLE_CLIENT_ID,但看到全局OPENID_PROVIDER_URL已被 Microsoft “占用”,或者内置 Google 模块根本不需要它。 - 账户合并:由于两个提供程序都返回用户的电子邮件,
OAUTH_MERGE_ACCOUNTS_BY_EMAIL=true确保用户无论是点击“使用 Google 登录”还是“使用 Microsoft 登录 ”,都能登录到同一个个人资料。
故障排除
- 重定向不匹配:确保两个控制台中的重定向 URI 与您的
WEBUI_URL匹配。 - 合并失败:仔细检查
OAUTH_MERGE_ACCOUNTS_BY_EMAIL是否设置为true。 - Microsoft 注销:Microsoft 通常需要
OPENID_PROVIDER_URL才能正确处理注销重定向。如果注销失败,请确保此 URL 对您的租户是正确的。