10.2. キャッシュを設定する


Red Hat build of Keycloak は、conf/cache-ispn.xml にある通常の {infinispan_configuring_docs}[Infinispan configuration file] を提供します。このファイルには、キャッシュコンテナーと JGroups トランスポートに使用されるデフォルト設定が含まれています。

次の表は、Red Hat build of Keycloak が使用する特定のキャッシュの概要を示しています。

Expand
キャッシュ名キャッシュタイプ説明

realms

Local

永続化されたレルムデータをキャッシュします

users

Local

永続化されたユーザーデータをキャッシュします

authorization

Local

永続化された認可データをキャッシュします

keys

Local

外部公開鍵をキャッシュします

crl

Local

X.509 オーセンティケーター CRL のキャッシュ

work

Replicated (レプリケート)

無効化メッセージをノード間で伝播します

authenticationSessions

Distributed (分散)

認証プロセス中に作成/破棄された、または期限切れになった認証セッションをキャッシュします。

sessions

Distributed (分散)

永続的なユーザーセッションデータをキャッシュする

clientSessions

Distributed (分散)

永続的なクライアントセッションデータをキャッシュする

offlineSessions

Distributed (分散)

永続的なオフラインユーザーセッションデータをキャッシュする

offlineClientSessions

Distributed (分散)

永続的なオフラインクライアントセッションデータをキャッシュする

loginFailures

Distributed (分散)

失敗したログイン (不正の検知) を追跡します

actionTokens

Distributed (分散)

アクショントークンをキャッシュします

10.2.1. キャッシュタイプとデフォルト

ローカルキャッシュ

Red Hat build of Keycloak は、データベースへの不必要なラウンドトリップを回避するために、永続データをローカルにキャッシュします。

次のデータは、ローカルキャッシュを使用して、クラスター内の各ノードのローカルに保持されます。

  • レルム と、クライアント、ロール、グループなどの関連データ。
  • ユーザー と、付与されたロールやグループメンバーシップなどの関連データ。
  • 認可 と、リソース、権限、ポリシーなどの関連データ。
  • keys

レルム、ユーザー、認可のローカルキャッシュは、デフォルトで最大 10,000 エントリーを保持するように設定されています。デフォルトで、ローカルキーキャッシュは最大 1,000 エントリーを保持でき、1 時間ごとに期限切れになります。したがって、外部クライアントまたはアイデンティティープロバイダーからキーを定期的にダウンロードする必要があります。

最適な実行時間を実現し、データベースへの追加のラウンドトリップを回避するには、各キャッシュの設定で、エントリーの最大数がデータベースのサイズと一致していることを確認する必要があります。キャッシュできるエントリーが増えると、サーバーがデータベースからデータを取得しなければならない回数が少なくなります。メモリーの使用率とパフォーマンスの間で何が犠牲になるかを評価する必要があります。

ローカルキャッシュの無効化

ローカルキャッシュによりパフォーマンスは向上しますが、マルチノードセットアップでは課題が発生します。

1 つの Red Hat build of Keycloak ノードが共有データベース内のデータを更新すると、他のすべてのノードはそれを認識する必要があるため、キャッシュからそのデータを無効にします。

work キャッシュはレプリケートされたキャッシュであり、これらの無効化メッセージの送信に使用されます。このキャッシュのエントリー/メッセージは有効期限が非常に短いため、このキャッシュのサイズが時間の経過とともに増加することを想定する必要はありません。

認証セッション

ユーザーが認証を試みるたびに、認証セッションが作成されます。これらは、認証プロセスが完了するか、有効期限に達すると自動的に破棄されます。

authenticationSessions 分散キャッシュは、認証プロセス中に、認証セッションとそれに関連する他のデータを保存するために使用されます。

分散可能キャッシュに依存すると、クラスター内のどのノードでも認証セッションを利用できるため、ユーザーは認証状態を失うことなく任意のノードにリダイレクトできます。ただし、実稼働環境に対応したデプロイメントでは、常にセッションアフィニティーを考慮し、セッションが最初に作成されたノードにユーザーをリダイレクトすることを優先する必要があります。これにより、ノード間の不要な状態遷移が回避され、CPU、メモリー、ネットワークの使用率が向上します。

ユーザーセッション

ユーザーが認証されると、ユーザーセッションが作成されます。ユーザーセッションはアクティブユーザーとその状態を追跡するため、認証情報を再度要求されることなく、あらゆるアプリケーションに対してシームレスに認証できるようになります。アプリケーションごとに、ユーザーはクライアントセッションで認証されるため、サーバーはユーザーが認証されているアプリケーションとその状態をアプリケーションごとに追跡できます。

ユーザーセッションとクライアントセッションは、ユーザーがログアウトを実行するとき、クライアントがトークンの取り消しを実行するとき、または有効期限に達したときに自動的に破棄されます。

セッションデータはデフォルトでデータベースに保存され、オンデマンドで次のキャッシュにロードされます。

  • sessions
  • clientSessions

分散可能キャッシュに依存することで、キャッシュされたユーザーおよびクライアントセッションはクラスター内の任意のノードで利用できるようになり、データベースからセッションデータをロードすることなく、ユーザーを任意のノードにリダイレクトできるようになります。ただし、実稼働環境に対応したデプロイメントでは、常にセッションアフィニティーを考慮し、セッションが最初に作成されたノードにユーザーをリダイレクトすることを優先する必要があります。これにより、ノード間の不要な状態遷移が回避され、CPU、メモリー、ネットワークの使用率が向上します。

ユーザーセッションとクライアントセッションのこれらのメモリー内キャッシュは、デフォルトではノードあたり 10000 エントリーに制限されているため、大規模なインストールでは Red Hat build of Keycloak の全体的なメモリー使用量が削減されます。内部キャッシュは、キャッシュエントリーごとに 1 人の所有者のみで実行されます。

オフラインユーザーセッション

サーバーは、OpenID Connect プロバイダーとしてユーザーを認証し、オフライントークンを発行できます。認証が成功した後にオフライントークンを発行すると、サーバーはオフラインユーザーセッションとオフラインクライアントセッションを作成します。

次のキャッシュは、オフラインセッションを保存するために使用されます。

  • offlineSessions
  • offlineClientSessions

ユーザーセッションキャッシュおよびクライアントセッションキャッシュと同様に、オフラインのユーザーセッションキャッシュおよびクライアントセッションキャッシュは、デフォルトでノードあたり 10000 エントリーに制限されます。メモリーから退避されたアイテムは、必要に応じてデータベースからオンデマンドでロードされます。

パスワードのブルートフォース検出

loginFailures 分散キャッシュは、失敗したログイン試行に関するデータを追跡するために使用されます。このキャッシュは、マルチノード Red Hat build of Keycloak セットアップでブルートフォース保護機能が動作するために必要です。

アクショントークン

アクショントークンは、たとえばパスワードを忘れた場合のフローで送信されるメールなど、アクションを非同期で確認する必要がある場合に使用されます。actionTokens 分散キャッシュは、アクショントークンに関するメタデータを追跡するために使用されます。

ヒント

--log-level=info,org.keycloak.connections.infinispan.DefaultInfinispanConnectionProviderFactory:debug を設定すると、適用された Infinispan 設定をログで確認できます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る