16.18. 認証セッションの制限
認証セッション は認証の状態を追跡します。以下のテキストは、ソースフローに関係なく適用されます。
このセクションでは、認証セッションに Data Grid プロバイダーを使用するデプロイメントを説明します。
認証セッションは、RootAuthenticationSessionEntity として内部に保存されます。各 RootAuthenticationSessionEntity は、AuthenticationSessionEntity オブジェクトのコレクションとして RootAuthenticationSessionEntity 内に保存された複数の認証サブセッションを含めることができます。Red Hat build of Keycloak は、認証セッションを専用の Data Grid キャッシュに保存します。RootAuthenticationSessionEntity ごとの AuthenticationSessionEntity の数は、各キャッシュエントリーのサイズに影響します。認証セッションキャッシュの合計メモリーフットプリントは、保存された RootAuthenticationSessionEntity の数と各 RootAuthenticationSessionEntity 内の AuthenticationSessionEntity の数によって決まります。
維持される RootAuthenticationSessionEntity オブジェクトの数は、ブラウザーから未完了のログインフローの数に対応します。RootAuthenticationSessionEntity 数のコントロールを保持するには、高度なファイアウォール制御を使用して Ingress ネットワークトラフィックを制限することを推奨します。
AuthenticationSessionEntity が多数含まれる、アクティブな RootAuthenticationSessionEntity が多いデプロイメントでは、メモリー使用量が高くなる場合があります。ロードバランサーがセッションのスティッキネスをサポートしていないか、それ用に設定されていない場合には、クラスターのネットワーク上の負荷が増大する可能性があります。この負荷の理由は、適切な認証セッションを所有していないノードに到達する各要求は、所有者ノードの認証セッションレコードを取得および更新する必要があるためです。これには、取得と保存の両方に個別のネットワーク送信が含まれます。
RootAuthenticationSessionEntity ごとの AuthenticationSessionEntity の最大数は、プロパティー authSessionsLimit を指定して、authenticationSessions SPI で設定できます。デフォルト値は、RootAuthenticationSessionEntity ごとに 300 AuthenticationSessionEntity に設定されています。この制限に達すると、新しい認証セッション要求後に、最も古い認証サブセッションが削除されます。
次の例は、RootAuthenticationSessionEntity ごとのアクティブな AuthenticationSessionEntity の数を 100 に制限する方法を示しています。
bin/kc.[sh|bat] start --spi-authentication-sessions-infinispan-auth-sessions-limit=100
bin/kc.[sh|bat] start --spi-authentication-sessions-infinispan-auth-sessions-limit=100