アップグレードガイド


Red Hat build of Keycloak 26.2

Red Hat Customer Content Services

概要

本書は、Red Hat build of Keycloak を 26.0.x から 26.2.5 にアップグレードするガイドです。

第1章 Red Hat build of Keycloak のアップグレード

このガイドでは、Red Hat build of Keycloak をバージョン 26.0.x からバージョン 26.2.5 にアップグレードする方法を説明します。このガイドの手順は、次の順序で使用してください。

  1. Red Hat build of Keycloak の以前のバージョンからのリリース固有の変更を確認します。
  2. Red Hat build of Keycloak サーバーをアップグレードします。
  3. Red Hat build of Keycloak アダプターをアップグレードします。
  4. Red Hat build of Keycloak 管理クライアントをアップグレードします。

以前のバージョンの Red Hat build of Keycloak (バージョン 22.x や 24.x など)からアップグレードする場合は、バージョンと 26.2 間で公開されている各アップグレードガイドのすべての変更を確認してください。以下のアップグレードガイドを参照してください。

その後、本ガイドで説明されているアップグレード手順を実行できます。

Red Hat Single Sign-On 7.6 のお客様の場合は、このガイドの代わりに 移行ガイド を使用してください。

第2章 リリース固有の変更

2.1. 互換性を失わせる変更点

重大な変更は、既存のユーザーの設定の変更を必要とするものとして識別されます。

2.1.1. X-Forwarded-Host ヘッダーによるポートの動作の変更

X-Forwarded-Host ヘッダーにはオプションでポートも含めることができます。以前のバージョンでは、ポートがヘッダーから省略されると、Red Hat build of Keycloak は実際の要求ポートにフォールバックしていました。たとえば、Red Hat build of Keycloak がポート 8080 でリッスンしていて、リクエストに X-Forwarded-Host: example.com ヘッダーが含まれていた場合、解決された URL は http://example.com:8080 になります。

これが変更され、ポートが省略されると、解決された URL から削除されます。前の例から解決された URL は http://example.com になります。

これを軽減するには、リバースプロキシーの X-Forwarded-Host ヘッダーにポートを含めるか、X-Forwarded-Port ヘッダーに必要なポートを設定するように指定します。

2.1.2. Oracle JDBC ドライバーのインストールに関する変更

ディストリビューションに明示的に追加する必要がある Oracle JDBC ドライバーに必要な JAR が変更されました。ojdbc11 JAR を提供する代わりに、Oracle データベースドライバーのインストール に記載されているように、ojdbc17 JAR を使用します。

2.1.3. H2 認証情報

今回のバージョンでは、デフォルトの H2 ベースの dev-file データベースによって認証情報が変更されました。この dev のみデータベースを使用するインスタンスからの移行はサポートされていませんが、データベースのユーザー名とパスワードに以前のデフォルトを明示的に指定すると、既存の H2 データベースを引き続き使用できる場合があります。たとえば、keycloak.conf で以下を指定します。

db-username=sa

db-password=password

2.1.4. 最新の OIDC 仕様に合わせた JWT クライアント認証

OpenID Connect core specification の最新のドラフトバージョンでは、クライアント認証方法 private_key_jwt および client_secret_jwt の JWT クライアントアサーションにおけるオーディエンス検証のルールが変更されました。

以前は、JWT クライアントアサーションの aud クレームは The Audience SHOULD be the URL of the Authorization Server’s Token Endpoint と緩く定義されていましたが、他の URL の使用が排除されていませんでした。

改訂された OIDC コア仕様では、より厳格なオーディエンスチェックが使用されます (The Audience value MUST be the OP’s Issuer Identifier passed as a string, and not a single-element array.)。

private_key_jwtclient_secret_jwt の両方の JWT クライアント認証オーセンティケーターを適応させて、デフォルトでトークン内の対象ユーザー 1 つだけ許可されるようにしました。現在、オーディエンスは、クライアント JWT 認証で使用される発行者、トークンエンドポイント、イントロスペクションエンドポイント、またはその他の OAuth/OIDC エンドポイントにすることができます。ただし、現在許可されているオーディエンスは 1 つだけなので、他の無関係なオーディエンス値を使用できません。つまり、JWT トークンは実際には Red Hat build of Keycloak によるクライアント認証でのみ有効になります。

