我正在尝试在根服务器上设置 Keycloak,但无法从 Internet 访问管理控制台。我已经安装了 keycloak 服务器并将它放在同一台机器上的 nginx 反向代理后面。我已经为域设置了一个 Letencrypt 证书。我还通过脚本为 keycloak 设置了管理员用户。
当我使用它的域访问服务器时,https://<my-domain>我被转发到https://<my-domain>/auth并且有一个带有“管理控制台”链接的 keycloak 欢迎页面。此链接指向https://<my-domain>/admin但显示 404。
起初我认为这可能是 nginx 的问题,所以我按照文档中的指南设置负载平衡器(https://www.keycloak.org/docs/latest/server_installation/index.html#_setting-up-负载平衡器或代理)。在那里,在“验证配置”下,它告诉您打开https://<my-domain>/auth/realms/master/.well-known/openid-configuration按预期工作的路径,然后我得到一个包含多个链接和其他信息的 json 文件。但是,这些链接都不起作用 - 都给了我 404。
当我尝试时,https://<my-domain>/auth/realms/master我得到一个 JSON 响应。所以有些链接确实有效,所以我认为这不是 nginx 的问题,而是 keycloak 本身的问题。
所以基本问题是:如何配置 Keycloak 以便我可以通过互联网访问管理控制台?我读过默认情况下您只能在本地主机上访问它,但必须有一种方法可以覆盖此默认值?
相关的 nginx 配置:
upstream keycloak {
server 127.0.0.1:8080;
}
server {
listen 443 ssl http2;
# some ssl configuration for letsencrypt
location / {
proxy_pass http://keycloak;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Run Code Online (Sandbox Code Playgroud)
keycloak/standalone/configuration/standalone.xml我编辑的一些部分:
upstream keycloak {
server 127.0.0.1:8080;
}
server {
listen 443 ssl http2;
# some ssl configuration for letsencrypt
location / {
proxy_pass http://keycloak;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
我能够修复它。问题在于,keycloak 将初始页面从 重定向https://<my-domain>/到 ,https://<my-domain>/auth但随后在所有其他链接/auth中缺少此附加链接。所以管理链接指向https://<my-domain>/admin/master/console没有/auth部分并且这个页面不存在。当我在其中手动输入 URL 时/auth,我得到了一个带有“正在加载..”消息的页面,但链接的所有样式和 JavaScript 文件也缺少/auth其 URL 中的部分,因此没有任何工作。
为了解决这个问题,现在我已经在改standalone.xml线<web-context>auth</web-context>到<web-context>/</web-context>现在一切按预期运行。起始页不再有重定向,所有链接都可以在没有该/auth部分的情况下工作。然而,有趣的是为什么它首先不起作用,以及如果/auth重定向是有意的,如何解决这个问题。
Ben*_*Ben 21
你帮我解决了我的问题。我正在设置 java 系统属性keycloak.frontendUrl(或 env KEYCLOAK_FRONTEND_URL),显然它需要一个完整的 url,而不仅仅是主机名。附加/auth修复了我的重定向问题。
如果不附加,看起来keycloak.hostname.fixed.hostname( KEYCLOAK_HOSTNAME) 也可能会导致问题/auth。
有关主机名提供商的详细信息,请参阅文档:https : //www.keycloak.org/docs/latest/server_installation/index.html#hostname
dan*_*ura 12
我在 kubernetes 集群中的 nginx 反向代理后面的 keycloak 实例也遇到了同样的问题。我通过将 env PROXY_ADDRESS_FORWARDING 设置为 true 来修复它。 PROXY_ADDRESS_FORWARDING=true
Jul*_*ner -3
尝试在浏览器中打开 /auth/admin/master/console/ 。
附加信息:
https://www.keycloak.org/docs/latest/getting_started/index.html
https://www.keycloak.org/docs-api/8.0/rest-api/index.html
哦,我建议使用 dockerized Keycloak。升级到新版本的路径要容易得多。
| 归档时间: |
|
| 查看次数: |
13504 次 |
| 最近记录: |