联合身份验证支持
Open WebUI 支持多种联合身份验证方式:
- OAuth2
- Microsoft
- OIDC
- 受信任的头部信息
OAuth
OAuth 全局配置选项如下:
ENABLE_OAUTH_SIGNUP- 如果设置为true,则允许在使用 OAuth 登录时创建账户。与ENABLE_SIGNUP区分开来。OAUTH_MERGE_ACCOUNTS_BY_EMAIL- 允许登录与 OAuth 提供商提供的电子邮件地址匹配的账户。- 这种做法被认为不安全,因为并非所有 OAuth 提供商都会验证电子邮件地址,可能会导致账户被劫持。
Google
要配置 Google OAuth 客户端,请参阅 Google 的文档,了解如何为 Web 应用 创建 Google OAuth 客户端。
允许的重定向 URI 应包含 <open-webui>/oauth/google/callback。
需要设置以下环境变量:
GOOGLE_CLIENT_ID- Google OAuth 客户端 IDGOOGLE_CLIENT_SECRET- Google OAuth 客户端密钥
Microsoft
要配置 Microsoft OAuth 客户端,请参阅 Microsoft 的文档,了解如何为 Web 应用 创建 Microsoft OAuth 客户端。
允许的重定向 URI 应包含 <open-webui>/oauth/microsoft/callback。
目前对 Microsoft OAuth 的支持仅限于单个租户,即单一 Entra 组织或个人 Microsoft 账户。
需要设置以下环境变量:
MICROSOFT_CLIENT_ID- Microsoft OAuth 客户端 IDMICROSOFT_CLIENT_SECRET- Microsoft OAuth 客户端密钥MICROSOFT_CLIENT_TENANT_ID- Microsoft 租户 ID - 对于个人账户,使用9188040d-6c67-4c5b-b112-36a304b66dad
OIDC
任何支持 OIDC 的身份验证提供商都可以进行配置。
必须提供 email 声明。
如果可用,name 和 picture 声明也会被使用。
允许的重定向 URI 应包含 <open-webui>/oauth/oidc/callback。
使用的环境变量如下:
OAUTH_CLIENT_ID- OIDC 客户端 IDOAUTH_CLIENT_SECRET- OIDC 客户端密钥OPENID_PROVIDER_URL- OIDC well-known URL,例如https://accounts.google.com/.well-known/openid-configurationOAUTH_PROVIDER_NAME- 在 UI 上显示的提供商名称,默认为 SSOOAUTH_SCOPES- 请求的范围,默认为openid email profile
OAuth 角色管理
任何可以配置返回访问令牌中角色的 OAuth 提供商都可以用于管理 Open WebUI 中的角色。
要启用此功能,请将 ENABLE_OAUTH_ROLE_MANAGEMENT 设置为 true。
您可以配置以下环境变量以匹配 OAuth 提供商返回的角色:
OAUTH_ROLES_CLAIM- 包含角色的声明,默认为roles。也可以是嵌套的,例如user.roles。OAUTH_ALLOWED_ROLES- 允许登录的角色列表(接收 open webui 角色user),逗号分隔。OAUTH_ADMIN_ROLES- 允许以管理员身份登录的角色列表(接收 open webui 角色admin),逗号分隔。
如果更改已登录用户的角色,他们需要重新登录才能获得新的角色。
受信任的头部信息
Open WebUI 可以将身份验证委托给一个反向代理,该代理通过 HTTP 头部传递用户的详细信息。 本页面提供了几个示例配置。
错误的配置可能允许用户冒充任意用户登录您的 Open WebUI 实例。
确保只允许身份验证代理访问 Open WebUI,例如设置 HOST=127.0.0.1,使其仅监听本地回环接口。
通用配置
当设置了 WEBUI_AUTH_TRUSTED_EMAIL_HEADER 环境变量时,Open WebUI 将使用指定头部的值作为用户的电子邮件地址,自动处理注册和登录。
例如,设置 WEBUI_AUTH_TRUSTED_EMAIL_HEADER=X-User-Email 并传递 X-User-Email: example@example.com 的 HTTP 头部,则会以 example@example.com 邮箱认证请求。
您还可以定义 WEBUI_AUTH_TRUSTED_NAME_HEADER 来确定使用受信任头部创建的用户名称。如果用户已经存在,则此设置无效。