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

Spring Security OAuth2集成Keycloak时出现BearerTokenResolver类找不到异常

问题原因

BearerTokenResolver 类属于 spring-security-oauth2-resource-server 模块,但你的依赖配置存在版本不匹配问题——直接引入独立的Spring Security模块,未通过Spring Boot starter统一版本管理,导致类加载失败。

解决方案

  1. 替换资源服务器依赖
    将pom.xml中独立的spring-security-oauth2-resource-server依赖,替换为Spring Boot官方starter:
<!-- 移除原有独立依赖 -->
<!-- <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-resource-server</artifactId>
</dependency> -->

<!-- 添加Spring Boot OAuth2资源服务器starter -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>

Spring Boot starter会自动统一管理所有相关依赖版本,避免版本冲突引发的类缺失问题。

  1. 清理并重新构建依赖
    执行Maven命令清理本地缓存并强制更新依赖:
mvn clean install -U
  1. 排查依赖冲突(可选)
    若问题仍存在,执行以下命令查看依赖树,确认spring-security-oauth2-resource-server版本是否与Spring Boot版本匹配:
mvn dependency:tree | grep oauth2-resource-server

若版本不一致,需排除其他依赖中强制修改版本的冲突项。

额外配置修正

  • Security角色校验:Keycloak返回的角色默认带ROLE_前缀,需将hasRole("role-name")调整为hasRole("ROLE_role-name"),或改用hasAuthority("role-name")。
  • application.yml provider配置:provider节点名称需与registration中的provider: keycloak对应,修正后如下:
provider:
  keycloak:
    authorization-uri: http://keycloak-url/realms/realm-id/protocol/openid-connect/auth
    token-uri: http://keycloak-url/realms/realm-id/protocol/openid-connect/token
    user-info-uri: http://keycloak-url/realms/realm-id/protocol/openid-connect/userinfo
    jwk-set-uri: http://keycloak-url/realms/realm-id/protocol/openid-connect/certs
    user-name-attribute: preferred_username

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:35:43