この厳格なオーディエンスチェックは、OIDC ログインプロトコル SPI の新しいオプションを使用して、以前のより緩いチェックに戻すことができます。サーバーが以下のオプションで起動された場合、引き続き JWT で複数のオーディエンスを使用することができます。

--spi-login-protocol-openid-connect-allow-multiple-audiences-for-jwt-client-authentication=true

このオプションは今後削除される可能性があることに注意してください。おそらく、Red Hat build of Keycloak 27 で削除されます。そのため、このオプションを使用する代わりに、単一のオーディエンスを使用するようにクライアントを更新することを強く推奨します。また、クライアント認証のために JWT を送信するときは、今後のバージョンの OIDC 仕様と互換性があるため、クライアントがオーディエンスに発行者 URL を使用することを推奨します。

2.1.5. 削除された機能と非推奨となった機能

このリリースでは、特定の機能が削除され、今後のリリースで削除されるようにその他の機能は非推奨としてマークされています。これらの変更の詳細は、リリースノート を参照してください。

2.2. 新しくサポート機能に関する変更

以下の変更は、既存の機能に新たなサポートを提供する主要な改善点です。

2.2.1. 標準トークン交換

このリリースでは、Red Hat build of Keycloak は 標準トークン交換 (機能 token-exchange-standard:v2) のサポートを追加しました。過去の Red Hat build of Keycloak リリースでは、Red Hat build of Keycloak にはプレビュートークン交換機能しかありませんでした。この機能は現在 レガシートークン交換 (機能 token-exchange:v1) と呼ばれています。レガシートークン交換はまだプレビュー段階であり、以前のリリースと同じように機能します。内部間トークン交換 を使用していた場合は、新しい標準トークン交換への移行を検討してください。

レガシートークン交換を引き続き使用する場合、標準のトークン交換機能を無効にする必要はありません。クライアントは、Red Hat build of Keycloak クライアントで標準トークン交換が有効になっている場合にのみ、標準トークン交換を使用します。ただし、標準のトークン交換への移行が推奨されます。これは公式にサポートされている方法であり、機能拡張の優先事項です。

新しい標準トークン交換への移行を計画する際には、次の注意事項を考慮してください。

  • 新しい標準トークン交換を表す機能 token-exchange-standard は、デフォルトで有効になっています。リクエストが新しい標準トークン交換によって確実に処理されるように、レガシートークン交換を表す トークン交換 機能を無効にすることを推奨します。
  • 標準トークン交換機能とレガシートークン交換機能の両方を有効にできます。これは、標準のユースケース (internal-internal) と、レガシートークン交換によってのみ実装されるその他のトークン交換ユースケースにも対応する必要がある場合に役立ちます。たとえば、外部から内部へのトークン交換 は、レガシートークン交換によってのみ実装されます。この場合、Red Hat build of Keycloak は標準的な内部間リクエストを標準トークン交換によって優先的に処理し、その他のリクエストはレガシートークン交換によって処理します。標準トークン交換またはレガシートークン交換の選択は、特定のリクエストのパラメーターに基づいて決定されます。たとえば、requested_issuerrequested_subject などの標準以外のパラメーターを含むリクエストはレガシーとみなされます。

    従来のトークン交換機能が必要な場合は、バージョン 2 (FGAP:v 2)がトークン交換パーミッションをサポートしていないため、粒度の細かい管理パーミッションバージョン 1 enabled (FGAP:v 1)も必要です。これは意図的なものであり、トークン交換は概念的には実際には "admin" 権限ではないため、トークン交換権限は FGAP:v2 に追加されませんでした。

  • 標準トークン交換では、クライアントでスイッチを有効にする必要があります。トークン交換を有効にする方法 を参照してください。

