Keycloak 帐户管理控制台无法与 Nginx 反向代理一起使用

Keycloak 帐户管理控制台无法与 Nginx 反向代理一起使用

遇到一个奇怪的问题。我已经使用下面的配置启动并运行了 Keycloak,管理控制台运行良好。

不幸的是,当我尝试访问“帐户”客户端(帐户管理控制台,例如从用户列表中选择“模拟”)时,我收到一个弹出窗口,提示 Keycloak 无法加载,并且出现无限加载旋转窗口。 Firefox 的开发工具告诉我这是由于 403 错误造成的。

如果我通过不使用 SSL(并且不使用 Nginx)进行访问来测试它,则一切正常。这是我正在使用的配置:

server {
    listen 80;
    server_name keycloak.domain.org;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name keycloak.domain.org;

    ssl_certificate /etc/letsencrypt/live/keycloak.domain.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/keycloak.domain.org/privkey.pem;

    location /auth {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host $host;
        proxy_buffers 4 16k;
    }
}

我使用此命令启动 Keycloak(当然,我的下一个任务是将其配置为使用 Postgres):

docker run -d -p 8080:8080 \
        -e KEYCLOAK_USER=admin\
        -e KEYCLOAK_PASSWORD=admin\
        -e PROXY_ADDRESSFORWARDING=true\
        -t quay.io/keycloak/keycloak:12.0.4\
                -b 0.0.0.0 \
                -Dkeycloak.frontendUrl=https://keycloak.domain.org/auth/

答案1

我遇到了完全相同的问题并且能够解决它(请参阅这里,下面是快速描述):

  1. 确保您已设置proxy-address-forwarding="true"keycloak 服务器的 HTTP 侦听器配置的值。
  2. 确保还包含一些更多的代理标头配置。我有以下内容:
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
    
  3. 我还添加proxy=edge到属性文件中,但我不确定这是否有帮助。

要检查一切是否正常:

  1. 通过导航到(JSON 文档)检查端点配置http(s)://YOUR_PROXY_SERVER/auth/realms/master/.well-known/openid-configuration并验证端点路径
  2. 登录方式错误的管理控制台的凭据并查找服务器日志——它们应该包含错误登录的条目。确保该条目中的 IP 地址是您用于连接到反向代理的客户端的 IP,而不是反向代理 IP 地址。

来源:https://www.keycloak.org/docs/latest/server_installation/#_setting-up-a-load-balancer-or-proxy

相关内容