用于 Keycloak 管理控制台重定向的 ProxyPass

Posted

技术标签:

【中文标题】用于 Keycloak 管理控制台重定向的 ProxyPass【英文标题】:ProxyPass for Keycloak Admin Console Redirection 【发布时间】:2021-12-18 14:01:57 【问题描述】:

目前 Keycloak 正在 Docker 容器 (8080:8080) 中运行,并且可以通过 Apache 的 ProxyPass 在前端和管理控制台中访问,一切正常。 Keycloak 有没有办法直接为 / 映射管理控制台?

ProxyPreserveHost on
RequestHeader set "Host" "auth.myapp.com"
RequestHeader set "X-Forwarded-For" "auth.myapp.com"
RequestHeader set "X-Forwarded-Server" "auth.myapp.com"
RequestHeader set "X-Forwarded-Proto" "https"
RequestHeader set "X-Forwarded-Port" "443"
RequestHeader set "X-Forwarded-Host" "auth.myapp.com"

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

当我浏览到 https://auth.myapp.com 时,Keycloak 前端会将我重定向到 https://auth.myapp.com/auth,并且我必须另外单击“管理控制台”。

管理控制台登录名是https://auth.myapp.com/auth/admin(并且会自动重定向到https://auth.myapp.com/auth/realms/master/protocol/openid-connect/auth?client_id=security-admin-console) - 但在此之后我可以从管理控制台看到登录名。到目前为止,一切都很好。但是有没有办法自动重定向到控制台页面?

ProxyPass / http://localhost:8080/auth/realms
ProxyPassReverse / http://localhost:8080/auth/realms

不工作

ProxyPass / http://localhost:8080/auth/admin
ProxyPassReverse / http://localhost:8080/auth/admin

不工作

感谢您的帮助。

【问题讨论】:

使用RedirectMatch/RewriteRule在Apache级别重定向/->/auth/admin 【参考方案1】:

谢谢你的提示。这解决了我的问题。

ProxyPassMatch ^/auth(/(index.html)?)?$ !
RedirectMatch ^/auth(/(index.html)?)?$ /auth/admin

【讨论】:

以上是关于用于 Keycloak 管理控制台重定向的 ProxyPass的主要内容,如果未能解决你的问题,请参考以下文章

根据角色将不同的用户重定向到 Keycloak 登录的不同页面

无需重定向到 Keycloak 的客户端身份验证

KeyCloak - 入口不允许通过 https 服务连接

KeyCloak 在身份验证代码流错误后重定向回身份提供者

为啥 keycloak 会删除重定向 uri 中的 SSL?

Keycloak 无限重定向