2 種類のトークン交換の動作における次の追加の変更を考慮してください。

  • Fine-grained admin permissions は、標準トークン交換で必要なくなり、サポートされなくなりました。
  • スコープとオーディエンスの動作に関して、最も注目すべき変更点は、適用されるクライアントスコープが audience パラメーターで指定された "target" クライアントではなく、トークン交換リクエストをトリガーするクライアントをベースにしている点です。仕様に記載されているように、audience パラメーターの複数の値がサポートされています。トークン交換を有効にする方法 を参照してください。
  • パブリッククライアントはトークン交換リクエストを送信できなくなりました。レガシートークン交換では、パブリッククライアントが自分自身とトークンを交換して、元のトークンをダウンスコープできました。このユースケースは、代わりにリフレッシュトークン付与を使用することで対応できます。リフレッシュトークン付与では、OAuth2 仕様 に記載されているように、scope パラメーターを使用して、更新されたアクセストークンのスコープをダウンスコープできます。
  • このリリースでは、SAML アサーションのアクセストークンの交換はサポートされていません。つまり、requested_token_type=urn:ietf:params:oauth:token-type:saml2 の使用はサポートされていません。
  • アクセストークンをリフレッシュトークンと交換できるのは トークン交換を有効にする方法 で説明されているように、クライアント側で明示的に有効になっている場合のみです。

現在、オフラインセッションから発行されたサブジェクトトークンを使用して、オフライントークンのリクエストやリフレッシュトークンの交換を行うことはサポートされていません。推奨される方法は、可能な限り更新トークンではなく、アクセストークンを交換することです。

2.2.2. Fine-grained admin permissions

Red Hat build of Keycloak は、Fine-grained admin permissions V2 を導入することで、管理者権限に対する認可モデルをさらに柔軟で使いやすく改善しています。

  • FGAP:V2 機能はデフォルトで有効になっています。
  • FGAP:V1 機能はまだプレビュー段階であり、--features=admin-fine-grained-authz:v1 を使用して有効にできます。ただし、V1 は今後のリリースで廃止され、削除される可能性があります。
2.2.2.1. V1 から V2 への移行

権限モデルの構造そのものを見直ししたため、V1 から V2 への自動移行は利用できません。移行を簡素化するには、以下を実行します。

  • 新しい admin-permissions クライアントが導入されました。このクライアントは、レルムの機能を有効にすると作成されます。クライアントは FGAP:V2 の認可モデルを保持します。
  • 既存の FGAP:V1 承認モデルは、realm-management クライアント内では変更されません。
  • 管理者は、新しいモデルを使用して、権限とポリシーを再作成する 必要があります。この新しモデルは、管理コンソールの更新された Permissions セクションで設定可能です。
2.2.2.2. FGAP:V1 と FGAP:V2 の主な違い
  • レルムレベルの有効化:

    • FGAP:V2 は、レルム設定 の新しい 管理者権限 スイッチを使用してレルムに対して有効にできます。
  • 管理の一元化:

    • リソース固有の Permissions タブ (ユーザー、グループ、クライアント、ロール) が削除されました。
    • 新しい Permissions セクションでは、管理コンソールの 1 カ所からすべての管理権限を一元管理できます。
  • 明示的な操作スコープ:

    • 権限間の推移的な依存関係が削除されました。
    • 管理者は、必要な権限をそれぞれ明示的に割り当てる必要があります。
    • 例: リソースの表示と管理の両方を行うには、権限の viewmanage スコープの両方を個別に割り当てる必要があります。
  • 権限モデルの変更:

    • user-impersonated 権限が 削除 されました。
  • クライアント設定権限が 削除 されました。V2 で明示的な操作スコープが導入されたことにより、manage と configure の区別が曖昧になりました。グループのメンバーを管理する権限では、レルム管理者がグループからメンバーの割り当てを解除できません。この制限が追加されたのは、V1 ではグループのメンバーが通常のレルムユーザーになることができ、権限がなくても、レルムでユーザーを作成することができていたためです。今後のリリースでは、グループからメンバーを削除できる追加のスコープが提供される予定です。
  • 柔軟なリソーススコープ設定:

    • 権限が 単一のリソース (クライアント、グループ、およびロール) または すべてのリソース (ユーザー) に付与されていた V1 とは異なり、V2 では柔軟性が向上しています。
    • 管理者は、以下のパーミッションを定義できるようになりました。

      • 特定のリソース
      • 選択されたリソースのセット
      • 特定のタイプの すべてのリソース
      • これは、クライアント、ユーザー、グループ、ロールなど すべてのリソースタイプ に適用されます。

