无法访问 Keycloak 管理控制台

Man*_*uky 16 nginx keycloak

我正在尝试在根服务器上设置 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

  • 将 docker 版本部署到 azure 应用程序服务时,我需要添加此内容 (3认同)

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。升级到新版本的路径要容易得多。

  • 当我打开 `/auth/admin/master/console/` 时,我看到“{{notification.header}} {{notification.message}} 正在加载...”。在浏览器开发工具中,我可以看到由于 404,大量脚本和 css 文件无法加载。 (5认同)