4.4. Keycloak 集成


您可以使用 Keycloak 保护 Red Hat Buld of HawtIO 控制台。要将 Red Hat Buld of HawtIO 与 Keycloak 集成,您需要:

  1. 准备 Keycloak 服务器
  2. 将 Red Hat buuld of HawtIO 部署到 favourite 运行时(Quarkus、Spring Boot、Wild、Jetty、Tomcat 等),并将它配置为使用 Keycloak 进行身份验证

4.4.1. 准备 Keycloak 服务器

安装并运行 Keycloak 服务器。最简单的方法是使用 Docker 镜像

docker run -d --name keycloak \
  -p 18080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak start-dev

在这里,我们为 Keycloak 服务器使用端口号 18080,以避免与其他应用程序可能使用的端口冲突。

您可以使用用户 admin / password admin 登录 Keycloak 管理控制台 http://localhost:18080/admin/。将 hawtio-demo-realm.json 导入到 Keycloak 中。为此,可单击 Create Realm 按钮,然后导入 hawtio-demo-realm.json。它将创建 hawtio-demo realm。

hawtio-demo 域具有 hawtio-client 应用程序作为公共客户端安装,并且定义了一些 realm 角色,如 adminviewer。这些角色的名称与 HawtIO 角色的默认 Red Hat buuld 相同,该角色可以登录 Red Hat buuld of HawtIO 管理控制台和 JMX。

另外,还有 3 个用户:

admin
用户 用户,具有密码 admin 和角色 admin,允许登录 Red Hat Buld of HawtIO。
viewer
用户 用户,具有密码 查看器 和角色查看器,允许登录 Red Hat Buld of HawtIO。
jdoe
用户没有分配 密码,没有分配角色,不允许登录 Red Hat buuld of HawtIO。
注意

目前,角色的不同不会影响 Quarkus 和 Spring Boot 上的 HawtIO 访问权限,因为 Red Hat buuld of HawtIO RBAC 功能还没有在这些运行时实施。

4.4.2. 配置

Red Hat buuld of HawtIO 配置由两个部分组成:与运行时中的 Keycloak 集成(服务器侧),并在 Red Hat buuld of HawtIO 控制台(客户端一侧)中与 Keycloak 集成集成。

每个部分都需要进行以下设置:

服务器端
Keycloak 适配器的特定于运行时的配置
客户端
Red Hat buuld of HawtIO Keycloak configuration keycloak-hawtio.json

4.4.2.1. Quarkus

首先,应用所需的配置, 以将 Red Hat buuld of HawtIO 附加到 Quarkus 应用程序。

您需要将 Quarkus 应用程序与 Keycloak 集成为 Quarkus OIDC 扩展。将以下依赖项添加到 pom.xml 中:

pom.xml

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-oidc</artifactId>
</dependency>

4.4.2.1.1. 服务器端

然后,在 application.properties 中添加以下行(配置服务器端 OIDC 扩展):

application.properties

quarkus.oidc.auth-server-url = http://localhost:18080/realms/hawtio-demo
quarkus.oidc.client-id = hawtio-client
quarkus.oidc.credentials.secret = secret
quarkus.oidc.application-type = web-app
quarkus.oidc.token-state-manager.split-tokens = true
quarkus.http.auth.permission.authenticated.paths = "/*"
quarkus.http.auth.permission.authenticated.policy = authenticated

重要

quarkus.oidc.token-state-manager.split-tokens = true 非常重要,因为您可能会遇到大量大小会话 Cookie 令牌问题,且无法与 Keycloak 集成。

4.4.2.1.2. 客户端

最后,在 Quarkus 应用程序项目中的 src/main/resources 下创建 keycloak-hawtio.json (充当 Red Hat buuld of HawtIO JS 配置):

keycloak-hawtio.json

{
  "realm": "hawtio-demo",
  "clientId": "hawtio-client",
  "url": "http://localhost:18080/",
  "jaas": false,
  "pkceMethod": "S256"
}

注意

根据代码 交换代码挑战方法高级配置,将 pkceMethod 设置为 S256。如果没有启用 PKCE,请不要设置这个选项。

构建并运行项目,它将与 Keycloak 集成。

4.4.2.1.3. Example

如需工作 示例,请参阅 quarkus-keycloak 示例。

4.4.2.2. Spring Boot

首先,应用所需的配置, 以将 Red Hat buuld of HawtIO 附加到 Spring Boot 应用程序。

您需要将 Spring Boot 应用程序与 Keycloak 集成的内容是,将以下依赖项添加到 pom.xml 中(将 4.x.y 替换为最新的 Red Hat buuld of HawtIO 发行版本):

pom.xml

<dependency>
  <groupId>io.hawt</groupId>
  <artifactId>hawtio-springboot-keycloak</artifactId>
  <version>4.x.y</version>
</dependency>

4.4.2.2.1. 服务器端

然后,在 application.properties 中添加以下行(配置服务器端 Keycloak 适配器):

application.properties

keycloak.realm = hawtio-demo
keycloak.resource = hawtio-client
keycloak.auth-server-url = http://localhost:18080/
keycloak.ssl-required = external
keycloak.public-client = true
keycloak.principal-attribute = preferred_username

4.4.2.2.2. 客户端

最后,在 Spring Boot 项目中的 src/main/resources 下创建 keycloak-hawtio.json (充当 Red Hat buuld of HawtIO JS 配置):

keycloak-hawtio.json

{
  "realm": "hawtio-demo",
  "clientId": "hawtio-client",
  "url": "http://localhost:18080/",
  "jaas": false
}

构建并运行项目,它将与 Keycloak 集成。

4.4.2.2.3. Example

有关工作 示例,请参阅 springboot-keycloak 示例。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部