Spring Gateway集成Keycloak配置TokenRelay过滤器启动报错找不到对应GatewayFilterFactory
问题排查与解决步骤
报错核心原因是Spring容器中未扫描到名为TokenRelay的GatewayFilterFactory实例,可按以下顺序排查:
1. 补全缺失依赖
你当前引入的依赖缺少Spring Cloud Gateway专属的OAuth2适配组件,TokenRelay过滤器依赖Gateway和Security的组合适配能力,需补充以下依赖:
- 确认已引入
spring-cloud-starter-gateway,同时必须排除spring-boot-starter-web依赖:Spring Cloud Gateway基于WebFlux实现,和Spring MVC的web starter完全冲突,二者不能共存 - 确认已引入
spring-cloud-starter-security适配包,和你已有的oauth2 client依赖配合才会自动装配TokenRelay过滤器实例
2. 适配版本规则
你当前使用的Spring Cloud Hoxton.RELEASE是该系列最早的正式版,存在多个已知的过滤器适配缺陷:
- Hoxton.SR8之前的版本,TokenRelay过滤器的配置不能直接写
TokenRelay,需要补上空参数后缀,修改配置为:
default-filters: - TokenRelay=
- 建议将Spring Cloud版本升级到和Spring Boot 2.3.12.RELEASE适配的Hoxton.SR12,可直接解决早期版本的TokenRelay自动装配bug
3. 修正安全配置注解
网关基于WebFlux实现,自定义安全配置类不能使用@EnableWebSecurity注解,要替换为@EnableWebFluxSecurity,避免覆盖OAuth2相关的自动装配逻辑
4. 检查配置加载准确性
你从配置中心拉取配置时,需确认最终生效的配置中TokenRelay的大小写完全匹配,过滤器名称严格遵循驼峰命名规则,拼写错误也会触发该报错
内容的提问来源于stack exchange,提问作者noman404
相关产品推荐
相关产品推荐