2.3. その他の変更

以下は、一般的な誤設定を防ぐための内部動作の変更、既知の問題への対応、そして Red Hat build of Keycloak の運用を簡素化するためのその他の変更点です。

2.3.1. ゼロ設定の安全なクラスター通信

複数のノードをクラスター化するために、Red Hat build of Keycloak は分散キャッシュを使用します。このリリース以降、すべての TCP ベースのトランスポートスタックでは、ノード間の通信は TLS で暗号化され、自動生成された一時キーと証明書で保護されます。

TCP ベースのトランスポートスタックを使用していない場合は、簡素化された設定と強化されたセキュリティーのメリットを享受するために、jdbc-ping トランスポートスタックに移行することを推奨します。

以前のリリースで TCP トランスポートスタック通信を保護するために独自のキーストアとトラストストアを指定していた場合は、設定の簡素化を最大限に活かせるように、自動生成される一時キーと証明書に移行することを推奨します。

カスタムトランスポートスタックを使用している場合は、cache-embedded-mtls-enabled オプションを false に設定することで、このデフォルトの動作を無効にできます。

サービスメッシュを使用している場合は、Red Hat build of Keycloak Pod 間の直接 mTLS 通信を許可するように設定します。

詳細は、トランスポートスタックのセキュリティー保護 を参照してください。

2.3.2. LDAP プロバイダーがベース DN のサブ DN に新しいユーザー、グループ、およびロールを保存できるように

新しいユーザー、グループ、またはロールを追加すると、LDAP プロバイダーは常に検索用に設定された同じベース DN にその新規ユーザーなどを保存します。ただし、デプロイメントによっては、管理者が複数のサブ DN からユーザー (またはグループ/ロール) を取得するように、subtree スコープを含む幅広い DN を設定しつつも、LDAP のベース DN に新規ユーザー (またはグループ/ロール) を保存しないことを希望する場合などがあります。その場合は代わりに、サブ DN のいずれかを選択します。

LDAP プロバイダーおよび LDAP グループとロールマッパーの新しい Relative User Creation DN 設定オプションを使用して、新しいユーザー、グループ、またはロールが作成される場所を制御できるようになりました。詳細は、LDAP 管理 を参照してください。

2.3.3. 組み込みの X509 クライアント証明書検索プロバイダーに proxy-trusted-addresses を強制

組み込みの X.509 クライアント証明書検索プロバイダーは proxy-trusted-addresses 設定オプションを反映するようになりました。HTTP ヘッダーを通じて提供される証明書は、プロキシーが信頼されている場合、または proxy-trusted-addresses が設定されていない場合にのみ処理されるようになりました。

2.3.4. トラフィックを制限するために NetworkPolicies を作成する Operator

デフォルトでは、Red Hat build of Keycloak Operator は、Red Hat build of Keycloak の分散キャッシュに使用される内部ポートへのトラフィックを制限するための NetworkPolicy を作成するようになりました。

これにより、セキュアバイデフォルト (secure-by-default) の設定を強化し、新規設定の構成ステップを最小限に抑えます。この変更は既存のデプロイメントとの下位互換性を保つことを目的としているため、アップグレード時に追加の手順は必要ありません。Keycloak CR で NetworkPolicies の作成を無効にすると、以前の動作に戻すことができます。

デプロイメントスクリプトが Red Hat build of Keycloak に明示的な NetworkPolicies を追加する場合は、それらを削除し、アップグレードのフォローアップとして Keycloak CR で提供される新しい機能に移行することを検討してください。

詳細は、Operator の高度な設定 を参照してください。

2.3.5. リセットメールを送信して、認証情報をリセットした後、フェデレーションユーザーに再度ログインを強制する

