4.4. Keycloak インテグレーション
Keycloak を使用して、Red Hat build of HawtIO コンソールを保護できます。Red Hat build of HawtIO を Keycloak と統合するには、次の操作が必要です。
- Keycloak サーバーを準備する
- お気に入りのランタイム (Quarkus、Spring Boot、WildFly、Karaf、Jetty、Tomcat など) に Red Hat build of HawtIO をデプロイし、認証に 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/ パスワード admin を使用して、Keycloak 管理コンソール http://localhost:18080/admin/ にログインできます。hawtio-demo-realm.json を Keycloak にインポートします。これを行うには、Create Realm ボタンをクリックし、hawtio-demo-realm.json をインポートします。hawtio-demo レルムを作成します。
hawtio-demo レルムには、hawtio-client アプリケーションがパブリッククライアントとしてインストールされており、admin や viewer などのいくつかのレルムロールが定義されています。これらのロールの名前は、デフォルトの Red Hat build of HawtIO ロールと同じで、Red Hat build of HawtIO 管理コンソールおよび JMX にログインできます。
以下のように、ユーザーも 3 種類あります。
admin-
パスワード
adminとロールadminが割り当てられた、Red Hat build of HawtIO にログインできるユーザー。 viewer-
パスワード
viewerとロールviewerが割り当てられた、Red Hat build of HawtIO にログインできるユーザー。 jdoe-
パスワードが
passwordで、ロールが割り当てられていないユーザーは、Red Hat build of HawtIO にログインできません。
現在、HawtIO RBAC 機能はこれらのランタイムにまだ実装されていないため、ロールの違いは Quarkus と Spring Boot 上の Red Hat build of HawtIO アクセス権に影響はありません。
4.4.2. 設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of HawtIO の Keycloak 統合の設定は、ランタイム (サーバー側) での Keycloak との統合と、HawtIO コンソール (クライアント側) での Keycloak との統合の 2 つの部分で構成されます。
各パーツごとに以下の設定を行う必要があります。
- サーバー側
- Keycloak アダプターのランタイム固有の設定
- クライアント側の設定
-
Red Hat build of HawtIO Keycloak 設定の
keycloak-hawtio.json
4.4.2.1. Quarkus リンクのコピーリンクがクリップボードにコピーされました!
まず、Red Hat build 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 build of HawtIO JS 設定として機能します)。
keycloak-hawtio.json
{
"realm": "hawtio-demo",
"clientId": "hawtio-client",
"url": "http://localhost:18080/",
"jaas": false,
"pkceMethod": "S256"
}
Code Exchange Code Challenge Method の Proof Key 詳細設定に応じて、pkceMethod を S256 に設定します。PKCE が有効になっていない場合は、このオプションを設定しないでください。
プロジェクトをビルドして実行すると、Keycloak と統合されます。
4.4.2.1.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
実際の例は、quarkus-keycloak の例 を参照してください。
4.4.2.2. Spring Boot リンクのコピーリンクがクリップボードにコピーされました!
まず、Red Hat build of HawtIO を Spring Boot アプリケーションに接続するために 必要な設定 を適用します。
Spring Boot アプリケーションを Keycloak と統合するには、pom.xml に次の依存関係を追加する必要があります (4.xy は、最新の Red Hat build 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 build of HawtIO JS 設定として機能します)。
keycloak-hawtio.json
{
"realm": "hawtio-demo",
"clientId": "hawtio-client",
"url": "http://localhost:18080/",
"jaas": false
}
プロジェクトをビルドして実行すると、Keycloak と統合されます。
4.4.2.2.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
作業例は、springboot-keycloak の例 を参照してください。