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 環境に移行する予定の場合は、パスワードポリシーを outset の 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 を超え、ユーザーに 1k を超えるリソースへのアクセスが付与された場合にパフォーマンスが悪化します。リクエスター
および 所有者
列のクエリーが単純化され、新しいインデックスが導入されました。
新しいインデックスは両方とも 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. ブルートフォースが有効になっている場合、同時ログイン要求はデフォルトでブロックされます。
攻撃者が多くのログイン試行を並行して開始した場合、攻撃者はブルートフォース保護設定を許可するよりもパスワードをより推測できます。これは、ブルートフォースプロテクターがユーザーをロックする前に、総当たりチェックが行われていたためです。この競合を防ぐために、Brute Force Protector は、同じサーバーに別のログイン進行中に発生するすべてのログイン試行を拒否するようになりました。
この機能を無効にする場合は、次のコマンドを使用します。
bin/kc.[sh|bat] start --spi-brute-force-protector-default-brute-force-detector-allow-concurrent-requests=true
2.11.6. ワイルドカード使用時のリダイレクト URI 検証の変更
セキュリティーに関する懸念があるため、リダイレクト URI に userinfo
部分が含まれる場合、またはその パス
が親ディレクトリー(/./)にアクセスする場合に、リダイレクト 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
プロパティーが指定されている場合に、Keycloak の Red Hat ビルドがホストされるパスに自動的にリダイレクトされます。これは、相対パスが /auth
に設定され、ユーザーが localhost:8080/ にアクセスすると、ページは localhost:8080
/ auth
にリダイレクトされます。
http-management-relative-path
または http-relative-path
プロパティーが指定されている場合、同じ変更が管理インターフェイスに適用されます。この変更により、ユーザーエクスペリエンスが向上します。ユーザーは、URL に相対パスを明示的に設定する必要がなくなりました。
2.11.9. URL エンコーディングのための UTF-8 文字セットの一貫した使用
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. 再起動後も取り消されたアクセストークンの永続化
このリリースでは、取り消されたアクセストークンがデータベースに書き込まれるため、埋め込みキャッシュの使用時にクラスターがデフォルトで再起動されるとリロードされます。
この動作を無効にするには、All provider configuration で説明されているように SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens
を使用します。
SingleUseObjectProvider
の SPI 動作が変更され、取り消されたトークンに対してのみ put
メソッドと 含ま
れるメソッドのみを使用する必要があります。これはデフォルトで実施され、SPI オプション spi-single-use-object-infinispan-persist-revoked-tokens
を使用して無効にできます。
2.11.12. 高可用性マルチサイトデプロイメント
Red Hat ビルドの Keycloak 26 では、推奨される高可用性マルチサイトアーキテクチャーに大幅な改善点が導入されました。以下に例を示します。
- Red Hat build of Keycloak デプロイメントは、両方のサイトでユーザーリクエストを同時に処理できるようになりました。以前のロードバランサー設定では、一度に 1 つのサイトでのみ要求の処理は継続されます。
- 障害が発生した場合にサイト間のレプリケーションを再設定するには、サイト間の接続のアクティブな監視が必要になりました。ブループリントは、Alertmanager と AWS Lambda でのセットアップを説明します。
- loadbalancer ブループリントが AWS Global Accelerator を使用するように更新されました。これにより、クライアントによる DNS キャッシュによるフェイルオーバー時間が長くなるのを防ぐことができます。
- 永続ユーザーセッションがアーキテクチャーの要件になりました。そのため、ユーザーセッションは、Keycloak または Data Grid のアップグレードの Red Hat ビルドに保持されます。
- 外部 Data Grid リクエスト処理が改善され、メモリー使用量とリクエストのレイテンシーが削減されました。
上記の変更により、既存の Red Hat build of Keycloak デプロイメントに以下の変更が必要になります。
-
マルチサイト
機能が有効になっている場合、キャッシュ設定ファイルによって提供される分散
キャッシュ定義は無視されるため、ブループリントで説明されているように、cache-remote-*
コマンドライン引数または Keycloak CR を使用して外部 Data Grid デプロイメントへの接続を設定する必要があります。すべてのremote-store
設定は、キャッシュ設定ファイルから削除する必要があります。 - 外部 Data Grid の現在のキャッシュ設定を確認し、Red Hat build of Keycloak ドキュメントの最新バージョンに記載されている設定で更新します。以前のバージョンのキャッシュ設定では、サイト間のバックアップレプリケーションが失敗したときにのみ警告がログに記録されますが、新しい設定により、両方のサイトの状態が同期された状態にします。2 つのサイト間の転送に失敗すると、呼び出し元にエラーが表示されます。そのため、サイトに障害が発生した場合に 2 つのサイトを切断するように監視をセットアップする必要があります。高可用性ガイド に は、この設定方法に関するブループリントが記載されています。
- 以前のロードバランサーの設定は Red Hat build of Keycloak と引き続き機能しますが、クライアント側の DNS キャッシュによるフェイルオーバー時間を回避するために、既存の Route53 設定をアップグレードすることを検討してください。
-
remote-store 設定でキャッシュ設定 XML ファイルを更新した場合、それらは機能しなくなります。代わりに、
マルチサイト
機能を有効にし、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 strict モードの制限は変更されません。
spi-truststore-file-*
オプションとトラストストア関連のオプション https-trust-store-*
は非推奨になりました。システムトラストストアを使用することを強く推奨します。詳細は、関連する ガイド を参照してください。
2.11.15. 共通
テーマリソースのパスが変更されました
keycloak
テーマの 共通
リソースのパス(特にサードパーティーライブラリーのリソース)の一部が変更されました。必ずカスタムテーマを更新してください。
-
node_modules/patternfly/dist
is nowvendor/patternfly-v3
-
node_modules/@patternfly/patternfly
is nowvendor/patternfly-v4
-
node_modules/@patternfly-v5/patternfly
is nowvendor/patternfly-v5
-
node_modules/rfc4648/lib
is nowvendor/rfc4648
さらに、以下のリソースが 共通
テーマから削除されました。
-
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 で認定されています。そのため、Keycloak の Red Hat ビルドは、FIPS 140-3 準拠のシステムで使用されている限り、FIPS 140-3 に準拠します。これは RHEL 9 ベースのシステムであり、それ自体が FIPS 140-3 に準拠している可能性があります。ただし、RHEL 8 ベースのシステムは、FIPS 140-2 に対してのみ認定されていることに注意してください。