以前は、認証情報のリセットフロー (forgot password 機能) では、同じ認証セッション (同じブラウザー) が使用された場合、認証情報のリセット後もユーザーはログインしたままでした。フェデレーションユーザープロバイダーの場合、この動作はセキュリティー上の問題になる可能性があります。プロバイダー実装がユーザーが enabled であると検出し、パスワードの変更を正常に実行したにもかかわらず、何らかの理由でユーザーパスワードの検証が失敗するシナリオを考えてみましょう。このシナリオでは、認証情報のリセットフローにより、パスワードの変更が成功した後にユーザーのログインは可能であっても、通常のブラウザーフローを使用するとそのログインは拒否されます。これは一般的なシナリオではありませんが、デフォルトでは使用しないようにしてください。

このため、オーセンティケーター reset-credential-email (Send Reset Email) には、force-login (Force login after reset) という新しい設定オプションが追加されました。値として true (常にログインを強制)、false (同じ認証セッションが使用される場合はユーザーのログイン状態を維持する以前の動作)、および only-federated (フェデレーションユーザーに再度認証を強制し、Red Hat build of Keycloak に保存されているユーザーに対して以前の動作を維持するデフォルト値) を指定できます。

このオプションの変更の詳細は、パスワードを忘れた場合の有効化 を参照してください。

2.3.6. オフラインアクセスでは、最初の交換で offline_scope が要求された場合に関連付けられたオンラインセッションが削除される

Red Hat build of Keycloak のすべてのオフラインセッションは、オンラインセッションから作成されます。Offline_access スコープが要求されると、現在のオンラインセッションを使用して、クライアントに関連付けられたオフラインセッションが作成されます。したがって、これまで完了したすべての offline_access 要求では、オンラインセッションとオフラインセッションの 2 つのセッションが作成されました。この状況は、信頼できない動作につながります。たとえば、scope=offline_access によるログインのみが要求された場合、未使用のオンラインセッションが作成されることがあります。このセッションはほとんどの場合役に立たず、余分なサーバーリソースが消費されてしまいます。

このバージョン以降、セッションの最初の対話として、offline_scope が直接要求された場合、Red Hat build of Keycloak は初期オンラインセッションを削除します。クライアントは、オフラインセッションに関連付けられたコードとトークンの交換後にオフライントークンを取得しますが、以前のオンラインセッションは削除されます。online_scope 要求の前に、同じクライアントまたは別のクライアントによってオンラインセッションが使用されていた場合、オンラインセッションは現在と同様にアクティブなままになります。この状況になると、scope=offline_access のログイン要求が使用され、ユーザーが事前に SSO で認証されていない場合、ブラウザーで SSO セッションが作成されていません。クライアントアプリケーションは、オフライントークンのみを要求するため、この新しい動作は理にかなっていますが、最初の offline_scope トークン要求の後も、オンラインセッションを保持する必要があるシナリオには影響する可能性があります。

2.3.7. client_credentials 付与マッパー用の新しいクライアントスコープ service_account

Red Hat build of Keycloak は、service_account と呼ばれるレルムレベルの新しいクライアントスコープを導入します。このスコープは、プロトコルマッパーを使用して、client_credentials 付与の特定のクレーム (client_idclientHostclientAddress) を追加します。このスコープは、クライアント設定で serviceAccountsEnabled オプションが設定または設定解除されると、クライアントに自動的に割り当てられ、クライアントから割り当て解除されます。

以前は、クライアントがサービスアカウントを有効にするように設定されたときに、3 つのマッパー (クライアント IDクライアントホストクライアント IP アドレス) が専用スコープに直接追加され、削除されることはありませんでした。

トークン内のクレームは実質的に以前と同じであるため、動作はほとんどの Red Hat build of Keycloak デプロイメントで実質的に同じになるはずです。クライアント認証情報の付与を使用しており、上記の 3 つのプロトコルマッパーを手動で削除または更新するツールで Red Hat build of Keycloak 環境を準備している場合、影響を受ける可能性があります。たとえば、管理 CLI スクリプトを使用してクライアントのサービスアカウントを有効にし、組み込みのサービスアカウントプロトコルマッパーを削除する場合、プロトコルマッパーを削除する代わりに、クライアントから service_account クライアントスコープの割り当てを削除するように CLI を調整できます。

2.3.8. JWT クライアント認証はトークンの新しい最大有効期限オプションを定義する

