用于 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-listener
将redirect-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 客户端