4.4. Keycloak インテグレーション


Keycloak で HawtIO コンソールを保護できます。HawtIO を Keycloak と統合するには、以下を行う必要があります。

  1. Keycloak サーバーを準備する
  2. HawtIO を任意のランタイム (Quarkus、Spring Boot、WildFly、Karaf、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/ パスワード admin を使用して、Keycloak 管理コンソール http://localhost:18080/admin/ にログインできます。hawtio-demo-realm.json を Keycloak にインポートします。これを行うには、Create Realm ボタンをクリックし、hawtio-demo-realm.json をインポートします。hawtio-demo レルムを作成します。

hawtio-demo レルムには、hawtio-client アプリケーションがパブリッククライアントとしてインストールされており、adminviewer などのいくつかのレルムロールが定義されています。これらのロールの名前は、HawtIO 管理コンソールと JMX にログインできるデフォルトの HawtIO ロールと同じです。

以下のように、ユーザーも 3 種類あります。

admin
パスワード admin とロール admin が割り当てられた、HawtIO にログインできるユーザー。
viewer
パスワード viewer とロール viewer が割り当てられた、HawtIO にログインできるユーザー。
jdoe
パスワードが password で、ロールが割り当てられていないユーザーは、HawtIO にログインできません。
注記

現在、HawtIO RBAC 機能はこれらのランタイムにまだ実装されていないため、ロールの違いは Quarkus と Spring Boot 上の HawtIO アクセス権に影響はありません。

4.4.2. 設定

HawtIO の Keycloak 統合の設定は、ランタイム (サーバー側) での Keycloak との統合と、HawtIO コンソール (クライアント側) での Keycloak との統合の 2 つの部分で構成されます。

各パーツごとに以下の設定を行う必要があります。

サーバー側
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>

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 を作成します (これはクライアント側の 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 詳細設定に応じて、pkceMethodS256 に設定します。PKCE が有効になっていない場合は、このオプションを設定しないでください。

プロジェクトをビルドして実行すると、Keycloak と統合されます。

4.4.2.1.3. 例

実際の例については、quarkus-keycloak の例 を参照してください。

4.4.2.2. Spring Boot

まず、Spring Boot アプリケーションに HawtIO をアタッチするために 必要な設定 を適用します。

Spring Boot アプリケーションを Keycloak と統合するには、pom.xml に次の依存関係を追加する必要があります (4.xy は、最新の 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 を作成します (これはクライアント側の 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 の例 を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.