クライアントが 署名済み JWT または クライアントシークレット付きの署名済み JWT タイプを使用して認証するように設定されている場合、Red Hat build of Keycloak はトークンの最大有効期限を強制するようになりました。つまり、トークンの exp (有効期限) 要求はかなり後のタイミングで設定されているにもかかわらず、Red Hat build of Keycloak は最大有効期限より前に発行されたトークンを受け入れません。デフォルト値は、60 秒です。JWT トークンは認証のために送信される直前に発行される必要があることに注意してください。その結果、クライアントがログイン用トークンを送信できる時間は約 1 分間に限られます。ただし、クライアント Credentials タブで Max expiration 設定オプションを使用してこの有効期限を調整できます。詳細は、機密クライアント認証情報 を参照してください。

第3章 Red Hat build of Keycloak サーバーのアップグレード

アダプターをアップグレードする前にサーバーをアップグレードします。

3.1. アップグレードの準備

サーバーをアップグレードする前に、次の手順を実行します。

手順

  1. Red Hat build of Keycloak をシャットダウンします。
  2. 設定やテーマなどの古いインストールをバックアップします。
  3. XA トランザクションが有効になっている場合は、開いているトランザクションを処理し、data/transaction-logs/ トランザクションディレクトリーを削除します。
  4. お使いのリレーショナルデータベースのドキュメントの説明に従い、データベースをバックアップします。

    サーバーをアップグレードすると、データベースは古いサーバーと互換性がなくなります。アップグレードを元に戻す必要がある場合は、まず古いインストールを復元してから、バックアップコピーからデータベースを復元します。

注記

現在のセットアップで 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 のダウンロード

アップグレードの準備が整ったら、サーバーをダウンロードできます。

手順

  1. Red Hat build of Keycloak の Web サイトから rhbk-26.2.5.zip をダウンロードして展開します。

    このファイルを解凍すると、rhbk-26.2.5 という名前のディレクトリーがなければなりません。

  2. このディレクトリーを希望の場所に移動します。
  3. providers/ および themes/ を以前のインストールから新規インストールにコピーします。
  4. cache-ispn.xml 以外のすべてのファイルを conf/ から以前のインストールから新規インストールにコピーします。
  5. cache-ispn.xml を編集するか、カスタムキャッシュ設定ファイルを作成した場合:

    1. 新規インストールに同梱された cache-ispn.xml ファイルに基づいて変更を再適用し、新規インストールに配置します。
    2. より良いドキュメント、追加の検証および機能を提供し、より簡単なアップグレードエクスペリエンスを提供するため、変更の代わりにキャッシュサイズとトランスポートスタックについて、最新の Red Hat build of Keycloak 設定オプションを確認してください。

3.3. データベースの移行

Red Hat build of Keycloak では、データベーススキーマを自動的に移行することも、手動で移行することもできます。デフォルトでは、新規インストールを初めて起動すると、データベースが自動的に移行されます。

注記

データベースを移行する前に、古いバージョンの Red Hat build of Keycloak を実行しているすべての Red Hat build of Keycloak ノードをシャットダウンします。

注記

移行は、デフォルトの H2 ベースの dev-file データベースタイプではサポートされません。

3.3.1. リレーショナルデータベースの自動移行

自動移行を実行するには、目的のデータベースに接続されているサーバーを起動します。新しいサーバーバージョンでデータベーススキーマが変更すると、データベースのレコード数が多すぎない限り、移行が自動的に開始されます。

たとえば、数百万件のレコードを含むテーブルにインデックスを作成すると、時間がかかり、サービスの大きな中断を引き起こす可能性があります。したがって、自動移行には 300000 レコードのしきい値が存在します。レコード数がこのしきい値を超えると、インデックスは作成されません。代わりに、手動で適用できる SQL コマンドを含む警告がサーバーログに表示されます。

しきい値を変更するには、connections-liquibase プロバイダーの値である index-creation-threshold プロパティーを設定します。

kc.[sh|bat] start --spi-connections-liquibase-quarkus-index-creation-threshold=300000
Copy to Clipboard

3.3.2. 手動によるリレーショナルデータベース移行

