2024年10月04日
リリースをダウンロードするには、Keycloak ダウンロードにアクセスしてください。
Keycloak 26 から、組織機能が完全にサポートされました。
今回のリリースから、Keycloak クライアントライブラリの一部は、Keycloak サーバーのリリースサイクルとは独立したリリースサイクルを持つようになります。26.0.0 リリースは、クライアントライブラリが Keycloak サーバーと一緒にリリースされる最後のリリースとなる可能性があります。今後は、クライアントライブラリは Keycloak サーバーとは異なるタイミングでリリースされる可能性があります。
クライアントライブラリは以下のアーティファクトです
Java admin client - Maven アーティファクト org.keycloak:keycloak-admin-client
Java authorization client - Maven アーティファクト org.keycloak:keycloak-authz-client
Java policy enforcer - Maven アーティファクト org.keycloak:keycloak-policy-enforcer
将来的には、さらに多くのライブラリが含まれる可能性があります。
クライアントライブラリは Java 8 でサポートされているため、古いアプリケーションサーバーにデプロイされたクライアントアプリケーションでも使用できます。
今回のリリースから、同じサーバーバージョンと、いくつかの以前のメジャーサーバーバージョンとのクライアントライブラリのテストとサポートを開始します。
サーバーバージョンとクライアントライブラリのサポート対象バージョンに関する詳細については、アップグレードガイドを参照してください。
Keycloak 25 では、persistent-user-sessions
機能が導入されました。この機能が有効になっている場合、以前の動作(オフラインセッションのみが永続化されていた)とは対照的に、すべてのユーザーセッションがデータベースに永続化されます。Keycloak 26 では、この機能がデフォルトで有効になっています。これは、すべてのユーザーセッションがデフォルトでデータベースに永続化されることを意味します。
この動作を以前の状態に戻すには、この機能を無効にすることができます。詳細については、分散キャッシュの設定ガイドの「揮発性ユーザーセッション」セクションを参照してください。
アップグレード方法の詳細については、アップグレードガイドを参照してください。
keycloak
ログインテーマの新しいバージョン (v2
) が登場しました。これにより、ユーザー設定に基づいて自動的にダークテーマに切り替えるサポートなど、ルックアンドフィールが向上しました。
以前のバージョン (v1
) は非推奨となり、将来のリリースで削除される予定です。
すべての新しいレルムでは、keycloak.v2
がデフォルトのログインテーマになります。また、ログインテーマを明示的に設定したことがない既存のレルムも keycloak.v2
に切り替えられます。
Keycloak 26 では、推奨される HA マルチサイトアーキテクチャに大幅な改善が加えられました。最も注目すべき点は次のとおりです。
Keycloak デプロイメントは、両方のサイトで同時にユーザーリクエストを処理できるようになりました。
サイト間の接続のアクティブ監視が、障害発生時のサイト間のレプリケーションを更新するために必要になりました。
ロードバランサーのブループリントは、クライアントによる DNS キャッシュによって引き起こされるフェイルオーバー時間の長期化を回避するために、AWS Global Accelerator を使用するように更新されました。
永続的なユーザーセッションがアーキテクチャの要件になりました。その結果、ユーザーセッションは Keycloak または Infinispan のアップグレード後も保持されます。
移行方法の詳細については、アップグレードガイドを参照してください。
過去には、すべての管理者ユーザーがロックアウトされた場合に Keycloak インスタンスへのアクセスを取り戻すことは、困難で複雑なプロセスでした。これらの課題を認識し、ユーザーエクスペリエンスを大幅に向上させることを目指して、Keycloak は一時的な管理者アカウントをブートストラップし、失われた管理者アクセスを回復するためのいくつかの簡単な方法を提供するようになりました。
一時的な管理者アカウントを作成するために、特定のオプションを指定して start
または start-dev
コマンドを実行できるようになりました。さらに、ユーザーが手間をかけずに管理者アクセスを取り戻すことができる新しい専用コマンドが導入されました。
詳細な手順とこのトピックに関する詳細については、管理者ブートストラップとリカバリガイドを参照してください。
基盤となる Quarkus の OpenTelemetry Tracing のサポートが Keycloak に公開され、可観測性を向上させるためのアプリケーション追跡を取得できるようになりました。パフォーマンスのボトルネックを見つけ、アプリケーション障害の原因を特定し、分散システムを介したリクエストを追跡するのに役立ちます。このサポートはプレビューモードであり、フィードバックをお待ちしております。
詳細については、トレーシングの有効化ガイドを参照してください。
OpenID for Verifiable Credential Issuance (OID4VCI) は Keycloak ではまだ実験的な機能ですが、今回のリリースで大幅に改善されました。Keycloak OAuth SIG で、重要な開発と議論を見つけることができます。Keycloak コミュニティのどなたでも参加を歓迎します。
この機能の開発と議論にご参加いただいた OAuth SIG グループのすべてのメンバーに感謝します。特に、Francis Pouatcha、Pascal Knüppel、Takashi Norimatsu、Ingrid Kamga、Stefan Wiedemann、Thomas Darimont に感謝します。
DPoP (OAuth 2.0 Demonstrating Proof-of-Possession) プレビュー機能が改善されました。DPoP はすべてのグラントタイプでサポートされるようになりました。以前のリリースでは、この機能は authorization_code
グラントタイプでのみサポートされていました。UserInfo エンドポイントでの DPoP トークンタイプもサポートされています。
Pascal Knüppel 氏の貢献に感謝します。
GELF サポートはしばらくの間非推奨となっていましたが、今回のリリースで Keycloak から完全に削除されました。GELF の代替として使用できる、完全にサポートされている他のログハンドラー(Syslog など)が利用可能です。詳細については、ロギングガイドを参照してください。
軽量アクセストークンを Admin REST API で使用できるようになりました。security-admin-console
および admin-cli
クライアントは、デフォルトで軽量アクセストークンを使用するようになり、「常に軽量アクセストークンを使用」と「フルスコープ許可」がこれら 2 つのクライアントで有効になりました。ただし、管理コンソールの動作は事実上同じままです。これら 2 つのクライアントに変更を加えた場合や、他の目的で使用している場合は注意してください。
Keycloak JavaScript アダプターはスタンドアロンライブラリになり、Keycloak サーバーから静的に提供されなくなりました。目標は、ライブラリを Keycloak サーバーから分離し、独立してリファクタリングできるようにすることで、コードを簡素化し、将来のメンテナンスを容易にすることです。さらに、ライブラリはサードパーティの依存関係がなくなり、さまざまな環境でより軽量かつ簡単に使用できるようになりました。
変更点の完全な内訳については、アップグレードガイドを参照してください。
非推奨の hostname v1 機能が削除されました。この機能は Keycloak 25 で非推奨となり、hostname v2 に置き換えられました。この機能をまだ使用している場合は、hostname v2 に移行する必要があります。詳細については、ホスト名 (v2) の設定と最初の移行ガイドを参照してください。
http-relative-path
プロパティが指定されている場合、ユーザーは Keycloak がホストされているパスに自動的にリダイレクトされます。つまり、相対パスが /auth
に設定されていて、ユーザーが localhost:8080/
にアクセスすると、ページは localhost:8080/auth
にリダイレクトされます。
http-management-relative-path
または http-relative-path
プロパティが指定されている場合、管理インターフェースにも同じことが当てはまります。
ユーザーが URL に相対パスを明示的に設定する必要がなくなるため、ユーザーエクスペリエンスが向上します。
今回のリリースでは、組み込みキャッシュを使用する場合、失効したアクセストークンはデータベースに書き込まれ、クラスターが再起動されるとデフォルトでリロードされます。
移行方法の詳細については、アップグレードガイドを参照してください。
クライアント属性に基づく条件がクライアントポリシーに追加されました。条件を使用して、指定されたクライアント属性を持ち、指定された値を持つクライアントを指定できます。クライアントポリシーのドキュメントで説明されているように、この条件を評価する際に AND または OR 条件のいずれかを使用できます。
Yoshiyuki Tabata 氏の貢献に感謝します。
console
、file
、syslog
など、利用可能なすべてのログハンドラーに対してログレベルを指定できます。よりきめ細かいアプローチにより、アプリケーション全体のロギングを制御し、ニーズに合わせて調整できます。
詳細については、ロギングガイドを参照してください。
非推奨の proxy
オプションが削除されました。このオプションは Keycloak 24 で非推奨となり、必要に応じてホスト名オプションと組み合わせて proxy-headers
オプションに置き換えられました。詳細については、リバースプロキシの使用と最初の移行ガイドを参照してください。
proxy-trusted-addresses
の追加proxy-headers
オプションが設定されている場合、proxy-trusted-addresses
を使用して、信頼できるプロキシアドレスの許可リストを指定できます。特定のリクエストのプロキシアドレスが信頼されていない場合、それぞれのプロキシヘッダー値は使用されません。
proxy-protocol-enabled
の追加proxy-protocol-enabled
オプションは、プロキシの背後からリクエストを処理するときに、サーバーが HA PROXY プロトコルを使用するかどうかを制御します。true に設定すると、返されるリモートアドレスは、実際に接続しているクライアントからのアドレスになります。
https-certificates-reload-period
オプションを設定して、https-* オプションで参照されるキーストア、トラストストア、および証明書ファイルのリロード期間を定義できます。リロードを無効にするには -1 を使用します。デフォルトは 1 時間 (1h) です。
--cache-embedded-${CACHE_NAME}-max-count=
を設定して、指定されたキャッシュ内のキャッシュエントリ数の上限を定義できます。
https-trust-store-*
オプションの非推奨の解除コミュニティからのフィードバックに基づいて、信頼できる証明書の粒度を向上させるために、https-trust-store-*
オプションの非推奨を解除することにしました。
java-keystore
キープロバイダーがより多くのアルゴリズムと Vault シークレットをサポートレルムキーを外部 Java キーストアファイルからロードできる java-keystore
キープロバイダーが変更され、すべての Keycloak アルゴリズムを管理できるようになりました。さらに、ストアから実際のキーを取得するために必要なキーストアとキーシークレットは、Vault を使用して設定できます。したがって、Keycloak レルムは、機密データをデータベースに保存せずに、任意のキーを暗号化されたファイルに外部化できます。
この件の詳細については、レルムキーの設定を参照してください。
Keycloak は、クライアントの暗号化キー管理アルゴリズムとして、ECDH-ES、ECDH-ES+A128KW、ECDH-ES+A192KW、または ECDH-ES+A256KW の設定を許可するようになりました。Elliptic Curve Diffie-Hellman Ephemeral Static (ECDH-ES) を使用したキー合意仕様では、JWT に 3 つの新しいヘッダーパラメーター (epk
、apu
、および apv
) が導入されています。現在、Keycloak 実装は必須の epk
のみを管理し、他の 2 つ (オプション) はヘッダーに追加されません。これらのアルゴリズムの詳細については、JSON Web Algorithms (JWA) を参照してください。
また、新しいキープロバイダーである ecdh-generated
がレルムキーを生成するために利用可能になり、Java KeyStore プロバイダーに ECDH アルゴリズムのサポートが追加されました。
Justin Tay 氏の貢献に感謝します。
レルム内に同じソーシャルブローカーの複数のインスタンスを持つことができるようになりました。
ほとんどの場合、レルムは同じソーシャルブローカーの複数のインスタンスを必要としません。ただし、organization
機能の導入により、同じソーシャルブローカーの異なるインスタンスを異なる組織にリンクできる必要があります。
ソーシャルブローカーを作成するときは、他のブローカーと同様に、エイリアス
とオプションで 表示名
を指定する必要があります。
クレデンシャルの更新 (UPDATE_CREDENTIAL
) および削除 (REMOVE_CREDENTIAL
) のための汎用イベントが追加されました。クレデンシャルのタイプは、イベントの credential_type
属性で記述されています。新しいイベントタイプは、Email Event Listener でサポートされています。
次のイベントタイプは非推奨となり、将来のバージョンで削除される予定です: UPDATE_PASSWORD
、UPDATE_PASSWORD_ERROR
、UPDATE_TOTP
、UPDATE_TOTP_ERROR
、REMOVE_TOTP
、REMOVE_TOTP_ERROR
base/login
および keycloak.v2/login
テーマの template.ftl
ファイルで、ログインボックスのフッターをカスタマイズできるようになりました。これは、一般的なリンクを表示したり、ページ末尾にカスタムスクリプトを含めたりするために使用できます。
新しい footer.ftl
テンプレートは、「ログインボックス」の下部にレンダリングされる content
マクロを提供します。
Keycloak CR は、Keycloak Pod のスケジューリングを制御するためのファーストクラスプロパティを公開するようになりました。
詳細については、Operator Advanced Configuration を参照してください。
KeycloakRealmImport CR は、インポート時のプレースホルダー置換用の環境変数を作成するために spec.placeholders
を公開するようになりました。
詳細については、Operator Realm Import を参照してください。
マーシャリングは、Java オブジェクトをバイトに変換して Keycloak サーバー間でネットワーク経由で送信するプロセスです。Keycloak 26 では、マーシャリング形式を JBoss マーシャリングから Infinispan Protostream に変更しました。
警告
|
JBoss マーシャリングと Infinispan Protostream は互換性がなく、誤った使用法はデータ損失につながる可能性があります。その結果、このバージョンへのアップグレード時にすべてのキャッシュがクリアされます。 |
Infinispan Protostream は Protocol Buffers (proto 3) に基づいており、下位/上位互換性があるという利点があります。
OSGi メタデータを使用していた Java アダプターがすべて削除されたため、JAR の OSGi メタデータの生成を停止しました。
グループのスケーラビリティを向上させることを目的として、レルムを削除するときにグループがデータベースから直接削除されるようになりました。その結果、レルムを削除するときに GroupRemovedEvent
などのグループ関連のイベントが発行されなくなりました。
移行方法の詳細については、アップグレードガイドを参照してください。
多くの ID プロバイダーを持つレルムと組織のスケーラビリティに関する改善の一環として、レルム表現は ID プロバイダーのリストを保持しなくなりました。ただし、レルムをエクスポートするときは、レルム表現から引き続き利用できます。
移行方法の詳細については、アップグレードガイドを参照してください。
アプリケーションとサービスのセキュリティ保護ドキュメントは、以前のリリースで変換されたサーバーのインストールと設定ドキュメントと同様の新しい形式に変換されました。ドキュメントは、Keycloak ガイドで入手できるようになりました。
Keycloak は、クッキーの SameSite
フラグをサポートしていない古いブラウザーの回避策として導入された _LEGACY
クッキーを送信しなくなりました。
_LEGACY
クッキーには、安全でないコンテキストからのログインを許可するという別の目的もありました。これは Keycloak の本番環境へのデプロイではまったく推奨されませんが、localhost
外で http
経由で Keycloak にアクセスすることはかなり頻繁に行われます。_LEGACY
クッキーの代替として、Keycloak は安全でないコンテキストが使用されていることを検出すると、secure
フラグを設定せず、SameSite=None
の代わりに SameSite=Lax
を設定するようになりました。
UserRepresentation
のプロパティ origin
は非推奨UserRepresentation
の origin
プロパティは非推奨となり、将来のリリースで削除される予定です。
代わりに、ユーザーがリンクされているプロバイダーを取得するには、federationLink
プロパティを使用することを推奨します。
アップグレードする前に、変更点の完全なリストについては、移行ガイドを参照してください。