Keycloak
注意
本教程为社区贡献内容,不受 Open WebUI 团队官方支持,仅作为如何针对特定使用场景自定义 Open WebUI 的演示。想要贡献内容?请查看贡献教程。
本指南介绍如何将 Open WebUI 与 Keycloak 集成以实现 OIDC 单点登录(SSO)。
1. 环境准备与端口更改
Open WebUI 服务器端口
- 默认端口:
8080
Keycloak 端口冲突问题
Keycloak 默认也使用 8080 端口,导致冲突。请将 Keycloak 端口更改为 9090。
bin/kc.sh start-dev --http-port=90902. 创建 Keycloak Realm
- 打开浏览器访问
http://localhost:9090,创建管理员账户。 - 在
http://localhost:9090/admin登录管理控制台。 - 从顶部的 realm 下拉菜单中,点击 Add realm。
- 输入
openwebui作为 Realm name,点击 Create。

3. 创建 OpenID Connect 客户端
信息
确保已选中 openwebui realm。默认为 master。

- 确保已选中刚创建的
openwebuirealm。 - 在左侧菜单中,点击 Clients → Create client。
- 将 Client ID 设置为
open-webui。 - 保持 Client protocol 为
openid-connect。 - 将 Access Type 设置为
confidential,点击 Save。

4. 启用客户端认证并获取凭据
默认情况下,Keycloak 26.x 将客户端认证设置为"None",需要手动配置。
- 进入 Clients → open-webui → Settings。
- 检查 Client Authenticator 下拉菜单。
- 将"None"更改为 Client ID and secret,点击 Save。
- 点击 Advanced 选项卡。
- 在 Client authentication 部分,点击 Reveal secret 并复制密钥。
- 将此密钥粘贴到
.env文件中的OAUTH_CLIENT_SECRET变量。
5. 创建测试用户
- 在左侧菜单中,进入 Users → Add user。
- 填写 Username、Email 等信息,点击 Save。
- 点击新创建的用户,进入 Credentials 选项卡。
- 输入新密码,取消勾选 Temporary,点击 Set Password。
- 示例:用户名
testuser,密码Test1234!
- 示例:用户名
6. 配置 Open WebUI .env 文件
在 .env 文件中添加或修改以下变量。
# 启用 OAuth2/OIDC 登录
ENABLE_OAUTH_SIGNUP=true
# Keycloak 客户端 信息
OAUTH_CLIENT_ID=open-webui
OAUTH_CLIENT_SECRET=<YOUR_COPIED_SECRET>
# OIDC Discovery Document URL
OPENID_PROVIDER_URL=http://localhost:9090/realms/openwebui/.well-known/openid-configuration
# (可选)SSO 按钮标签
OAUTH_PROVIDER_NAME=Keycloak
# (可选)OAuth 回调 URL
OPENID_REDIRECT_URI=http://localhost:8080/oauth/oidc/callback
修改 .env 文件后,重启 Open WebUI 服务器。
7. HTTP 与 HTTPS
- HTTP(开发/测试环境):
- 协议:
http:// - 示例:
http://localhost:9090
- 协议:
- HTTPS(生产环境推 荐):
- 需要 Keycloak TLS 设置或带 SSL 终止的反向代理。
bin/kc.sh start --https-port=9090 \ --https-key-store=keystore.jks \ --https-key-store-password=<password>
8. 测试集成
- 访问
http://localhost:8080,您应该会看到"Continue with Keycloak"按钮。 - 点击该按钮,应该会重定向到 Keycloak 登录页面。
- 使用
testuser/Test1234!登录,应该成功重定向回 Open WebUI。
9. 配置 Keycloak 用户组映射
9.1. 概述
默认情况下,Keycloak 客户端不在 token 中包含用户组信息。按照以下步骤传递用户组信息。
9.2. 找到 Mapper 创建入口
-
进入 Keycloak 管理控制台:
http://localhost:9090/admin。 -
选择
openwebuirealm。 -
导航到 Clients,选择
open-webui客户端。 -
进入 Client scopes 选项卡。
-
选择将包含用户组信息的 scope(例如
profile或open-webui-dedicated)。
-
在所选 scope 的详情中,进入 Mappers 选项卡。
9.3. 创建 Mapper
点击 Create 或 Add builtin 开始创建新 mapper。
9.4. Mapper 设置
使用适当的设置配置 mapper,以包含用户组成员资格。

9.5. 保存并应用
- 保存 mapper 配置。
- 重启 Open WebUI 服务器以应用更改。
9.6. 配置 Open WebUI 环境变量
在 .env 文件中添加或修改以下变量:
# 启用用户组同步
ENABLE_OAUTH_GROUP_MANAGEMENT=true
# (可选)启用即时用户组创建
ENABLE_OAUTH_GROUP_CREATION=true
# token 中用户组的 claim 键
OAUTH_GROUP_CLAIM=groups