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

如何在Quarkus 2.13中降级Keycloak客户端至v18兼容旧服务器

如何在Quarkus 2.13中覆盖BOM的Keycloak版本至18.x?

针对你遇到的Quarkus 2.13 BOM默认使用Keycloak 19,导致与Keycloak 18服务器兼容性问题(客户端密钥无效)的情况,以下是可行的解决办法:

方法一:通过Maven DependencyManagement强制覆盖所有Keycloak依赖版本

Quarkus 2.13的BOM中,Keycloak依赖版本是通过PR#27387硬升级到19.0.2的,仅覆盖keycloak.version属性可能无法生效。你需要在pom.xml的dependencyManagement节点中显式声明所有Keycloak核心及客户端依赖的版本,强制Maven使用18.0.2:

<dependencyManagement>
    <dependencies>
        <!-- 覆盖Keycloak核心依赖 -->
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-core</artifactId>
            <version>18.0.2</version>
        </dependency>
        <!-- 覆盖Keycloak适配器核心 -->
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-adapter-core</artifactId>
            <version>18.0.2</version>
        </dependency>
        <!-- 覆盖Keycloak授权客户端 -->
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-authz-client</artifactId>
            <version>18.0.2</version>
        </dependency>
        <!-- 覆盖Keycloak服务端依赖(若项目用到) -->
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-services</artifactId>
            <version>18.0.2</version>
        </dependency>
        <!-- 按需添加其他用到的Keycloak模块 -->
    </dependencies>
</dependencyManagement>

配置完成后,执行mvn dependency:tree检查依赖树,确认所有Keycloak相关依赖的版本均为18.0.2,无遗漏的19.x版本依赖。

方法二:排除Quarkus扩展中的Keycloak依赖,手动引入18.x版本

如果你尝试降级quarkus-keycloak-authorization扩展版本无效,可以排除该扩展自带的Keycloak依赖,再手动引入18.x版本的Keycloak客户端依赖:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-keycloak-authorization</artifactId>
    <exclusions>
        <!-- 排除扩展中所有Keycloak依赖 -->
        <exclusion>
            <groupId>org.keycloak</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 手动引入Keycloak 18.x必要依赖 -->
<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-authz-client</artifactId>
    <version>18.0.2</version>
</dependency>
<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-core</artifactId>
    <version>18.0.2</version>
</dependency>

备选方案:修改客户端认证方法(不降级版本)

Keycloak 19默认调整了客户端认证方法,若不想降级客户端版本,可以尝试在application.properties中指定兼容Keycloak 18的认证方法:

# 针对Keycloak客户端认证
quarkus.keycloak.client.authentication-method=client_secret_basic
# 针对授权客户端认证
quarkus.keycloak.authorization.client.authentication-method=client_secret_basic

注意:此方法仅解决认证方法差异导致的密钥无效问题,若存在其他API兼容性差异,仍可能出现其他错误,优先推荐前两种降级客户端版本的方案。

内容的提问来源于stack exchange,提问作者Vince Jerald Villamora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:10:20