1,实现效果
使用keycloak定义的用户名和密码,直接登录openwebui
2,实现原理
keycloak中用户信息中包含用户名和密码,以及email。
使用keycloak中的用户名和密码登录之后,会用email创建一个openwebui的账号。之后每次登录都是进入这个账号。
3,配置方法
查看openwebui的官方文档(URL:oauth),可以看到它是支持OIDC的,所以可以将Keycloak作为OIDC的认证提供者,提供用户的认证服务。
2.1 提前准备keycloak
可以用docker启动一个keycloak的容器,然后
1)新规一个realm
2)里面新建一个client
3)添加用户,并设置登录密码。
具体操作都可以参考keycloak官方文档(docker启动keycloak)
2.2 设置openwebui的环境参数
PS: 各个参数的含义参考 (URL:oauth),这边主要记录怎么设置
ENABLE_OAUTH_SIGNUP
: trueOAUTH_MERGE_ACCOUNTS_BY_EMAIL: false (不建议设置为true。openwebui那边是使用email管理用户,从keycloak登录之后,也是进入对应的email的账户。一旦keycloak那边email修改,登录openwebui之后,就变成了修改后的email的openwebui账号。有账号攻击的风险,除非一旦email设定就不能变更)
OAUTH_CLIENT_ID:上面keycloak新加的realm下面的client
OAUTH_CLIENT_SECRET:keycloak中获取新加的client对应的secret
OPENID_PROVIDER_URL:参考下面的步骤
OAUTH_PROVIDER_NAME:keycloak
OAUTH_SCOPES:openid email profile(默认的值即可)
OPENID_PROVIDER_URL的获取方式如下:
1)进入新加的realm,点击左下角的[Realm setting],右边显示出来的页面底部如下
http://{host}:{port}/realms/{new-realm}/.well-known/openid-configuration)
2)右击[OpenID Endpoint Configuration]之后,点击复制链接。该链接即为OPENID_PROVIDER_URL(示例:
配置完毕,启动openwebui,就会出现使用keycloak进行登录的登录页面。