用于 http 侦听器的 keycloak 中的 undertow 子系统配置

Posted

技术标签:

【中文标题】用于 http 侦听器的 keycloak 中的 undertow 子系统配置【英文标题】:undertow subsystem configuration in keycloak for http listener 【发布时间】:2021-03-03 16:33:57 【问题描述】:

大家好,我正在尝试配置 keycloak,在浏览文档时,我遇到了 wildfly 中 undertow 子系统的此配置(在其上运行 keycloak)并在我的standalone.xml 文件中对其进行了验证

<server name="default-server">
                <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <http-invoker security-realm="ApplicationRealm"/>
                </host>
            </server>
.....
.....

 <socket-binding-group name="standard-sockets" default-interface="public" port-offset="$jboss.socket.binding.port-offset:0">
        <socket-binding name="ajp" port="$jboss.ajp.port:8009"/>
        <socket-binding name="http" port="$jboss.http.port:8080"/>
        <socket-binding name="https" port="$jboss.https.port:8443"/>
        <socket-binding name="management-http" interface="management" port="$jboss.management.http.port:9990"/>
        <socket-binding name="management-https" interface="management" port="$jboss.management.https.port:9993"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

现在我想知道为什么http-listenerredirect-socket 设置为“https”,因为该侦听器应该侦听对keycloak 服务器发出的http 请求?正确的?我们确实有一个单独的https-listener。同样,在反向代理位于 keycloak 前面的情况下,所有使用 http 通过代理向 keycloak 发出的请求也应该以http listener 结束,对吗?那么为什么 http-listener 将请求重定向到 https 套接字绑定?

【问题讨论】:

【参考方案1】:

起初看起来不合理的地方有一个非常简单的解释:Keycloak 应该通过 https 与用户和客户端进行通信。因此,如果用户尝试通过 http 启动会话,他会立即重定向到 https。 另一方面,如果用户已经通过 https 启动会话,则无需进一步重定向。

【讨论】:

以上是关于用于 http 侦听器的 keycloak 中的 undertow 子系统配置的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak Realm VS Keycloak 客户端

事件侦听器中的内存泄漏

检索特定组的 keycloak 组 id

用于前端开发的可插拔 Keycloak-JS

用于 Keycloak 管理控制台重定向的 ProxyPass

Keycloak 客户端没有可用于访问类型公共的秘密