Keycloak管理控制台无法访问

问题描述 投票:0回答:1

我正在尝试在根服务器上设置Keycloak,但无法从Internet访问管理控制台。我已经安装了keycloak服务器,并将其放在同一台计算机上的nginx反向代理后面。我已经为域设置了一个letencrypt证书。我还通过脚本设置了管理员的密钥斗篷。

当我访问其域为https://<my-domain>的服务器时,我将被转发到https://<my-domain>/auth,并且有一个带有“管理控制台”链接的密钥访问欢迎页面。该链接指向https://<my-domain>/admin,但显示404。

起初我以为这可能是nginx的问题,所以我按照文档中的指南设置了负载均衡器(https://www.keycloak.org/docs/latest/server_installation/index.html#_setting-up-a-load-balancer-or-proxy)。在那里,在“验证配置”下,它告诉您打开可按预期工作的路径https://<my-domain>/auth/realms/master/.well-known/openid-configuration,我得到一个包含几个链接和其他信息的json文件。但是,这些链接都不起作用-都给我一个404。

[当我尝试https://<my-domain>/auth/realms/master时,我得到一个JSON响应。因此某些链接确实有效,因此我认为这与nginx无关,但与密钥斗篷本身无关。

所以基本问题是:如何配置Keycloak,以便可以通过Internet访问管理控制台?我读过默认情况下,您只能在localhost上访问它,但是必须有一种方法可以覆盖此默认值?

相关的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;
    }
}

keycloak/standalone/configuration/standalone.xml中我已编辑的某些部分:

<subsystem xmlns="urn:jboss:domain:undertow:10.0" ...>
    ...
    <server name="default-server">
        <http-listener name="default" 
            socket-binding="http" 
            redirect-socket="proxy-https"
            enable-http2="true"
            proxy-address-forwarding="true" />
        ...
    </server>
    ...
</subsystem>
...
<interfaces>
    <interface name="management">
        <any-address />
    </interface>
    <interface name="public">
        <any-address />
    </interface>
</interfaces>
<socket-binding-group name="standard-sockets" ...>
    ...
    <socket-binding name="proxy-https" port="443" />
    ...
</socket-binding-group>

编辑

我能够修复它。问题在于,keycloak正在将初始页面从https://<my-domain>/重定向到https://<my-domain>/auth,但是在所有其他链接中,都缺少此额外的/auth。因此,管理链接指向没有https://<my-domain>/admin/master/console部分的/auth,因此该页面不存在。当我手动输入带有/auth的URL时,我得到一个带有“正在加载..”消息的页面,但是所有样式和JavaScript文件都链接在一起,因此URL中也缺少/auth部分,因此没有任何作用。

为了解决这个问题,我现在在standalone.xml行中将<web-context>auth</web-context>行更改为<web-context>/</web-context>,现在一切正常。起始页上没有任何重定向,并且所有链接都可以在没有/auth部分的情况下正常工作。但是,很有趣的是,为什么它首先不起作用,以及如果打算使用/auth重定向,如何解决这个问题。

nginx keycloak
1个回答
0
投票

尝试打开/ 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。如果更容易,则可以升级到较新版本。

© www.soinside.com 2019 - 2024. All rights reserved.