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

如何在Spring Boot后端结合Spring Security正确集成Keycloak?

Spring Boot 3.1.0 + Keycloak + Spring Security 集成问题:SecurityFilterChain 不工作

我正在为一个简单的Spring Boot后端应用实现安全机制,计划结合Keycloak与Spring Security完成集成。尝试了十余种教程的基础过滤器/SecurityConfig配置后,仍无法解决SecurityFilterChain不工作的问题。

依赖版本

我的依赖版本均为Spring Boot 3.1.0,包括:

  • org.springframework.boot:spring-boot-starter:3.1.0
  • org.springframework.boot:spring-boot-starter-web:3.1.0
  • org.springframework.boot:spring-boot-starter-oauth2-client:3.1.0
  • org.springframework.boot:spring-boot-starter-security:3.1.0
  • org.springframework.boot:spring-boot-starter-oauth2-resource-server:3.1.0
  • org.projectlombok:lombok:1.18.26
  • org.springframework.boot:spring-boot-starter-test:3.1.0

我也曾尝试调整Spring Security版本(如6.1.1),但问题依旧。

application.properties 配置

application.properties的基础配置如下:

spring.security.oauth2.client.registration.keycloak.client-id=[client-id]
spring.security.oauth2.client.registration.keycloak.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.keycloak.scope=openid
spring.security.oauth2.client.provider.keycloak.issuer-uri=http://localhost:8080/realms/dev
spring.security.oauth2.client.provider.keycloak.user-name-attribute=preferred_username

已尝试的无效方案

以下是我尝试过但未成功的方案:

  1. Baeldung教程方案:
    该教程提供的SecurityConfig通过@Bean返回SecurityFilterChain,但其中的authorizeRequests()、oauth2Login()均已标记为废弃(oauth2Login()甚至标记为待移除)。

  2. GitHub Issue #10187讨论方案:
    该方案继承WebSecurityConfigurerAdapter类进行配置,但该类已废弃,且其中的oauth2Client()、oauth2Login()同样已废弃。官方指引需使用SecurityFilterChain方案,但仍未解决问题。

我了解到旧版Keycloak适配器已在去年废弃,且并未使用该适配器。

需求

现寻求帮助,希望获取一个简单的SecurityConfig基础配置,能够从请求中获取Bearer Token、验证JWT,并按单个端点校验用户角色/权限(而非全局配置)。


内容的提问来源于stack exchange,提问作者J. M. Arnold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:53:09