データベーススキーマを手動でアップグレードするには、デフォルトの connections-jpa プロバイダーの migration-strategy プロパティー値を "manual" に設定します。

kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-strategy=manual
Copy to Clipboard

この設定でサーバーを起動すると、サーバーはデータベースを移行する必要があるか確認します。移行が必要な場合、必要な変更は bin/keycloak-database-update.sql SQL ファイルに書き込まれます。これらのコマンドを確認し、データベースに対して手動で実行できます。

エクスポートされた SQL ファイルのパスと名前を変更するには、デフォルトの connections-jpa プロバイダーの migration-export プロパティーを設定します。

kc.[sh|bat] start --spi-connections-jpa-quarkus-migration-export=<path>/<file.sql>
Copy to Clipboard

このファイルをデータベースに適用する方法の詳細は、使用しているリレーショナルデータベースのドキュメントを参照してください。変更がファイルに書き込まれると、サーバーは終了します。

3.4. テーマの移行

カスタムテーマを作成した場合は、そのテーマを新しいサーバーに移行する必要があります。また、カスタマイズした部分によっては、組み込みテーマへの変更をカスタムテーマに反映することが必要になる場合があります。

手順

  1. カスタムテーマを古いサーバーの themes ディレクトリーから新しいサーバーの themes ディレクトリーにコピーします。
  2. 次のセクションを使用して、テンプレート、メッセージ、およびスタイルを移行します。

    • 移行の変更 に挙げられている更新されたテンプレートのいずれかをカスタマイズした場合は、ベーステーマのテンプレートと比較して、適用する必要のある変更があるかどうかを確認します。
    • メッセージをカスタマイズした場合は、キーまたは値を変更したり、追加のメッセージを追加したりする必要がある場合があります。
    • スタイルをカスタマイズ済みで、Red Hat build of Keycloak のテーマを拡張する場合は、スタイルの変更を確認します。ベーステーマを拡張する場合は、この手順をスキップできます。

3.4.1. テンプレートの移行

テンプレートをカスタマイズした場合は、そのテンプレートの新しいバージョンと比較します。この比較により、カスタマイズしたテンプレートに適用する必要がある変更が示されます。差分ツールを使用してテンプレートを比較できます。次のスクリーンショットは、Login テーマの info.ftl テンプレートとカスタムテーマの例を比較したものです。

更新バージョンの Login テーマテンプレートとカスタムの Login テーマテンプレートの比較

Updated version of a Login theme template versus a custom Login theme template

この比較から、1 つ目の変更点 (Hello world!!) はカスタマイズであり、2 つ目の変更点 (if pageRedirectUri) はベーステーマの変更点であることがわかります。2 つ目の変更点をカスタムテンプレートにコピーすると、カスタマイズしたテンプレートが正常に更新されます。

別の方法として、次のスクリーンショットは、古いインストールの info.ftl テンプレートと新しいインストールの更新された info.ftl テンプレートを比較したものです。

古いインストールの Login テーマテンプレートと更新された Login テーマテンプレート

Login theme template from the old installation versus the updated Login theme template

この比較から、ベーステンプレートの変更点がわかります。これをもとに、変更したテンプレートに同じ変更を手動で加えることができます。この方法はより複雑であるため、最初の方法が実行不可能な場合にのみ使用してください。

3.4.2. メッセージの移行

別の言語のサポートを追加した場合は、上記の変更点をすべて適用する必要があります。別の言語のサポートを追加していない場合は、何も変更する必要がない可能性があります。テーマ内の影響を受けるメッセージを変更した場合にのみ、変更を加える必要があります。

手順

  1. 追加された値は、ベーステーマのメッセージ値を確認し、メッセージをカスタマイズする必要があるかどうかを判断します。
  2. 名前が変更された鍵の場合は、カスタムテーマのキーの名前を変更します。
  3. 変更された値は、ベーステーマの値を確認して、カスタムテーマに変更を加えなければならないかどうかを判断します。

3.4.3. スタイルの移行

組み込みテーマのスタイルに加えた変更を反映するには、カスタムスタイルを更新する必要がある場合があります。差分ツールを使用して、古いサーバーインストールと新しいサーバーインストール間のスタイルシートの変更を比較することを検討してください。

