我正在使用 Keycloak (
24.0.2
) 作为一个小型非营利组织的独立自助注册应用程序(带有一些自定义字段)。 Keycloak 作为 nginx 后面的 docker 运行,并在 keycloak.myorganization.com
下提供服务。我有两个领域:master
(默认领域)和 members
(会员将在其中登录/注册)。
现在,我希望用户在输入基本路径时自动转发到“会员”登录/注册。我将主领域的
Frontend URL
设置为 keycloak.myorganization.com
,将会员领域设置为 members.myorganization.com
。
我还修改了docker环境变量:
KC_HOSTNAME=members.myorganization.com
KC_HOSTNAME_ADMIN=keycloak.myorganization.com
Nginx 执行 SSL 终止,并使用
proxy_pass
将 members.myorganization.com
和 keycloak.myorganization.com
的所有内容转发到 localhost/docker。
但是,当我打开 https://members.myorganization.com 时,我会被转发到管理/根控制台,而不是会员领域登录,该登录可在 https://members.myorganization.com/realms 下找到/会员/帐户/.
如何直接转发 https://members.myorganization.com 至 https://members.myorganization.com/realms/members/account/ ?
在迁移指南中,它说:
如果启用了管理控制台,并且管理用户已存在,则欢迎页面将自动重定向到该控制台。可以通过在
文件中设置redirectToAdmin
来修改此行为。默认情况下,该属性设置为theme.properties
,除非您要扩展内置主题,在这种情况下,该属性设置为false
。true
这是否意味着我必须创建/覆盖主题才能修改重定向行为?
我在 Github 讨论中找到了一种覆盖基本路径行为的方法。
首先,按照此处描述的基本设置在本地创建自定义主题以进行 docker 测试。
修改theme/welcome/theme.properties
:
import=common/keycloak
locales=en
修改theme/welcome/index.ftl
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0; url=${adminUrl}" />
<meta name="robots" content="noindex, nofollow" />
<script type="text/javascript">
window.location.href = 'https://members.myorganization.com/realms/members/account/#/'
</script>
</head>
<body>
If you are not redirected automatically, follow this <a href="https://members.myorganization.com/realms/members/account/#/">link</a>.
</body>
</html>
打开 https://members.myorganization.com/ 后,将显示帐户模板中的“欢迎”页面,而不是管理控制台登录页面: