アップグレードガイド
概要
第1章 Red Hat build of Keycloak のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、Red Hat build of Keycloak をバージョン 24.0.x からバージョン 26.0.15 にアップグレードする方法を説明します。このガイドの手順は、次の順序で使用してください。
- Red Hat build of Keycloak の以前のバージョンからのリリース固有の変更を確認します。
- Red Hat build of Keycloak サーバーをアップグレードします。
- Red Hat build of Keycloak アダプターをアップグレードします。
- Red Hat build of Keycloak 管理クライアントをアップグレードします。
Red Hat ビルドの Keycloak 22.x からアップグレードする場合は、バージョン 24.0 アップグレードガイド ですべての変更を確認してください。その後、このガイドで説明されているアップグレード手順を実行できます。
Red Hat Single Sign-On 7.6 のお客様の場合は、このガイドの代わりに 移行ガイド を使用してください。
第2章 リリース固有の変更 リンクのコピーリンクがクリップボードにコピーされました!
2.1. サーバー設定の変更 リンクのコピーリンクがクリップボードにコピーされました!
2.1.1. 新しいホスト名オプション リンクのコピーリンクがクリップボードにコピーされました!
古いホスト名オプションが削除されたため、ホスト名 v2 オプションがデフォルトでサポートされます。
必要な移行のリスト:
| 古いオプション | 新しいオプション |
|---|---|
|
|
|
|
|
|
|
|
|
ご覧のとおり、hostname および hostname-admin オプションの *-url 接尾辞は削除されました。オプション hostname は、ホスト名と URL の両方を受け入れますが、hostname-admin は現在完全な URL のみを受け入れます。
また、path や port を個別に設定する方法はありません。これは、hostname と hostname-admin オプションの完全な URL を指定することで実現できます。
ポートが URL の一部でない場合は、受信リクエストヘッダーから動的に解決されます。
HTTPS は、hostname および hostname-admin URL の一部でない限り、強制されなくなりました。指定されていない場合、使用されるプロトコル (http/https) は受信リクエストから動的に解決されます。hostname-strict-https オプションは削除されました。
| 削除されたオプション |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
2.1.1.1. 例 リンクのコピーリンクがクリップボードにコピーされました!
簡略表記
# Hostname v1 bin/kc.[sh|bat] start --hostname=mykeycloak.org --https-port=8543 --hostname-path=/auth --hostname-strict-https=true # Hostname v2 bin/kc.[sh|bat] start --hostname=https://mykeycloak.org:8543/auth
# Hostname v1
bin/kc.[sh|bat] start --hostname=mykeycloak.org --https-port=8543 --hostname-path=/auth --hostname-strict-https=true
# Hostname v2
bin/kc.[sh|bat] start --hostname=https://mykeycloak.org:8543/auth
例からわかるように、URL のすべての部分を単一の hostname オプションを使用して指定できるようになり、ホスト名のセットアッププロセスが簡素化されました。HTTPS は hostname-strict-https オプションによって強制されるのではなく、ホスト名 URL で指定することによって強制されることに注意してください。
バックチャネル設定
# Hostname v1 bin/kc.[sh|bat] start --hostname=mykeycloak.org --hostname-strict-backchannel=true # Hostname v2 bin/kc.[sh|bat] start --hostname=mykeycloak.org --hostname-backchannel-dynamic=false
# Hostname v1
bin/kc.[sh|bat] start --hostname=mykeycloak.org --hostname-strict-backchannel=true
# Hostname v2
bin/kc.[sh|bat] start --hostname=mykeycloak.org --hostname-backchannel-dynamic=false
バックエンドエンドポイントとフロントエンドエンドポイントの両方に同じ URL を使用する場合は、動作が変更することに注意してください。以前の hostname v1 では、バックチャネル URL はリクエストヘッダーから動的に解決されていました。したがって、必要な結果を得るには、hostname-strict-backchannel=true を指定する必要がありました。
ホスト名 v2 の場合、バックチャネル URL はフロントエンドの URL とすでに同じです。リクエストヘッダーから動的に解決するには、hostname-backchannel-dynamic=true を設定し、hostname オプションに完全な URL を指定する必要があります。
詳細とより包括的なシナリオは、ホスト名の設定 (v2) を参照してください。
2.1.2. kcadm と kcreg の変更 リンクのコピーリンクがクリップボードにコピーされました!
kcadm と kcreg がオプションとパラメーターを解析して処理する方法が変更されました。使用方法エラー、間違ったオプションまたはパラメーターからのエラーメッセージは、以前のバージョンとは若干異なる場合があります。また、使用方法エラーの場合、終了コードは 1 ではなく 2 になります。
2.1.3. グループパス内のスラッシュのエスケープ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak はグループパス内のスラッシュをエスケープしたことはありません。そのため、top の子である group/slash という名前のグループは、完全なパス /top/group/slash を使用しますが、これは明らかに誤解を招きます。このバージョンから、サーバーを起動して名前内のスラッシュをエスケープできるようになりました。
bin/kc.[sh|bat] start --spi-group-jpa-escape-slashes-in-group-path=true
bin/kc.[sh|bat] start --spi-group-jpa-escape-slashes-in-group-path=true
エスケープ文字はチルダ文字 ~ です。前の例では、パスは /top/group~/slash になります。エスケープは、最後のスラッシュを階層区切りではなく、名前の一部としてマークします。
エスケープは動作の変更を表すため、現在デフォルトでは無効になっています。ただし、エスケープを有効にすることが推奨されており、今後のバージョンではこれがデフォルトになる可能性があります。
2.1.4. --import-realm オプションはマスターレルムをインポートできる リンクのコピーリンクがクリップボードにコピーされました!
マスターレルムが存在する前に、--import-realm オプションを指定して start または start-dev コマンドを実行すると、インポートマテリアルにマスターレルムが存在する場合はインポートされます。以前の動作では、マスターレルムが最初に作成され、その後そのインポートがスキップされていました。
2.1.5. --optimized 起動オプションの追加検証 リンクのコピーリンクがクリップボードにコピーされました!
--optimized 起動オプションでは、最初に最適化されたサーバーイメージをビルドすることが必要になりました。これは、最初に kc.sh|bat build を実行するか、--optimized フラグなしで他の任意のサーバーコマンド (start、export、import など) を実行することによって実現できます。
2.1.6. ランタイムで cache オプションを指定する リンクのコピーリンクがクリップボードにコピーされました!
オプション cache、cache-stack、cache-config-file はビルドオプションではなくなり、ランタイム時のみ指定できます。これにより、ビルドフェーズを実行してイメージを再ビルドする必要がなくなります。これらは build フェーズでは認識されないため、build フェーズから削除して runtime フェーズに追加する必要があることに注意してください。現在のキャッシュオプションを runtime フェーズに追加しない場合、Red Hat build of Keycloak はデフォルトのキャッシュ設定に戻ります。
2.1.7. HTTP レスポンスの消費時にメモリー使用量を制限する リンクのコピーリンクがクリップボードにコピーされました!
ブローカリングなどの一部のシナリオでは、Red Hat build of Keycloak は HTTP を使用して外部サーバーと通信します。これらのプロバイダーが大量のデータを送信した場合にサービス拒否が発生するのを回避するために、Red Hat build of Keycloak では、デフォルトで応答が 10 MB に制限されるようになりました。
ユーザーは、プロバイダー設定オプション spi-connections-http-client-default-max-consumed-response-size を設定することでこの制限を設定できます。
消費されるレスポンスを 1 MB に制限する
bin/kc.[sh|bat] --spi-connections-http-client-default-max-consumed-response-size=1000000
bin/kc.[sh|bat] --spi-connections-http-client-default-max-consumed-response-size=1000000
2.1.8. kc.sh/bat インポートプレースホルダーの置換 リンクのコピーリンクがクリップボードにコピーされました!
kc.[sh|bat] import コマンドでプレースホルダーの置換が有効になりました。以前は、プレースホルダーの置換は起動時のレルムのインポートに対してのみ有効になっていました。
import コマンドのプレースホルダー置換を無効にする場合は、システムプロパティー -Dkeycloak.migration.replace-placeholders=false を追加します。
2.2. ホスト名検証ポリシー リンクのコピーリンクがクリップボードにコピーされました!
spi-truststore-file-hostname-verification-policy と新しい tls-hostname-verifier オプションのデフォルトは、WILDCARD ではなく DEFAULT になりました。WILDCARD および STRICT オプション値は非推奨となりました。代わりに、DEFAULT に依存する必要があります。
WILDCARD でサポートされ、DEFAULT ではサポートされない動作: * は、サブドメイン名内のワイルドカード (例: *.foo.com) が、複数のレベル (例: a.b.foo.com) を含む任意のものに一致することを可能にします。* は、よく知られているパブリック接尾辞とのマッチングを可能にします。たとえば、foo.co.gl は *.co.gl と一致できます。
STRICT でサポートされ、DEFAULT ではサポートされない動作: * STRICT は、ワイルドカードが一致するかどうかを判断するときに、2 文字のトップレベル (*.XXX.YY) で終わる 2 文字または 3 文字のドメイン名の小さな除外リストを使用します。代わりに、DEFAULT は https://publicsuffix.org/list/ から、より完全なパブリック接尾辞ルールと除外リストを使用します。
WILDCARD または STRICT オプションからのこれらの動作に依存することは想定されていません。
2.3. 永続的なユーザーセッション リンクのコピーリンクがクリップボードにコピーされました!
新しい機能 persistent-user-sessions は、オンラインユーザーセッションとオンラインクライアントセッションをデータベースに保存します。この変更により、Red Hat build of Keycloak のすべてのインスタンスが再起動またはアップグレードされた場合でも、ユーザーはログインしたままになります。
以前のバージョンの Red Hat build of Keycloak では、オフラインユーザーとオフラインクライアントセッションのみがデータベースに保存されていました。この動作は、Red Hat build of Keycloak の以前のバージョンと同じです。
このバージョンに移行すると、既存のオンラインユーザーセッションとオンラインクライアントセッションはすべてクリアされ、ユーザーはログアウトされます。オフラインユーザーセッションとオフラインクライアントセッションは影響を受けません。
2.3.1. 永続的なユーザーセッションの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak 26 では、すべてのユーザーセッションがデフォルトでデータベースに保存されます。この機能を無効にすると、この動作を以前の状態に戻すことができます。分散キャッシュの設定 ガイドの 揮発性ユーザーセッション の手順を使用します。
永続セッションを有効にすると、オンラインユーザーセッション、オフラインユーザーセッション、オンラインクライアントセッション、オフラインクライアントセッションのメモリー内キャッシュは、デフォルトでノードあたり 10000 エントリーに制限されるため、大規模なインストールでの Keycloak の全体的なメモリー使用量が削減されます。メモリーから削除されたアイテムは、必要に応じてデータベースからオンデマンドでロードされます。この機能を有効にすると、ログイン、ログアウト、トークン更新リクエストごとにメモリー使用量が削減され、データベース使用率が増加することが期待できます。
Red Hat build of Keycloak マルチサイトセットアップで外部 Data Grid のキャッシュサイズを設定するには、Data Grid Operator を使用して HA 用に Data Grid をデプロイする を参照してください。
この機能を有効にすると、spi-user-sessions-infinispan-offline-session-cache-entry-lifespan-override オプションおよび spi-user-sessions-infinispan-offline-client-session-cache-entry-lifespan-override オプションは使用できなくなります。これは、以前にオフラインセッションがメモリー内に保持される時間をオーバーライドするために、これらのオプションが使用されていたためです。
2.3.2. 既存ユーザーのサインアウト リンクのコピーリンクがクリップボードにコピーされました!
persistent-user-sessions が有効な場合に、レルムのすべてのオンラインユーザーセッションからサインアウトするには、次の手順を実行します。
- 管理コンソールへログインします。
- メニュー項目 Sessions を選択します。
- Sign out all active sessions アクションを選択します。
2.3.3. セッションキャッシュのサイズを制限する リンクのコピーリンクがクリップボードにコピーされました!
データベースがユーザーセッションの信頼できる情報源になったため、セッションキャッシュのサイズを制限してメモリー使用量を削減することが可能になりました。デフォルトの conf/cache-ispn.xml ファイルを使用する場合、ユーザーおよびクライアントセッションを保存するためのキャッシュは、デフォルトでエントリーごとに 10000 セッションと 1 人の所有者のみ保存するように設定されます。
オプション cache-embedded-sessions-max-count、cache-embedded-client-sessions-max-count、cache-embedded-offline-sessions-max-count、および cache-embedded-offline-client-sessions-max-count を使用して、キャッシュのサイズを更新します。
更新されたリソース要件の詳細は、CPU およびメモリーリソースのサイズ設定の概念 を参照してください。
2.4. メトリクスとヘルスエンドポイント リンクのコピーリンクがクリップボードにコピーされました!
2.4.1. デフォルトで有効になっている埋め込みキャッシュのメトリクス リンクのコピーリンクがクリップボードにコピーされました!
埋め込みキャッシュのメトリクスがデフォルトで有効になりました。レイテンシーのヒストグラムを有効にするには、cache-metrics-histograms-enabled オプションを true に設定します。
2.4.2. HTTP エンドポイントのメトリクスがデフォルトで有効に リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak によって提供されるメトリクスに、http_server で始まる HTTP サーバーメトリクスが含まれるようになりました。以下に例を示します。
http_server_active_requests 1.0
http_server_requests_seconds_count{method="GET",outcome="SUCCESS",status="200",uri="/realms/{realm}/protocol/{protocol}/auth"} 1.0
http_server_requests_seconds_sum{method="GET",outcome="SUCCESS",status="200",uri="/realms/{realm}/protocol/{protocol}/auth"} 0.048717142
http_server_active_requests 1.0
http_server_requests_seconds_count{method="GET",outcome="SUCCESS",status="200",uri="/realms/{realm}/protocol/{protocol}/auth"} 1.0
http_server_requests_seconds_sum{method="GET",outcome="SUCCESS",status="200",uri="/realms/{realm}/protocol/{protocol}/auth"} 0.048717142
新しいオプション http-metrics-histograms-enabled と http-metrics-slos を使用して、デフォルトのヒストグラムバケットまたはサービスレベル目標 (SLO) の特定のバケットを有効にします。http_server_requests_seconds_bucket で提供される追加のメトリクスシリーズの使用方法に関するヒストグラムの詳細は Prometheus ドキュメント を参照してください。
2.4.3. メトリクスおよびヘルスエンドポイントの管理ポート リンクのコピーリンクがクリップボードにコピーされました!
/health および /metrics エンドポイントは、デフォルトでオンになっている管理ポート 9000 でアクセスできます。つまり、これらのエンドポイントは標準の Red Hat build of Keycloak ポート 8080 および 8443 に公開されなくなります。
古い動作を反映するには、プロパティー --legacy-observability-interface=true を使用します。これにより、管理ポートでこれらのエンドポイントは公開されません。ただし、このプロパティーは非推奨であり、今後のリリースでは削除される予定であるため、使用しないことを推奨します。
管理インターフェイスは、デフォルトの Red Hat build of Keycloak とは異なる HTTP サーバーを使用するため、個別に設定することができます。管理インターフェイスのプロパティーに値が指定されていない場合は、デフォルトの Red Hat build of Keycloak HTTP サーバーから値が継承されることに注意してください。
詳細は、管理インターフェイスの設定 を参照してください。
2.5. XA の変更 リンクのコピーリンクがクリップボードにコピーされました!
2.5.1. XA トランザクションの変更 リンクのコピーリンクがクリップボードにコピーされました!
-
オプション
transaction-xa-enabledはデフォルトで true ではなく false になります。XA トランザクションのサポートが必要な場合は、このオプションを明示的に true に設定する必要があります。 -
transaction-xa-enabledが true の場合、XA トランザクションリカバリーサポートはデフォルトで有効になります。トランザクションログは、KEYCLOAK_HOME/data/transaction-logs に保存されます。
2.5.2. 追加のデータソースで XA の使用が必要になる リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak はデフォルトでは XA データソースを使用しません。ただし、複数のデータソースが使用されている場合、これは安全ではないと見なされます。このリリース以降、Red Hat build of Keycloak にデータソースをさらに追加する場合は、XA データソースを使用する必要があります。デフォルトのデータソースが XA をサポートしている場合は、--transaction-xa-enabled=true オプションを設定することでこれを実行できます。追加のデータソースの場合は、quarkus.properties ファイルで quarkus.datasource.<your-datasource-name>.jdbc.transactions=xa オプションを使用する必要があります。最大 1 つのデータソースが非 XA になることができます。トランザクションストア用の永続ストレージがない場合、回復はサポートされません。
2.6. Operator の変更 リンクのコピーリンクがクリップボードにコピーされました!
2.6.1. Operator はデフォルトで proxy=passthrough に設定されなくなる リンクのコピーリンクがクリップボードにコピーされました!
プロキシーオプションがサーバーから削除されました。
2.6.2. Operator スケジューリングのデフォルト リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak Pod には、同じ CR からの複数のインスタンスが同じノードにデプロイされるのを防ぐためのデフォルトのアフィニティーが設定されるようになりました。また、ストレッチキャッシュクラスターを防ぐために、同じ CR からのすべての Pod が同じゾーンに配置されることが優先されます。
2.6.3. Operator のデフォルトの CPU およびメモリー制限/リクエスト リンクのコピーリンクがクリップボードにコピーされました!
ベストプラクティスに従うために、Operator のデフォルトの CPU およびメモリー制限/要求が導入されました。これは、非 OLM インストールと OLM インストールの両方に影響します。OLM インストールのデフォルト値をオーバーライドするには、Operator の サブスクリプション の resources セクションを編集します。
2.7. API の変更 リンクのコピーリンクがクリップボードにコピーされました!
2.7.1. ClusterProvider API の新しいメソッド リンクのコピーリンクがクリップボードにコピーされました!
org.keycloak.cluster.ClusterProvider に次のメソッドが追加されました。
-
void notify(String taskKey, Collection<? extends ClusterEvent> events, boolean ignoreSender, DCNotify dcNotify)
複数のイベントが同じ taskKey に送信されると、このメソッドはイベントをバッチ処理し、単一のネットワーク呼び出しを実行します。これは、トラフィックとネットワーク関連のリソースを削減するための最適化です。
Red Hat build of Keycloak 26 では、カスタム実装との下位互換性を維持するために、新しいメソッドにデフォルトの実装があります。デフォルトの実装では、イベントごとに 1 つのネットワーク呼び出しが実行され、Red Hat build of Keycloak の今後のバージョンでは削除される予定です。
2.7.2. 名前でレルムを検索する新しい Java API リンクのコピーリンクがクリップボードにコピーされました!
RealmProvider Java API に、名前でレルムを検索できる新しいメソッド Stream<RealmModel> getRealmsStream(String search) が追加されました。デフォルト実装では、プロバイダーからストリームをロードした後にフィルタリングを行いますが、より効率的な実装を提供することが推奨されています。
2.8. イベントの変更 リンクのコピーリンクがクリップボードにコピーされました!
2.9. Keycloak JS リンクのコピーリンクがクリップボードにコピーされました!
このリリースには、考慮すべき Keycloak JS ライブラリーへのいくつかの変更が含まれています。これらの変更の主な誘因は、ライブラリーを Red Hat build of Keycloak サーバーから切り離し、独立してリファクタリングできるようにして、コードを簡素化し、今後のメンテナンスを容易にすることです。変更内容は以下のとおりです。
2.9.1. ライブラリーはサーバーから静的に提供されなくなる リンクのコピーリンクがクリップボードにコピーされました!
Keycloak JS ライブラリーは、Red Hat build of Keycloak サーバーから静的に提供されなくなりました。つまり、次の URL は利用できなくなります。
-
/js/keycloak-authz.js -
/js/keycloak-authz.min.js -
/js/keycloak.js -
/js/keycloak.min.js -
/js/{version}/keycloak-authz.js -
/js/{version}/keycloak-authz.min.js -
/js/{version}/keycloak.js -
/js/{version}/keycloak.min.js
さらに、これらの URL のライブラリーにリンクされていた keycloakJsUrl プロパティーは、管理コンソールのテーマから削除されました。カスタムテーマでこのプロパティーを使用してライブラリーを組み込んでいた場合は、別の方法を使用してライブラリーを組み込むようにテーマを更新する必要があります。
ここで、NPM などのパッケージマネージャーを使用して、ライブラリーをプロジェクトに含める必要があります。このライブラリーは、NPM レジストリーで keycloak-js として入手できます。これは、以下のコマンドを使用してインストールできます。
npm install keycloak-js
npm install keycloak-js
または、サーバーのディストリビューションには、keycloak-js-26.0.0.tgz アーカイブ内のライブラリーのコピーが含まれています。そこからライブラリーをプロジェクトにコピーできます。ビルドせずにブラウザーで直接ライブラリーを使用している場合は、自分でライブラリーをホストする必要があります。将来的にライブラリーの更新が容易になるため、プロジェクトにライブラリーを含めるにはパッケージマネージャーを使用することを推奨します。
2.9.2. Keycloak インスタンスの設定が必要になる リンクのコピーリンクがクリップボードにコピーされました!
以前は、設定を渡さずに Keycloak インスタンスを構築することができました。続いてその設定は、含まれている keycloak.js スクリプトのパスに基づき、サーバーから keycloak.json ファイルとして自動的にロードされます。ライブラリーがサーバーから静的に提供されなくなったため、この機能は削除されました。Keycloak インスタンスを構築するときに、設定を明示的に渡す必要があります。
2.9.3. ログインメソッドが async となる リンクのコピーリンクがクリップボードにコピーされました!
Keycloak JS は、Web Crypto API を使用して、PKCE をサポートするために必要な SHA-256 ダイジェストを計算するようになりました。この API の非同期性により、次のパブリックメソッドは常に Promise を返すようになりました。
-
login() -
createLoginUrl() -
createRegisterUrl()
これらのメソッドを await とするようにコードを更新してください。
これらのメソッドを await とするようにコードを更新してください。
2.9.4. ビルド時におけるオプションの起動動作の厳密化 リンクのコピーリンクがクリップボードにコピーされました!
提供されたビルド時のオプションが、前回の最適化された Red Hat build of Keycloak のビルド時にサーバーイメージに保存された値と異なる場合、Red Hat build of Keycloak は起動に失敗するようになりました。以前は、このような場合には警告メッセージが表示されていました。
2.9.5. 新しいデフォルトのクライアントスコープ basic リンクのコピーリンクがクリップボードにコピーされました!
basic という名前の新しいクライアントスコープが、レルムの "デフォルト" クライアントスコープとして追加され、新しく作成されたすべてのクライアントに追加されます。移行中に、クライアントスコープも既存のすべてのクライアントに自動的に追加されます。
このスコープには、次のクレームに対して事前設定されたプロトコルマッパーが含まれています。
-
sub(詳細は下記専用セクションを参照) -
auth_time
これにより、軽量アクセストークン内のクレームの数を減らすための追加の支援が提供されるだけでなく、常に自動的に追加されるクレームを設定する機会も提供されます。
2.9.5.1. プロトコルマッパーを介して sub クレームがアクセストークンに追加される リンクのコピーリンクがクリップボードにコピーされました!
アクセストークンに常に追加されていた sub クレームは、新しい Subject (sub) プロトコルマッパーを使用して、デフォルトで追加されるようになりました。
Subject (sub) マッパーは、basic クライアントスコープでデフォルトで設定されます。したがって、このバージョンにアップグレードした後は追加の設定は必要ありません。
Pairwise subject identifier マッパーを使用してアクセストークンの sub クレームをマップしている場合は、Subject (sub) マッパーを無効にするか削除することを検討できますが、Subject (sub) プロトコルマッパーは Pairwise subject identifier マッパーの前に実行され、pairwise 値が Subject (sub) マッパーによって追加された値をオーバーライドするため、厳密には必要ありません。これは、Subject (sub) マッパーが現在最初のプロトコルマッパーとして実行されているため、sub クレームをオーバーライドする他のカスタムプロトコルマッパー実装にも適用される場合があります。
Subject (sub) マッパーを使用して、アクセストークン、軽量アクセストークン、およびイントロスペクション応答に対してのみ サブ クレームを設定できます。IDToken と Userinfo には常に sub クレームが含まれます。
ユーザーセッションが存在せず、sub クレームが常にアクセストークンに追加されるため、マッパーはサービスアカウントには影響しません。
2.9.5.2. nonce クレームは ID トークンにのみ追加される リンクのコピーリンクがクリップボードにコピーされました!
nonce クレームは、OpenID Connect Core 1.0 仕様に厳密に従って ID トークンにのみ追加されるようになりました。仕様に示されているように、同じパラメーターが認可リクエストで送信された場合、ID トークン 内でクレームが必須になります。仕様では、リフレッシュ要求 後に nonce を追加しないことも推奨されています。以前は、クレームはすべての応答 (更新を含む) のすべてのトークン (Access、Refresh、ID) に設定されていました。
ソフトウェアには、クライアントスコープに割り当てて古い動作に戻すことができる、新しい Nonce backwards compatible マッパーも含まれています。たとえば、JS アダプターは、バージョン 24.0.0 で問題 #26651 を修正する前に、すべてのトークンで返された nonce クレームをチェックしました。したがって、古いバージョンの JS アダプターを使用する場合は、クライアントスコープを使用して、必要なクライアントにマッパーを追加する必要があります。
2.9.5.3. 古い JavaScript アダプターの使用 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションで最新の Red Hat build of Keycloak サーバーを古いバージョンの JavaScript アダプターとともに使用する場合、以前のバージョンの JavaScript アダプターは、Red Hat build of Keycloak によって追加されたが OIDC 仕様ではサポートされていないクレームに依存しているため、上記のトークンの変更の影響を受ける可能性があります。ここでは、以下の点を説明します。
-
Red Hat build of Keycloak Javascript アダプター 24.0.3 以前を使用する場合に
Session State (session_state)マッパーを追加する -
Red Hat build of Keycloak 24 より古い Red Hat build of Keycloak Javascript アダプターを使用する場合に、
Nonce backwards compatibleマッパーを追加する
プロトコルマッパーを対応するクライアントまたは一部のクライアントスコープに直接追加できます。これは、Red Hat build of Keycloak Javascript アダプターの古いバージョンに依存するクライアントアプリケーションで使用できます。詳細は、session_state および nonce クレームに関する前のセクションを参照してください。
2.10. アイデンティティープロバイダーの変更 リンクのコピーリンクがクリップボードにコピーされました!
2.10.1. アイデンティティープロバイダーはレルム表現から利用できなくなる リンクのコピーリンクがクリップボードにコピーされました!
多数のアイデンティティープロバイダーが存在する場合のレルムと組織のスケーラビリティーに関する改善の一環として、レルム表現にはアイデンティティープロバイダーのリストが保持されなくなりました。ただし、レルムをエクスポートするときには、レルム表現から引き続き使用できます。
レルム内のアイデンティティープロバイダーのクエリーを取得するには、/realms/{realm}/identity-provider/instances エンドポイントを使用することを推奨します。このエンドポイントはフィルターとページネーションをサポートしています。
2.10.2. アイデンティティープロバイダーの選択におけるパフォーマンスの向上 リンクのコピーリンクがクリップボードにコピーされました!
組織に関連付けられた IDP を取得し、ログインに使用できる IDP (enabled であり、link_only ではなく、hide_on_login としてマークされていないもの) を取得するクエリーのパフォーマンスを向上させるために、IDENTITY_PROVIDER テーブルに新しいインデックスが追加されました。
テーブルに現在 300,000 を超えるエントリーが含まれている場合、Red Hat build of Keycloak は、自動スキーマ移行中にデフォルトでインデックスの作成をスキップし、代わりに移行中にコンソールに SQL ステートメントを記録します。この場合、Red Hat build of Keycloak の起動後に、DB でステートメントを手動で実行する必要があります。
また、プロバイダーを検索するときにクエリーをより効率的に実行できるように、kc.org および hideOnLoginPage 設定属性がアイデンティティープロバイダー自体に移行されました。そのため、API クライアントは、IdentityProviderRepresentation の getOrganizationId/setOrganizationId メソッドおよび isHideOnLogin/setHideOnLogin メソッドを使用し、現在非推奨となっている従来の設定属性を使用してこれらのプロパティーを設定しないようにする必要があります。
2.11. その他の変更点 リンクのコピーリンクがクリップボードにコピーされました!
2.11.1. Argon2 パスワードハッシュ リンクのコピーリンクがクリップボードにコピーされました!
Argon2 は現在、非 FIPS 環境での Red Hat build of Keycloak で使用されるデフォルトのパスワードハッシュアルゴリズムです。
Argon2 は 2015 年のパスワードハッシュコンテスト で優勝し、OWASP によって推奨されるハッシュアルゴリズムです。
Red Hat build of Keycloak 24 では、PBKDF2 のデフォルトのハッシュイテレーションが 27.5K から 210K に増加し、パスワードハッシュの生成に必要な CPU 時間が 10 倍以上増加しました。Argon2 を使用すると、以前のリリースの Red Hat build of Keycloak とほぼ同じ CPU 時間で、より優れたセキュリティーを実現できます。1 つの欠点として、Argon2 ではメモリーがより多く必要になりますが、これは GPU 攻撃に耐えるためには必要です。Red Hat build of Keycloak の Argon2 のデフォルトでは、ハッシュ要求ごとに 7MB が必要です。
メモリーと CPU の過剰な使用を防ぐため、デフォルトでは、Argon2 によるハッシュの並列計算において、JVM で利用可能なコア数が上限となっています。Argon2 のメモリー集約型の性質をサポートするために、ヒープの使用率を向上させるために、デフォルトの GC を ParallelGC から G1GC に更新しました。
Argon2 は FIPS 140-2 に準拠していないことに注意してください。したがって、FIPS 環境の場合、デフォルトのアルゴリズムは引き続き PBKDF2 になります。また、FIPS 以外の環境で使用しており、FIPS 環境に移行する予定がある場合は、最初にパスワードポリシーを pbkdf2-sha512 などの FIPS 準拠アルゴリズムに変更することを検討してください。そうしないと、ユーザーは FIPS 環境に切り替えた後にログインできなくなります。
2.11.2. デフォルトの http-pool-max-threads が削減される リンクのコピーリンクがクリップボードにコピーされました!
http-pool-max-threads が設定されていない場合、デフォルトで 50 または 4 x (使用可能なプロセッサー数) のいずれか大きい方に設定されます。以前は、200 または 8 x (使用可能なプロセッサー数) のいずれか大きい方にデフォルト設定されていました。ほとんどの使用シナリオでは、タスクスレッドの数を減らすと、アクティブなスレッド間のコンテキスト切り替えが少なくなるため、パフォーマンスがわずかに向上します。
2.11.3. findGrantedResources および findGrantedOwnerResources クエリーのパフォーマンスが向上する リンクのコピーリンクがクリップボードにコピーされました!
RESOURCE_SERVER_RESOURCE と RESOURCE_SERVER_PERM_TICKET テーブルに 100,000 を超えるエントリーがあり、ユーザーに 1,000 を超えるリソースへのアクセスが許可されている場合、これらのクエリーのパフォーマンスは低下しました。クエリーが簡素化され、requester 列と owner 列の新しいインデックスが導入されました。
新しいインデックスは両方とも RESOURCE_SERVER_PERM_TICKET テーブルに適用されます。テーブルに現在 300,000 を超えるエントリーが含まれている場合、Red Hat build of Keycloak は、自動スキーマ移行中にデフォルトでインデックスの作成をスキップし、代わりに移行中にコンソールに SQL ステートメントを記録します。この場合、Red Hat build of Keycloak の起動後に、DB でステートメントを手動で実行する必要があります。
2.11.4. getExp メソッドが SingleUseObjectKeyModel に追加される リンクのコピーリンクがクリップボードにコピーされました!
AccessToken、IDToken、および JsonWebToken から非推奨のメソッドが削除された結果、有効期限値に関連するメソッド名との一貫性を保つために SingleUseObjectKeyModel も変更されました。
以前の getExpiration メソッドは非推奨となり、2038 年以降のオーバーフローを回避するために、新しく導入された getExp メソッドを使用することを推奨します。
2.11.5. ブルートフォースが有効な場合、同時ログイン要求はデフォルトでブロックされる リンクのコピーリンクがクリップボードにコピーされました!
攻撃者が多数のログイン試行を同時に実行した場合、ブルートフォース攻撃保護の設定で許可されている回数を超えてパスワードを推測できる可能性があります。これは、ブルートフォースプロテクターがユーザーをロックする前に、ブルートフォースチェックが実行されたことが原因です。この競合を防ぐために、ブルートフォースプロテクターは、同じサーバーで別のログインが進行中に発生するすべてのログイン試行を拒否するようになりました。
この機能を無効にしたい場合は、次のコマンドを使用します。
bin/kc.[sh|bat] start --spi-brute-force-protector-default-brute-force-detector-allow-concurrent-requests=true
bin/kc.[sh|bat] start --spi-brute-force-protector-default-brute-force-detector-allow-concurrent-requests=true
2.11.6. ワイルドカード使用時のリダイレクト URI 検証の変更 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティー上の懸念から、渡されたリダイレクト URI に userinfo 部分が含まれている場合、またはその path が親ディレクトリー (/../) にアクセスする場合、リダイレクト URI 検証では正確な文字列マッチング (ワイルドカードは使用しない) が実行されるようになりました。
完全なワイルドカード * は、これらの特性を持つ http (s) URI の開発において有効なリダイレクトとして引き続き使用できます。実稼働環境では、そのタイプの URI に対してワイルドカードを必要としない正確で有効なリダイレクト URI を設定します。
ワイルドカードが有効なリダイレクト URI は実稼働環境では推奨されておらず、OAuth 2.0 仕様ではカバーされていないことに注意してください。
2.11.7. Infinispan マーシャリングの変更 リンクのコピーリンクがクリップボードにコピーされました!
マーシャリングは、Java オブジェクトをバイトに変換し、Red Hat build of Keycloak サーバー間でネットワーク経由で送信するプロセスです。Red Hat build of Keycloak 26 では、マーシャリングライブラリーが JBoss Marshalling から Infinispan Protostream に変更されました。ライブラリーは相互に互換性がないため、セッションデータが失われないようにするにはいくつかの手順が必要です。
JBoss Marshalling と Infinispan Protostream は相互に互換性がないため、誤って使用するとデータが損失する可能性があります。したがって、このバージョンにアップグレードすると、すべてのキャッシュがクリアされます。既存のオンラインユーザーおよびクライアントセッションはすべてクリアされます。オフラインユーザーおよびクライアントセッションは影響を受けません。
2.11.8. ルートから相対パスへの自動リダイレクト リンクのコピーリンクがクリップボードにコピーされました!
http-relative-path プロパティーが指定されている場合、ユーザーは Red Hat build of Keycloak がホストされているパスに自動的にリダイレクトされます。つまり、相対パスが /auth に設定され、ユーザーが localhost:8080/ にアクセスすると、ページは localhost:8080/auth にリダイレクトされます。
http-management-relative-path または http-relative-path プロパティーが指定されている場合、同じ変更が管理インターフェイスに適用されます。この変更により、ユーザーエクスペリエンスが向上します。ユーザーは URL への相対パスを明示的に設定する必要がなくなりました。
2.11.9. URL エンコードに UTF-8 charset を一貫して使用する リンクのコピーリンクがクリップボードにコピーされました!
org.keycloak.common.util.Encode は、file.encoding システムプロパティーに暗黙的に依存するのではなく、URL エンコードに常に UTF-8 charset を使用するようになりました。
2.11.10. LDAP 接続プールの設定 リンクのコピーリンクがクリップボードにコピーされました!
このリリースでは、LDAP 接続プールの設定はシステムプロパティーのみに依存します。主な理由は、LDAP 接続プールの設定が、個々のレルムまたは LDAP プロバイダーインスタンスに固有のものではなく、JVM レベルの設定であるためです。
以前のリリースと比較して、LDAP 接続プールに関連するすべてのレルム設定は無視されます。次のいずれかの設定が LDAP プロバイダーに設定されている以前のバージョンから移行する場合は、代わりにシステムプロパティーを使用することを検討してください。
-
connectionPoolingAuthentication -
connectionPoolingInitSize -
connectionPoolingMaxSize -
connectionPoolingPrefSize -
connectionPoolingTimeout -
connectionPoolingProtocol -
connectionPoolingDebug
詳細は、接続プールの設定 を参照してください。
2.11.11. 再起動後も取り消されたアクセストークンが保持される リンクのコピーリンクがクリップボードにコピーされました!
このリリースでは、埋め込みキャッシュを使用する場合、取り消されたアクセストークンはデータベースに書き込まれ、クラスターが再起動されたときにデフォルトで再ロードされます。
この動作を無効にするには、すべてのプロバイダー設定 で説明されているように、SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens を使用します。
SingleUseObjectProvider の SPI 動作が変更され、取り消されたトークンに対しては put メソッドと contains メソッドのみを使用する必要があります。これはデフォルトで強制され、SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens を使用して無効にできます。
2.11.12. 可用性の高いマルチサイトデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak 26 では、推奨される高可用性マルチサイトアーキテクチャーが大幅に改善されました。主な改善点は次のとおりです。
- Red Hat build of Keycloak デプロイメントでは、両方のサイトで同時にユーザー要求を処理できるようになりました。一度に 1 つのサイトのみでリクエストを処理する以前のロードバランサー設定は、引き続き機能します。
- 障害が発生した場合にサイト間のレプリケーションを再設定するには、サイト間の接続をアクティブにモニタリングする必要があります。ブループリントでは、Alertmanager と AWS Lambda を使用したセットアップを説明します。
- ロードバランサーのブループリントは、AWS Global Accelerator を使用するように更新されました。これにより、クライアントによる DNS キャッシュによって発生するフェイルオーバー時間の延長を回避できます。
- アーキテクチャーの要件としてユーザーセッションが永続化されました。その結果、Red Hat build of Keycloak または Data Grid のアップグレードでもユーザーセッションは保持されます。
- 外部 Data Grid リクエスト処理が改善され、メモリー使用量とリクエストの待ち時間が削減されました。
上記の変更の結果として、既存の Red Hat build of Keycloak デプロイメントに次の変更が必要になります。
-
multi-site機能が有効になっている場合、キャッシュ設定ファイルによって提供されるdistributed-cache定義は無視されるため、ブループリントで概説されているように、cache-remote-*コマンドライン引数または Keycloak CR を介して外部 Data Grid デプロイメントへの接続を設定する必要があります。すべてのremote-store設定をキャッシュ設定ファイルから削除する必要があります。 - 外部 Data Grid の現在のキャッシュ設定を確認し、最新バージョンの Red Hat build of Keycloak ドキュメントに記載されている設定に更新します。以前のバージョンのキャッシュ設定では、サイト間のバックアップレプリケーションが失敗した場合にのみ警告が記録されていましたが、新しい設定では、両方のサイトの状態が同期されたままになります。つまり、2 つのサイト間の転送が失敗すると、呼び出し元にエラーが表示されます。そのため、サイト障害が発生した場合に 2 つのサイトを切断するためのモニタリングをセットアップする必要があります。高可用性ガイド には、これをセットアップするためのブループリントが含まれています。
- 以前のロードバランサー設定は Red Hat build of Keycloak でも引き続き機能しますが、クライアント側の DNS キャッシュによるフェイルオーバー時間の延長を回避するために、既存の Route53 設定をアップグレードすることを検討してください。
-
キャッシュ設定 XML ファイルをリモートストア設定で更新した場合、それらは機能しなくなります。代わりに、
multi-site機能を有効にして、cache-remove-*オプションを使用します。
2.11.13. 必須アクションの改善 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションによって開始された必須アクションの実行からリダイレクトされるときに、必要なアクションプロバイダー名が kc_action パラメーターを介して返されるようになりました。これにより、クライアントに対して実行された必要なアクションの検出が容易になります。実行の結果は、kc_action_status パラメーターによって決定できます。
注意: この機能では Keycloak JS アダプターへの変更が必要でした。そのため、この機能を利用する場合は、アダプターを最新バージョンにアップグレードすることを推奨します。
2.11.14. キーストアとトラストストアのデフォルト形式の変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak は、ファイル拡張子に基づいてキーストアとトラストストアの形式を決定するようになりました。ファイル拡張子が .p12、.pkcs12、または .pfx の場合、形式は PKCS12 になります。ファイル拡張子が .jks、.keystore、または .truststore の場合、形式は JKS になります。ファイル拡張子が .pem、.crt、または .key の場合、形式は PEM になります。
https-key-store-type と https-trust-store-type を明示的に指定することで、自動検出をオーバーライドすることもできます。同じことが管理インターフェイスとその https-management-key-store-type にも当てはまります。FIPS 厳密モードの制限は変更されません。
spi-truststore-file-* オプションとトラストストア関連のオプション https-trust-store-* は非推奨となりました。システムトラストストアの使用を強く推奨します。詳細は、関連する ガイド を参照してください。
2.11.15. common テーマリソースのパスが変更される リンクのコピーリンクがクリップボードにコピーされました!
keycloak テーマの common リソース、具体的にはサードパーティーライブラリーのリソースへのパスの一部が変更されました。それに応じてカスタムテーマを更新してください。
-
node_modules/patternfly/distis nowvendor/patternfly-v3 -
node_modules/@patternfly/patternflyis nowvendor/patternfly-v4 -
node_modules/@patternfly-v5/patternflyis nowvendor/patternfly-v5 -
node_modules/rfc4648/libis nowvendor/rfc4648
さらに、次のリソースが common テーマから削除されました。
-
node_modules/alpinejs -
node_modules/jquery
削除されたリソースを以前にテーマで使用していた場合は、代わりに独自のテーマリソースに追加してください。
2.11.16. BouncyCastle FIPS が更新される リンクのコピーリンクがクリップボードにコピーされました!
当社の FIPS 140-2 インテグレーションは現在、BouncyCastle FIPS ライブラリーのバージョン 2 でテストされ、サポートされています。このバージョンは Java 21 で認定されています。FIPS 140-2 インテグレーションを使用する場合は、BouncyCastle FIPS ライブラリーを最新のドキュメントに記載されているバージョンにアップグレードすることを推奨します。
BouncyCastle FIPS バージョン 2 は、FIPS 140-3 認定を受けています。したがって、Red Hat build of Keycloak は、FIPS 140-3 準拠システムで使用される限り、FIPS 140-3 に準拠できます。これは、FIPS 140-3 に準拠している RHEL 9 ベースのシステムである可能性があります。ただし、RHEL 8 ベースのシステムは FIPS 140-2 のみ認定されていることに注意してください。
第3章 Red Hat build of Keycloak サーバーのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
アダプターをアップグレードする前にサーバーをアップグレードします。
3.1. アップグレードの準備 リンクのコピーリンクがクリップボードにコピーされました!
サーバーをアップグレードする前に、次の手順を実行します。
手順
- Red Hat build of Keycloak をシャットダウンします。
- 設定やテーマなどの古いインストールをバックアップします。
-
XA トランザクションが有効になっている場合は、開いているトランザクションを処理し、
data/transaction-logs/トランザクションディレクトリーを削除します。 お使いのリレーショナルデータベースのドキュメントの説明に従い、データベースをバックアップします。
サーバーをアップグレードすると、データベースは古いサーバーと互換性がなくなります。アップグレードを元に戻す必要がある場合は、まず古いインストールを復元してから、バックアップコピーからデータベースを復元します。
現在のセットアップで persistent-user-sessions 機能が無効になっており、サーバーがアップグレードされた場合、オフラインユーザーセッションを除くすべてのユーザーセッションが失われます。これらのセッションを所有するユーザーは再度ログインする必要があります。Red Hat build of Keycloak サーバーの 26.0.0 より前のリリースでは、persistent-user-sessions 機能がデフォルトで無効になっていることに注意してください。
ブルートフォース検出の失敗したログインと現在進行中の認証フローに関する情報は、Red Hat build of Keycloak がシャットダウンされるとクリアされる内部キャッシュにのみ保存されます。現時点で、認証、パスワードの変更、またはパスワードのリセットを行っているユーザーは、Red Hat build of Keycloak が再び稼働したら、認証フローを再開する必要があります。
3.2. Red Hat build of Keycloak のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
アップグレードの準備が整ったら、サーバーをダウンロードできます。
手順
Red Hat build of Keycloak の Web サイトから rhbk-26.0.15.zip をダウンロードして展開します。
このファイルを解凍すると、
rhbk-26.0.15 という名前のディレクトリーが作成されます。- このディレクトリーを希望の場所に移動します。
-
conf/、providers/、themes/を以前のインストールから新規インストールにコピーします。
3.3. データベースの移行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak では、データベーススキーマを自動的に移行することも、手動で移行することもできます。デフォルトでは、新規インストールを初めて起動すると、データベースが自動的に移行されます。
3.3.1. リレーショナルデータベースの自動移行 リンクのコピーリンクがクリップボードにコピーされました!
自動移行を実行するには、目的のデータベースに接続されているサーバーを起動します。新しいサーバーバージョンでデータベーススキーマが変更すると、データベースのレコード数が多すぎない限り、移行が自動的に開始されます。
たとえば、数百万件のレコードを含むテーブルにインデックスを作成すると、時間がかかり、サービスの大きな中断を引き起こす可能性があります。したがって、自動移行には 300000 レコードのしきい値が存在します。レコード数がこのしきい値を超えると、インデックスは作成されません。代わりに、手動で適用できる SQL コマンドを含む警告がサーバーログに表示されます。
しきい値を変更するには、connections-liquibase プロバイダーの値である index-creation-threshold プロパティーを設定します。
kc.[sh|bat] start --spi-connections-liquibase-quarkus-index-creation-threshold=300000
kc.[sh|bat] start --spi-connections-liquibase-quarkus-index-creation-threshold=300000
3.3.2. 手動によるリレーショナルデータベース移行 リンクのコピーリンクがクリップボードにコピーされました!
データベーススキーマを手動でアップグレードするには、デフォルトの connections-jpa プロバイダーの migration-strategy プロパティー値を "manual" に設定します。
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-strategy=manual
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-strategy=manual
この設定でサーバーを起動すると、サーバーはデータベースを移行する必要があるか確認します。必要な変更は bin/keycloak-database-update.sql SQL ファイルに書き込まれます。このファイルを確認してデータベースに対して手動で実行できます。
エクスポートされた SQL ファイルのパスと名前を変更するには、デフォルトの connections-jpa プロバイダーの migration-export プロパティーを設定します。
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-export=<path>/<file.sql>
kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-export=<path>/<file.sql>
このファイルをデータベースに適用する方法の詳細は、使用しているリレーショナルデータベースのドキュメントを参照してください。変更がファイルに書き込まれると、サーバーは終了します。
3.4. テーマの移行 リンクのコピーリンクがクリップボードにコピーされました!
カスタムテーマを作成した場合は、そのテーマを新しいサーバーに移行する必要があります。また、カスタマイズした部分によっては、組み込みテーマへの変更をカスタムテーマに反映することが必要になる場合があります。
手順
-
カスタムテーマを古いサーバーの
themesディレクトリーから新しいサーバーのthemesディレクトリーにコピーします。 次のセクションを使用して、テンプレート、メッセージ、およびスタイルを移行します。
- 移行の変更 に挙げられている更新されたテンプレートのいずれかをカスタマイズした場合は、ベーステーマのテンプレートと比較して、適用する必要のある変更があるかどうかを確認します。
- メッセージをカスタマイズした場合は、鍵または値を変更したり、追加のメッセージを追加したりする必要がある場合があります。
- スタイルをカスタマイズ済みで、Red Hat build of Keycloak のテーマを拡張する場合は、スタイルの変更を確認します。ベーステーマを拡張する場合は、この手順をスキップできます。
3.4.1. テンプレートの移行 リンクのコピーリンクがクリップボードにコピーされました!
テンプレートをカスタマイズした場合は、新しいバージョンを確認して、カスタマイズしたお使いのテンプレートを更新するかどうかを決定します。軽微な変更を加えた場合は、更新されたテンプレートとカスタマイズしたテンプレートを比較することを推奨します。ただし、多くの変更を加えた場合は、新しいテンプレートとお使いのカスタマイズしたテンプレートを比較することを検討してください。この比較により、どのような変更を加える必要があるかがわかります。
差分ツールを使用してテンプレートを比較できます。次のスクリーンショットは、Login テーマの info.ftl テンプレートとカスタムテーマの例を比較したものです。
更新バージョンの Login テーマテンプレートとカスタムの Login テーマテンプレートの比較
この比較から、1 つ目の変更点 (Hello world!!) はカスタマイズであり、2 つ目の変更点 (if pageRedirectUri) はベーステーマの変更点であることがわかります。2 つ目の変更点をカスタムテンプレートにコピーすると、カスタマイズしたテンプレートが正常に更新されます。
別の方法として、次のスクリーンショットは、古いインストールの info.ftl テンプレートと新しいインストールの更新された info.ftl テンプレートを比較したものです。
古いインストールの Login テーマテンプレートと更新された Login テーマテンプレート
この比較から、ベーステンプレートの変更点がわかります。これをもとに、変更したテンプレートに同じ変更を手動で加えることができます。この方法はより複雑であるため、最初の方法が実行不可能な場合にのみ使用してください。
3.4.2. メッセージの移行 リンクのコピーリンクがクリップボードにコピーされました!
別の言語のサポートを追加した場合は、上記の変更点をすべて適用する必要があります。別の言語のサポートを追加していない場合は、何も変更する必要がない可能性があります。テーマ内の影響を受けるメッセージを変更した場合にのみ、変更を加える必要があります。
手順
- 追加された値は、ベーステーマのメッセージ値を確認し、メッセージをカスタマイズする必要があるかどうかを判断します。
- 名前が変更された鍵の場合は、カスタムテーマの鍵の名前を変更します。
- 変更された値は、ベーステーマの値を確認して、カスタムテーマに変更を加えなければならないかどうかを判断します。
3.4.3. スタイルの移行 リンクのコピーリンクがクリップボードにコピーされました!
組み込みテーマのスタイルに加えた変更を反映するには、カスタムスタイルを更新する必要がある場合があります。差分ツールを使用して、古いサーバーインストールと新しいサーバーインストール間のスタイルシートの変更を比較することを検討してください。
以下に例を示します。
diff RHSSO_HOME_OLD/themes/keycloak/login/resources/css/login.css \ RHSSO_HOME_NEW/themes/keycloak/login/resources/css/login.css
$ diff RHSSO_HOME_OLD/themes/keycloak/login/resources/css/login.css \
RHSSO_HOME_NEW/themes/keycloak/login/resources/css/login.css
変更を確認し、それらがカスタムスタイルに影響するかどうかを判断します。
第4章 Red Hat build of Keycloak アダプターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak サーバーをアップグレードした後、アダプターをアップグレードします。アダプターと Red Hat build of Keycloak のバージョンは分離され、異なるスケジュールでリリースされるようになりました。したがって、次のルールを使用してアップグレードするアダプターを決定します。
- 以前のバージョンのアダプターは、新しいバージョンの Red Hat build of Keycloak サーバーで動作する可能性があります。
- 以前のバージョンの Red Hat build of Keycloak サーバーは、新しいバージョンのアダプターで動作しない可能性があります。
各アダプターのアップグレードセクションでは、サポート対象のアダプターバージョンの詳細について説明しています。
4.1. JBoss EAP SAML アダプターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak 26.0 以降、JBoss EAP SAML アダプターは Red Hat build of Keycloak とともにリリースされなくなりました。バージョン 6.x または 7.x のアダプターを使用してアプリケーションをデプロイした場合、Red Hat build of Keycloak ではサポートされません。これらのバージョンのアダプターは、Red Hat Single Sign-On 7.6 と組み合わせて使用する場合にのみサポートされます。
完全にサポートされている SAML 用のアダプターは、Keycloak SAML Adapter 機能パックまたは JBoss EAP 8.0 の RPM です。
Web アプリケーションにコピーされた JBoss EAP SAML アダプターをアップグレードするには、次の手順を実行します。
手順
-
EAP_HOME/modules/system/add-ons/keycloak/ディレクトリーを削除して、以前のアダプターモジュールを削除します。 - 新しいバージョンのアダプターをインストールします。詳細は、RPM インストール方法を使用した JBoss EAP のインストール を参照してください。
4.2. JBoss EAP OpenID Connect アダプターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak 26.0 以降では、JBoss EAP OpenID connect (OIDC) アダプターは Red Hat build of Keycloak とともにリリースされなくなりました。このアダプターのライフサイクルは終了し、Red Hat Single Sign-On 7.6 と組み合わせて使用する場合に限りサポートされます。OIDC でサポートされるアダプターは、JBoss EAP 8.0 によって提供されます。
Web アプリケーションにコピーされた JBoss EAP OIDC アダプターをアップグレードするには、次の手順を実行します。
手順
-
EAP_HOME/modules/system/add-ons/keycloak/ディレクトリーを削除して、以前のアダプターモジュールを削除します。 - JBoss EAP 8.0 が提供する OIDC クライアントをインストールします。詳細は、OIDC によるアプリケーションの保護 を参照してください。
4.3. JavaScript アダプターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak のこのリリースでは、このアダプターのサポート対象バージョンは 26.1.1 です。
Web アプリケーションにコピーされた JavaScript アダプターをアップグレードするには、以下の手順を実行します。
手順
- 以前のバージョンの JavaScript アダプターを削除します。
次の NPM コマンドを使用して、このアダプターの 26.2.0 バージョンをインストールします。
npm config set @redhat:registry https://npm.registry.redhat.com install: npm install @redhat/keycloak-js@latest
npm config set @redhat:registry https://npm.registry.redhat.com install: npm install @redhat/keycloak-js@latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. Node.js アダプターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak のこのリリースでは、このアダプターのサポート対象バージョンは 26.1.1 です。
Web アプリケーションにコピーされた Node.js アダプターをアップグレードするには、以下の手順を実行します。
手順
- 以前のバージョンの Node.js アダプターを削除します。
次の NPM コマンドを使用して、Node.js アダプターの 26.1.1 バージョンをインストールします。
npm config set @redhat:registry https://npm.registry.redhat.com npm install @redhat/keycloak-connect@latest
npm config set @redhat:registry https://npm.registry.redhat.com npm install @redhat/keycloak-connect@latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
アプリケーションの
package.jsonで keycloak-connect の依存関係を変更します。
第5章 Red Hat build of Keycloak クライアントライブラリーのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
クライアントライブラリーは次のアーティファクトです。
-
Java 管理クライアント - Maven アーティファクト
org.keycloak:keycloak-admin-client -
Java 認証クライアント - Maven アーティファクト
org.keycloak:keycloak-authz-client -
Java ポリシーエンフォーサー - Maven アーティファクト
org.keycloak:keycloak-policy-enforcer
クライアントライブラリーは、サポート対象のすべての Red Hat build of Keycloak サーバーバージョンでサポートされています。クライアントライブラリーがより多くのサーバーバージョンでサポートされているため、更新が容易になり、アプリケーションのクライアントライブラリーを更新するときにサーバーを同時に更新する必要がなくなる場合があります。
クライアントライブラリーは、Red Hat build of Keycloak サーバーの古いリリースでも動作する可能性がありますが、保証されておらず、公式にはサポートされていません。
どのエンドポイントとパラメーターが Red Hat build of Keycloak サーバーバージョンでサポートされているかを確認するには、Java admin-client などのクライアントライブラリーの javadoc を参照する必要がある場合があります。