第 13 章 Red Hat build of Keycloak admin client


Red Hat build of Keycloak admin client 是一个 Java 库,可帮助访问和使用 Red Hat build of Keycloak Admin REST API。该程序库在运行时需要 Java 11 或更高版本(RESTEasy 依赖项强制实施这个要求)。要从应用程序中使用它,请添加对 keycloak-admin-client 库的依赖项。例如,使用 Maven:

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-admin-client</artifactId>
    <version>999.0.0-SNAPSHOT</version>
</dependency>

以下示例演示了如何使用 Java 客户端库来获取 master 域的详情:

import org.keycloak.admin.client.Keycloak;
import org.keycloak.representations.idm.RealmRepresentation;
...

Keycloak keycloak = Keycloak.getInstance(
    "http://localhost:8080",
    "master",
    "admin",
    "password",
    "admin-cli");
RealmRepresentation realm = keycloak.realm("master").toRepresentation();

admin 客户端的完整 Javadoc 位于 API 文档

13.1. 与红帽构建的 Keycloak 服务器兼容

Red Hat build of Keycloak admin 客户端旨在与 Red Hat build of Keycloak 服务器的多个版本一起工作。管理客户端可能会支持较早发布的红帽构建的 Keycloak 服务器版本,它比客户端和较早版本的 Keycloak 服务器发布。因此,底层"弹性"类的 Java 字段代表请求/响应正文的 JSON 属性(如上一节中显示的 RealmRepresentation 类)可能并不完全相同。

为了避免兼容性问题,请确保在覆盖下的 admin 客户端使用 com.fasterxml.jackson.databind.ObjectMapper 类,使用这两个属性初始化:

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

如果您使用上述管理客户端创建的基本方法,则默认添加这些属性,因为 admin 客户端默认使用 org.keycloak.admin.client.JacksonProvider 类用于创建 ObjectMapper,这将自动添加这些属性。但是,如果您在创建 Keycloak 对象时注入自己的 customJacksonProvider,请确保在希望避免兼容性问题时使用上述属性初始化对象映射。

例如,请考虑 admin 客户端以您自己 MyCustomJacksonProvider 类进行实例化的情况,如下所示:

Keycloak.getInstance(
                "http://localhost:8080",
                "master",
                "admin",
                "admin",
                "admin-cli",
                null,
                null,
                new MyCustomJacksonProvider()
        );

在这种情况下,请确保您的类 MyCustomJacksonProvider 从类 org.keycloak.admin.client.JacksonProvider 扩展,或者确保以上述方式手动配置 ObjectMapper。在使用 KeycloakBuilder 创建管理客户端并且手动注入和创建 RestEasy 客户端时,应谨慎操作。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部