以下に例を示します。

$ diff RHSSO_HOME_OLD/themes/keycloak/login/resources/css/login.css \
RHSSO_HOME_NEW/themes/keycloak/login/resources/css/login.css
Copy to Clipboard

変更を確認し、それらがカスタムスタイルに影響するかどうかを判断します。

第4章 Red Hat build of Keycloak アダプターのアップグレード

Red Hat build of Keycloak サーバーのアップグレード後に、アダプターをアップグレードします。アダプターと Red Hat ビルドの Keycloak のバージョンが分離されるようになりました。つまり、異なるスケジュールでリリースされます。そのため、アップグレードするアダプターを確認するには、以下のルールを使用します。

  • アダプターの以前のバージョンは、新しいバージョンの Red Hat build of Keycloak サーバーで動作する可能性があります。
  • 以前のバージョンの Red Hat build of Keycloak サーバーは、新しいバージョンのアダプターでは動作しない可能性があります。

各アダプターアップグレードセクションでは、サポートされているアダプターバージョンの詳細を記載しています。

4.1. JBoss EAP SAML アダプターのアップグレード

Red Hat build of Keycloak 26.0 の時点で、Red Hat ビルドの Keycloak では JBoss EAP SAML アダプターはリリースされなくなりました。そのアダプターのバージョン 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 アダプターをアップグレードするには、以下の手順を実行します。

手順

  1. EAP_HOME/modules/system/add-ons/keycloak/ ディレクトリーを削除して、以前のアダプターモジュールを削除します。
  2. 新しいバージョンのアダプターをインストールします。詳細は、RPM インストールメソッドを使用した JBoss EAP のインストール を 参照してください。

4.2. JBoss EAP OpenID 接続アダプターのアップグレード

Red Hat build of Keycloak 26.0 の時点で、Red Hat build of Keycloak では JBoss EAP OpenID Connect (OIDC)アダプターはリリースされなくなりました。このアダプターのライフサイクルは終了し、Red Hat Single Sign-On 7.6 と組み合わせて使用することのみサポートされます。OIDC でサポートされるアダプターは、JBoss EAP 8.0 によって提供されます。

Web アプリケーションにコピーされた JBoss EAP OIDC アダプターをアップグレードするには、以下の手順を実行します。

手順

  1. EAP_HOME/modules/system/add-ons/keycloak/ ディレクトリーを削除して、以前のアダプターモジュールを削除します。
  2. JBoss EAP 8.0 が提供する OIDC クライアントをインストールします。詳細は、OIDC を使用したアプリケーションのセキュア 化 を参照してください。

4.3. JavaScript アダプターのアップグレード

以前のバージョンの JavaScript アダプターは 26.0.11 です。Red Hat ビルドの Keycloak の本リリースでは、このアダプターのサポートされるバージョンは 26.2.0 です。

Web アプリケーションにコピーされた JavaScript アダプターをアップグレードするには、以下の手順を実行します。

手順

  1. 以前のバージョンの JavaScript アダプターを削除します。
  2. これらの NPM コマンドを使用して、アダプターの 26.2.0 バージョンをインストールします。

    npm config set @redhat:registry https://npm.registry.redhat.com
    install: npm install @redhat/keycloak-js@latest
    Copy to Clipboard

4.4. Node.js アダプターのアップグレード

以前のバージョンの Node.js アダプターは 26.0.11 です。このリリースの Red Hat build of Keycloak では、サポートされるアダプターのサポートされるバージョンは 26.1.1 です。

Web アプリケーションにコピーされた Node.js アダプターをアップグレードするには、以下の手順を実行します。

手順

  1. 以前のバージョンの Node.js アダプターを削除します。
  2. これらの NPM コマンドを使用して、Node.js アダプターの 26.1.1 バージョンをインストールします。

    npm config set @redhat:registry https://npm.registry.redhat.com
    npm install @redhat/keycloak-connect@latest
    Copy to Clipboard
  3. アプリケーションの package.json で keycloak-connect の依存関係を変更します。

法律上の通知

Copyright © 2025 Red Hat, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions and limitations under the License.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat