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

Keycloak添加自定义Undertow ServletExtension未生效,求正确实现方式

为Keycloak添加自定义HTTP处理器以设置日志MDC上下文的问题

我希望为Keycloak添加一个自定义Servlet扩展,安装一个HTTP处理器,使其在每个发送到Keycloak的请求被调用时,设置日志MDC上下文,供我们的自定义SPI代码正确记录请求链路日志。

我按照相关文档创建了自定义扩展类:

public class UndertowHandlerExtension implements ServletExtension {
    @Override
    public void handleDeployment(DeploymentInfo deploymentInfo, ServletContext servletContext) {
        deploymentInfo.addInnerHandlerChainWrapper(TraceIdCapturingHandler::new);
    }
}

我在同一个JAR文件中定义了自定义HTTP处理器TraceIdCapturingHandler,还在META-INF/services/io.undertow.servlet.ServletExtension文件中添加了扩展类的全限定名,并更新了部署的jboss-deployment-structure.xml,添加了以下两个依赖项:

<module name="io.undertow.servlet" />
      <module name="javax.servlet.api" />

但部署完成后,该扩展未被调用,我的处理器也未执行。在为Keycloak配置Wildfly时,我是否遗漏了某些步骤,以确保扩展和处理器被正确安装并使用?


编辑:

经过一番排查,我发现之前的方向有误。参考Keycloak SPI示例仓库后,我认为需要自定义RealResourceProvider,通过获取ResteasyProviderFactory实例并调用getContainerRequestFilterRegistry().registerSingleton()来安装我的过滤器。我将尝试此方案并反馈结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:15:35