Keycloak迁移服务器后Play Framework应用出现SocketTimeoutException报错
Keycloak迁移后Play应用连接超时问题解决方案
你遇到的SocketTimeoutException报错本质是部署在服务器B上的Play应用无法与新的Keycloak实例建立网络连接,可按以下步骤排查解决:
- 访问地址配置校验
首先检查Play应用内配置的Keycloak服务端地址是否正确:如果两个服务都部署在服务器B上,不要用公网域名/公网IP配置Keycloak地址,直接替换为http://127.0.0.1:8080/auth(根据你实际的Keycloak端口、协议调整),避免云服务商常见的公网IP内部回环访问限制。
你可以直接在部署Play应用的服务器上执行curl命令验证连通性:curl <你配置的Keycloak地址>/auth,如果返回超时即可确认是网络连通问题。 - 防火墙与端口规则校验
Keycloak默认使用8080(HTTP)、8443(HTTPS)端口,检查Keycloak所在服务器的防火墙、安全组规则,确认对应端口的入站规则已放行,且允许Play应用所在的服务器IP(如果同机部署就是127.0.0.1/内网IP段)访问。 - pac4j超时参数调整
如果网络延迟较高,可在Play应用的配置文件中调大pac4j客户端的连接超时阈值:
单位为毫秒,默认值通常为3000,调整为10000即10秒可覆盖大部分高延迟场景。pac4j.callback.timeout = 10000 - Keycloak配置一致性校验
登录Keycloak管理后台,确认迁移后的realm、客户端配置与原服务器A的配置完全一致,特别是客户端的回调地址、Web Origins配置已更新为新的Play应用访问地址。
内容的提问来源于stack exchange,提问作者Joseph Budin
相关产品推荐
相关产品推荐

