You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wildfly 25无Keycloak适配器用OIDC时频繁拉取OpenID元数据问题

问题根源

WildFly 25 内置的Elytron OIDC安全实现默认未启用OpenID提供商元数据缓存,所有需要用到元数据的逻辑(包括令牌校验、认证跳转逻辑等)都会主动发起请求拉取元数据,因此单条用户请求会触发多次重复拉取。旧版本的独立Keycloak客户端适配器默认自带元数据缓存机制,因此WildFly 23版本没有该问题。

解决方案
  • 方案1:修改应用OIDC配置
    在你的oidc.json中新增元数据缓存相关参数即可,修改后的配置示例如下:
{  
   "provider-url": "${auth.server.url}",
   "ssl-required": "external",
   "client-id": "myClient",
   "public-client": true,
   "confidential-port": 0,
   "provider-metadata-cache-ttl": 86400,
   "provider-metadata-cache-size": 10
}

其中provider-metadata-cache-ttl单位为秒,示例配置为缓存24小时,你可以根据自身Keycloak元数据的更新频率自行调整。

  • 方案2:全局配置WildFly OIDC缓存
    如果服务器上部署了多个需要OIDC认证的应用,也可以直接修改WildFly配置文件(standalone.xml/domain.xml)的Elytron OIDC子系统,配置全局缓存规则:
<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
    <provider metadata-cache-ttl="86400" metadata-cache-size="10" name="keycloak-provider" provider-url="${auth.server.url}"/>
    <secure-deployment name="你的应用包名.war" provider="keycloak-provider" client-id="myClient" public-client="true" ssl-required="external"/>
</subsystem>
  • 方案3:升级WildFly版本
    该默认配置缺陷在WildFly 26.1.0.Final及以上版本已被修复,升级后默认会启用1小时的元数据缓存,无需额外修改配置即可解决重复拉取问题。
验证方法

配置完成重启WildFly服务后,仅在服务启动后第一次拉取元数据时会打印ELY23004日志,后续正常用户请求不会重复打印该日志,Keycloak服务端的元数据接口请求量也会下降到正常水平。

内容的提问来源于stack exchange,提问作者TorstenK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:24:05