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
- 
								用户( passwordpassword)和未分配任何角色,不允许该用户登录 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 示例。