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

Keycloak添加自定义UserStorageProviderFactory致默认用户存储提供者消失

Keycloak自定义UserStorageProvider导致默认提供者消失的原因及解决方法

原因

  • 自定义jar包重复打包了Keycloak核心依赖,且SPI配置文件META-INF/services/org.keycloak.storage.UserStorageProviderFactory仅包含了你的自定义工厂类路径,覆盖了Keycloak原生SPI配置。Keycloak加载SPI时会合并同路径的SPI文件,若你的文件未包含LDAP、Kerberos等原生提供者的类路径,就会导致原生提供者无法被加载。
  • 打包时使用了shade插件或fat jar模式,将Keycloak核心类也打包进自定义jar,引发类加载冲突,导致原生提供者无法正常初始化。

解决方法

  • 调整依赖范围:将Maven/Gradle中Keycloak相关依赖设置为provided(Maven)或compileOnly(Gradle),避免打包时将核心依赖打进jar包。示例Maven配置:
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-server-spi</artifactId>
        <version>21.0.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-server-spi-private</artifactId>
        <version>21.0.2</version>
        <scope>provided</scope>
    </dependency>
    
  • 检查SPI配置文件:确保META-INF/services/org.keycloak.storage.UserStorageProviderFactory中仅包含你的自定义工厂类路径,无需手动添加原生提供者路径(Keycloak会自动加载原生jar中的对应配置)。
  • 重新打包为thin jar:仅包含自定义代码和必要第三方依赖,不包含Keycloak核心类,放入providers目录后重新执行kc.sh build并启动Keycloak。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:12:07