0

我之前配置了此设置,但是在尝试在新实例上复制它时,我无法使其工作。我正在使用standalone-ha 模式,但是尝试使用standalone 并没有什么不同。

该实例配置了 frontendUrl https://example.com。在standalone-ha.xml 中仅保留此设置,前端和管理控制台都可以毫无问题地访问。将 adminUrl https://intra.example.com添加到 spi 主机名部分后,它看起来也像

        <spi name="hostname">
            <default-provider>default</default-provider>
            <provider name="default" enabled="true">
                <properties>
                        <property name="frontendUrl" value="https://example.com/auth/"/>
                        <property name="adminUrl" value="https://intra.example.com/auth"/>
                    <property name="forceBackendUrlToFrontendUrl" value="false"/>
                </properties>
            </provider>
        </spi>

访问管理控制台不再有效。

在使用欢迎页面上的链接或直接浏览到它时,会出现登录页面(在https://example.com/auth上)。使用有效凭据登录后,它会重定向到https://intra.example.com/auth/admin/master/console/,然后立即重定向到https://intra.example.com/auth/admin/master/console /#state=4626eb82-6993-4fff-8c11-399a05cb8c66&session_state=3198da2f-f6eb-45be-aa87-ae7d52e22068&code=fd73f80a-fe43-4996-b245-efa42efb7b44.3198da2f-f6eb-45be-aa87-ae7d52e22068.e794bdbc-6497-4fc3- 8502-e0afedb67492。然后它重定向回https://intra.example.com/auth/admin/master/console/,然后返回长链接,然后再次返回,依此类推。这个循环永远持续下去。

该实例位于 nginx 代理后面,该代理配置了必要的标头:

server {
    listen                  192.168.0.115:443 ssl http2;

    server_name             intra.example.com;
    ssl_certificate            <valid cert>;
    ssl_certificate_key     <key>;

    location                /auth {
            proxy_pass          https://192.168.0.115:8843/auth;
            proxy_ssl_verify    off;
            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   https;
    }
}
server {
    listen                  <public IPv4>:443 ssl http2;
    listen                  [<public IPv6]:443 ssl http2;

    server_name             example.com;

    ssl_certificate            <valid cert>;
    ssl_certificate_key     <key>;

    location                /auth {
            proxy_pass          https://192.168.0.115:8843/auth;
            proxy_ssl_verify    off;
            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   https;
    }

}

经过研究,我尝试了各种组合:

  • 代理根 (/) 而不是 /auth

  • 代理到 http 而不是 https

  • 将代理地址转发添加到 http/https 侦听器:

     <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true" proxy-address-forwarding="true"/>
    
  • 添加代理监听器:

     <http-listener name="default" socket-binding="http" redirect-socket="proxy-https" enable-http2="true" proxy-address-forwarding="true"/>
    

    结合

     <socket-binding name="proxy-https" port="443"/>
    

     <http-listener name="default" socket-binding="http" redirect-socket="proxy-https" enable-http2="true" proxy-address-forwarding="true"/>
    
  • 在数据库中临时将有效的重定向 URI 设置为 *

这似乎总结了一些关于这个问题的现有线程的想法。我发现的其他线程正在使用 Docker,而我正在使用本机实例。

如果有人知道还有什么可以尝试的,我将不胜感激。我需要将管理控制台分离到一个专用的内部 URL,并且知道以前曾有过这种情况。我什至从 nginx 复制了相同的代理配置,因此不认为问题出在那儿,但我当然会打开该选项。

重定向期间似乎没有生成任何日志条目。我也尝试--debug过。

非常感谢您的阅读。

4

1 回答 1

0

我想我有类似的问题和长话短说(经过几天的谷歌搜索)以下帮助了我

      location / {
                ....
                proxy_pass_header       Set-Cookie;
                ....
      }

归功于托马斯·达克斯伯里。这是他的帖子和他随后的解释,他是如何解决它的。它帮助了我 ;-) https://keycloak.discourse.group/t/redirect-loop-logging-into-master-realm-behind-apache-reverse-proxy/8395

于 2021-12-15T14:56:37.137 回答