4.4. Keycloak 集成
您可以使用 Keycloak 保护 HawtIO 控制台。要将 HawtIO 与 Keycloak 集成,您需要:
- 准备 Keycloak 服务器
- 将 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
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 角色,如 admin
和 viewer
。这些角色的名称与默认的 HawtIO 角色相同,该角色可以登录 HawtIO 管理控制台和 JMX。
另外,还有 3 个用户:
admin
-
用户 用户,其密码为
admin
viewer
-
用户 用户,具有密码
查看器
jdoe
-
用户(
password
password)和未分配任何角色,不允许该用户登录 HawtIO。
目前,角色的不同不会影响 Quarkus 和 Spring Boot 上的 HawtIO 访问权限,因为 HawtIO RBAC 功能尚未在这些运行时实施。
4.4.2. 配置 复制链接链接已复制到粘贴板!
HawtIO 的 Keycloak 集成配置由两个部分组成:与运行时中的 Keycloak 集成(服务器侧),并与 HawtIO 控制台中的 Keycloak 集成(客户端侧)。
每个部分都需要进行以下设置:
- 服务器端
- Keycloak 适配器的特定于运行时的配置
- 客户端
-
HawtIO Keycloak 配置
keycloak-hawtio.json
4.4.2.1. Quarkus 复制链接链接已复制到粘贴板!
首先,应用所需的配置, 以将 HawtIO 附加到 Quarkus 应用程序。
您需要将 Quarkus 应用程序与 Keycloak 集成为 Quarkus OIDC 扩展。将以下依赖项添加到 pom.xml
中:
pom.xml
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-oidc</artifactId> </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-oidc</artifactId>
</dependency>
4.4.2.1.1. 服务器端 复制链接链接已复制到粘贴板!
然后,在 application.properties
中添加以下行(配置服务器端 OIDC 扩展):
application.properties
quarkus.oidc.token-state-manager.split-tokens = true
非常重要,因为您可能会遇到大量大小会话 Cookie 令牌问题,且无法与 Keycloak 集成。
4.4.2.1.2. 客户端 复制链接链接已复制到粘贴板!
最后,在 Quarkus 应用程序项目中的 src/main/resources
下创建 keycloak-hawtio.json
(充当 client-side HawtIO JS 配置):
keycloak-hawtio.json
根据代码 交换代码挑战方法高级配置,将 pkceMethod
设置为 S256
。如果没有启用 PKCE,请不要设置这个选项。
构建并运行项目,它将与 Keycloak 集成。
4.4.2.1.3. Example 复制链接链接已复制到粘贴板!
如需工作 示例,请参阅 quarkus-keycloak 示例。
4.4.2.2. Spring Boot 复制链接链接已复制到粘贴板!
首先,应用所需的配置, 以将 HawtIO 附加到 Spring Boot 应用程序。
您需要将 Spring Boot 应用程序与 Keycloak 集成的内容是,将以下依赖项添加到 pom.xml
中(将 4.x.y
替换为最新的 HawtIO 发行版本):
pom.xml
<dependency> <groupId>io.hawt</groupId> <artifactId>hawtio-springboot-keycloak</artifactId> <version>4.x.y</version> </dependency>
<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
4.4.2.2.2. 客户端 复制链接链接已复制到粘贴板!
最后,在 Spring Boot 项目中的 src/main/resources
下创建 keycloak-hawtio.json
(充当 client-side HawtIO JS 配置):
keycloak-hawtio.json
构建并运行项目,它将与 Keycloak 集成。
4.4.2.2.3. Example 复制链接链接已复制到粘贴板!
有关工作 示例,请参阅 springboot-keycloak 示例。