Keycloak 26.2.0
サポートされる標準トークン交換
今回のリリースでは、標準トークン交換のサポートを追加しました。トークン交換機能は長い間プレビュー版でしたが、ついに標準トークン交換をサポートできることを嬉しく思います。今のところ、これは トークン交換仕様 に準拠した内部トークンへの内部トークンの交換に限定されています。アイデンティティブローカリングやサブジェクトのなりすましに関連するユースケースはまだカバーしていません。今後のリリースでさらに多くのトークン交換ユースケースをサポートしたいと考えています。
詳細については、標準トークン交換 を参照してください。
以前の Keycloak バージョンで使用されていたレガシートークン交換からのアップグレード方法については、アップグレードガイド を参照してください。
きめ細かい管理者権限のサポート
このリリースでは、きめ細かい管理者権限の新しいバージョンが導入されました。バージョン 2 (V2) は、レルム内の管理アクセスに対する強化された柔軟性と制御を提供します。この機能により、管理者は広範な管理者ロールに依存せずに、ユーザー、グループ、クライアント、およびロールを管理するための権限を定義できます。V2 は、以前のバージョンと同じレベルのレルムリソースへのアクセス制御を提供し、将来のバージョンで機能を拡張する予定です。主なポイントは次のとおりです。
-
集中管理者コンソール管理 - 新しい 権限 セクションが導入され、管理者コンソール内のさまざまな場所に移動することなく、単一の場所から管理できるようになりました。
-
管理性の向上 - 管理者は、レルムリソースの権限モデルを構築する際に、権限をより簡単に検索および評価できます。
-
リソース固有およびグローバル権限 – 権限は、個々のリソース (特定のユーザーやグループなど)、またはリソースタイプ全体 (すべてのユーザーやすべてのグループなど) に対して定義できます。
-
明示的な操作スコープ – 権限は独立しており、操作間の隠れた依存関係がなくなりました。管理者は、各スコープを明示的に割り当てる必要があり、暗黙的な関係の事前知識がなくても、何が付与されているかを簡単に確認できます。
-
レルムごとの有効化 – きめ細かい管理者権限は、レルムごとに有効にすることができ、導入と構成をより細かく制御できます。
詳細については、きめ細かい管理者権限 を参照してください。
移行の詳細については、アップグレードガイド を参照してください。
メトリクスと Grafana ダッシュボードのガイド
役立つメトリクス名のリスト 可観測性ガイドカテゴリ に加えて、Grafana でこれらのメトリクスを表示する方法に関するガイドも含まれるようになりました。ガイド には 2 つのダッシュボードが含まれています。
-
Keycloak トラブルシューティングダッシュボード - サービスレベルインジケーターとトラブルシューティングに関連するメトリクスを表示します。
-
Keycloak キャパシティプランニングダッシュボード - Keycloak によって処理される負荷の見積もりに関連するメトリクスを表示します。
設定不要のセキュアなクラスタ通信
複数のノードをクラスタリングするために、Keycloak は分散キャッシュを使用します。このリリース以降、すべての TCP ベースのトランスポートスタックで、ノード間の通信は TLS で暗号化され、自動生成された一時的な鍵と証明書で保護されます。
これにより、セキュアバイデフォルトのセットアップが強化され、新しいセットアップの構成手順が最小限に抑えられます。
詳細については、分散キャッシュガイドの トランスポートスタックのセキュリティ保護 を確認してください。
最適化およびカスタマイズされたイメージのローリングアップデート
最適化またはカスタマイズされたイメージを使用する場合、古いイメージと新しいイメージに同じバージョンの Keycloak が含まれている場合、Keycloak Operator は新しいイメージのローリングアップデートを実行できるようになりました。これは、たとえば、ダウンタイムなしで更新されたテーマまたはプロバイダーをロールアウトする場合に役立ちます。
Operator でこの機能を使用するには、Auto
アップデート戦略を有効にすると、Keycloak Operator はイメージの変更時に、ダウンタイムなしのローリングアップデートが可能かどうかを判断するために、古いイメージと新しいイメージを短時間起動します。この機能の詳細については、Keycloak Operator 高度な構成ガイドの ローリングアップデートの管理 セクションをお読みください。
ローリングアップデートが可能かどうかを判断するためのチェックは、Keycloak コマンドラインでも利用できるため、デプロイメントパイプラインで使用できます。コマンドラインで利用可能な機能の詳細については、アップデート互換性ツール ガイドをお読みください。
管理者イベント API の追加クエリパラメータ
管理者イベント API は、以前の yyyy-MM-dd
形式に加えて、Epoc タイムスタンプに基づいてイベントをフィルタリングすることをサポートするようになりました。これにより、取得するイベントのウィンドウをよりきめ細かく制御できます。
direction
クエリパラメータも追加され、返されるアイテムの順序を asc
または desc
として制御できるようになりました。過去には、イベントは常に desc
順 (最新のイベントが最初) で返されていました。
最後に、返されるイベント表現には、イベントの一意の識別子を提供する id
も含まれるようになりました。
ログは ECS 形式をサポート
利用可能なすべてのログハンドラーが ECS (Elastic Common Schema) JSON 形式をサポートするようになりました。これにより、Keycloak の可観測性と集中ロギングのストーリーを改善するのに役立ちます。
詳細については、ロギングガイド を参照してください。
X.509 認証局用にロードされた CRL の新しいキャッシュ
X.509 認証局で証明書を検証するために使用される証明書失効リスト (CRL) が、crl
という名前の新しい Infinispan キャッシュ内にキャッシュされるようになりました。キャッシュにより、検証パフォーマンスが向上し、ソースごとに 1 つの CRL のみが維持されるため、メモリ消費量が削減されます。
新しいキャッシュプロバイダーのオプションを知るには、すべてのプロバイダー構成 ガイドの crl-storage
セクションを確認してください。
Operator はトラフィックを制限する NetworkPolicy を作成
Keycloak Operator は、デフォルトで、Keycloak の分散キャッシュに使用される内部ポートへのトラフィックを制限する NetworkPolicy を作成するようになりました。
これにより、セキュアバイデフォルトのセットアップが強化され、新しいセットアップの構成手順が最小限に抑えられます。
Kubernetes NetworkPolicy ルール構文を使用して、管理および HTTP エンドポイントへのアクセスをさらに制限できます。
詳細については、Operator 高度な構成 を参照してください。
管理インターフェースの信頼および鍵マテリアルをリロードするオプション
https-management-certificates-reload-period
オプションを設定すると、管理インターフェースの https-management-*
オプションで参照されるキーストア、トラストストア、および証明書ファイルのリロード期間を定義できます。リロードを無効にするには -1 を使用します。デフォルトは https-certificates-reload-period
で、デフォルトは 1 時間 (1h) です。
詳細については、管理インターフェースの設定 ガイドを確認してください。
クライアントポリシーを使用した動的な認証フロー選択
リクエストされたスコープ、ACR (認証コンテキストクラス参照) などの条件に基づいて認証フローを動的に選択する機能が導入されました。これは、新しい AuthenticationFlowSelectorExecutor
を新しい ACRCondition
などの条件と組み合わせることにより、クライアントポリシー を使用して実現できます。詳細については、サーバー管理ガイド を参照してください。
最新の OIDC 仕様に準拠した JWT クライアント認証
最新バージョンのOpenID Connect Core Specificationでは、Client Authentication methods private_key_jwt
および client_secret_jwt
の JWT クライアントアサーションにおけるオーディエンス検証のルールが厳格化されました。Keycloak はデフォルトで、クライアント認証に使用される JWT トークンに単一のオーディエンスが存在することを強制するようになりました。
JWT クライアント認証における Keycloak バージョンの変更されたオーディエンス検証に関する情報は、アップグレードガイドを参照してください。
貢献してくれたThomas Darimont氏に感謝します。
ユーザー資格情報の取得時にフェデレーション資格情報が利用可能になりました
これまで、User API を使用してユーザー資格情報をクエリすると、ユーザー・ストレージ・プロバイダーによって管理される資格情報は返されず、その結果、資格情報が最後に更新された日時のようなフェデレーション資格情報に関連付けられた追加メタデータを取得することができませんでした。
今回のリリースでは、レルム内の特定のユーザーに対してユーザー・ストレージ・プロバイダーが管理する資格情報を返せるように、新しいメソッド getCredentials(RealmModel, UserModel)
を org.keycloak.credential.CredentialInputUpdater
インターフェースに追加しました。これにより、ユーザー・ストレージ・プロバイダーは、資格情報が自身にリンクされているかどうかを示すとともに、管理コンソールを通じてユーザーを管理する際に、追加情報を表示できるように追加メタデータを提供できます。
LDAP の場合、標準の pwdChangedTime
属性、または Microsoft AD を使用している場合は pwdLastSet
属性に基づいて、パスワードが最後に更新された日時を確認できるようになります。
資格情報がローカル(Keycloak によって管理される)か、フェデレーションされているかを確認するには、CredentialRepresentation
タイプと CredentialModel
タイプの両方から利用可能な federationLink
プロパティを確認できます。設定されている場合、federationLink
プロパティは、特定のユーザー・ストレージ・プロバイダーに関連付けられたコンポーネントモデルの UUID を保持します。
SMTP のトークンベース認証 (XOAUTH2)
Keycloak の送信リンク: レルムのメール設定[SMTP メール設定] で、トークン認証(XOAUTH2)がサポートされるようになりました。多くのサービスプロバイダー(Microsoft、Google)は SMTP OAuth 認証に移行しており、基本認証のサポートを終了しています。トークンはクライアントクレデンシャルグラントを使用して収集されます。
貢献してくれたSebastian Rose氏に感謝します。
アクセストークンヘッダータイプの新しいクライアント設定
新しい管理者設定が追加されました: クライアント → 詳細設定 → OpenID Connect 詳細設定 → 「アクセストークンヘッダータイプとして "at+jwt" を使用する」
有効にすると、アクセストークンは rfc9068#section-2.1 に準拠してヘッダータイプ at+jwt
を取得します。それ以外の場合、アクセストークンヘッダータイプは JWT
になります。
この設定はデフォルトでオフになっています。
貢献してくれたLaurids Møller Jepsen氏に感謝します。
検証可能な資格情報発行のための OpenID のドキュメント
検証可能な資格情報発行のための OpenID (OID4VCI) は、Keycloak では引き続き実験的な機能ですが、さらなる改善、特に入門方法が記載されたドキュメントが提供されました。
Keycloak OAuth SIG では、重要な開発と議論が行われています。Keycloak コミュニティの誰もが参加し、フィードバックを提供することを歓迎します。
この機能の開発と議論に参加してくれた OAuth SIG グループのすべてのメンバーに感謝します。特に、Awambeng Rodrick氏とIngrid Kamga氏に感謝します。
Keycloak 26.1.3
資格情報のリセット後にフェデレーションユーザーにリセットメールを送信して再度ログインを強制する
バージョン 26.1.1 では、資格情報リセットフロー後のデフォルトの動作を変更できるように、reset-credential-email
(リセットメールの送信)オーセンティケーターに新しい構成オプションが追加されました。オプション force-login
(リセット後にログインを強制)に 3 番目の構成値 only-federated
が追加され、これはフェデレーションユーザーにはログインの強制が true であり、内部データベースユーザーには false であることを意味します。新しい動作がデフォルトになりました。このようにして、Keycloak と緊密に統合されていない可能性のあるユーザーフェデレーションプロバイダーによって管理されるすべてのユーザーは、問題を防ぐために資格情報リセットフロー後に再度ログインすることを強制されます。この動作の変更は、デフォルトでセキュアにするというポリシーによるものです。
詳細については、パスワード忘れを有効にするを参照してください。
Keycloak 26.1.1
CRL が期限切れの場合に認証を中止する X.509 オーセンティケーターの新しいオプション
X.509 オーセンティケーターには、証明書を検証するために CRL が構成されており、CRL が次回の更新フィールドで指定された時間内に更新されない場合にログインを中止する新しいオプション x509-cert-auth-crl-abort-if-non-updated
(管理コンソールでは CRL が更新されていない場合は中止)があります。新しいオプションは、管理コンソールではデフォルトで true
になっています。CRL 次回更新フィールドの詳細については、RFC5280、セクション 5.1.2.5 を参照してください。
以前の動作との互換性のために値 false
が維持されています。既存の構成には新しいオプションがなく、このオプションが false
に設定されているかのように動作しますが、管理コンソールは編集時にデフォルト値 true
を追加することに注意してください。
資格情報のリセット後にログインを強制するリセットメール送信の新しいオプション
reset-credential-email
(リセットメールの送信)は、資格情報のリセットフロー(パスワード忘れ機能)で使用されるオーセンティケーターであり、リセット資格情報トークンリンクを含むメールをユーザーに送信します。このオーセンティケーターには、新しいオプション force-login
(リセット後にログインを強制)が追加されました。このオプションが true
に設定されている場合、オーセンティケーターはセッションを終了し、新しいログインを強制します。
この新しいオプションの詳細については、パスワード忘れを有効にするを参照してください。
Keycloak 26.1.0
トランスポートスタック jdbc-ping
が新しいデフォルトに
Keycloak はデフォルトで、同じクラスターの他のノードを検出するためにデータベースを使用するようになり、特にクラウドプロバイダーの場合、追加のネットワーク関連の構成が不要になりました。また、クラウド環境ですぐに動作するデフォルトでもあります。
以前のバージョンの Keycloak では、クラスターを形成し、Keycloak のレプリケートされたキャッシュを同期するために、デフォルトとして UDP マルチキャストを使用して他のノードを検出していました。これには、マルチキャストが利用可能で、正しく構成されている必要がありましたが、通常、クラウド環境ではそうではありません。
このバージョンから、デフォルトは、Keycloak のデータベースを使用して他のノードを検出する jdbc-ping
構成に変更されました。これにより、マルチキャストネットワーク機能と UDP の必要がなくなり、TCP ベースの障害検出に動的ポートを使用しなくなるため、以前のデフォルトを使用していた環境にとって、簡素化とドロップイン置換になります。以前の動作を有効にするには、現在非推奨となっているトランスポートスタック udp
を選択してください。
Keycloak Operator は引き続きトランスポートスタックとして kubernetes
を構成します。
詳細については、分散キャッシュの構成ガイドを参照してください。
Infinispan および JGroups スレッドプールで仮想スレッドが有効になりました
今回のリリースから、Keycloak は、OpenJDK 21 で実行している場合に、組み込みの Infinispan と JGroups の両方で仮想スレッドプールのサポートを自動的に有効にします(少なくとも 2 つの CPU コアが利用可能な環境の場合)。これにより、JGroups スレッドプールを構成する必要がなくなり、JGroups スレッドプールを HTTP worker スレッドプールに合わせる必要がなくなり、全体的なメモリフットプリントが削減されます。
OpenTelemetry Tracing がサポートされました
以前のリリースでは、OpenTelemetry Tracing 機能はプレビューでしたが、現在は完全にサポートされています。つまり、opentelemetry
機能はデフォルトで有効になっています。
Keycloak のトレース機能には、複数の改善が加えられました。
-
Keycloak Operator の Keycloak CR を介した構成
-
以下のカスタムスパン
-
ID プロバイダーブローカレッジを含む、受信/送信 HTTP リクエスト
-
データベース操作と接続
-
LDAP リクエスト
-
時間のかかる操作(パスワードハッシュ、永続セッション操作など)
-
詳細については、トレースの有効化ガイドを参照してください。
Infinispan のデフォルト XML 構成ファイルの場所
以前のリリースでは、--cache-config-file
オプションが指定されていない場合、conf/cache-ispn.xml
への変更はすべて無視されていました。
今回のリリースから、--cache-config-file
が設定されていない場合、デフォルトの Infinispan XML 構成ファイルは conf/cache-ispn.xml
になります。これは、現在および以前のリリースのドキュメントで示唆されている動作と、期待される動作の両方であるためです。
カテゴリ固有のログレベルの個別オプション
カテゴリ固有のログレベルを個別の log-level-category
オプションとして設定できるようになりました。
詳細については、ロギングガイドを参照してください。
検証可能な資格情報発行のための OpenID
検証可能な資格情報発行のための OpenID (OID4VCI) は、Keycloak では引き続き実験的な機能ですが、今回のリリースで大幅に改善されました。この機能は、既存の構成の多くの洗練化と、機能をより動的かつカスタマイズ可能にすることから恩恵を受けています。
Keycloak OAuth SIG では、重要な開発と議論が行われています。Keycloak コミュニティの誰もが参加することを歓迎します。
この機能の開発と議論に参加してくれた OAuth SIG グループのすべてのメンバーに感謝します。特に、Francis Pouatcha氏、Ingrid Kamga氏、Pascal Knüppel氏、Thomas Darimont氏、Ogen Bertrand氏、Awambeng Rodrick氏、Takashi Norimatsu氏に感謝します。
クライアントの最小 ACR 値
オプション 最小 ACR 値 が、レルム OIDC クライアントの構成オプションとして追加されました。この追加は、ステップアップ認証に関連する拡張機能であり、特定のクライアントにログインする際に最小 ACR レベルを強制することを可能にします。
貢献してくれたSimon Levermann氏に感謝します。
prompt=create のサポート
ユーザー登録開始標準のサポートが追加されました。これにより、OIDC クライアントは、パラメーター prompt=create
を指定してログインリクエストを開始し、既存のユーザーを認証するのではなく、新しいユーザーを登録する必要があることを Keycloak に通知できます。ユーザー登録の開始は、専用のエンドポイント /realms/<realm>/protocol/openid-connect/registrations
を使用して Keycloak で既にサポートされていました。ただし、このエンドポイントは Keycloak 固有の独自ソリューションであったため、標準的な方法を優先して非推奨になりました。
貢献してくれたThomas Darimont氏に感謝します。
生成された EC 鍵の証明書を作成するオプション
新しいオプション 証明書を生成 が、EC-DSA および Ed-DSA 鍵プロバイダーに存在します。レルム管理者によって生成された鍵が作成されると、この鍵の証明書が生成される場合があります。証明書情報は、管理コンソールと、レルム鍵を持つ JWKS エンドポイントから利用可能なこの鍵の JWK 表現で利用できます。
貢献してくれたPascal Knüppel氏に感謝します。
DPoP 鍵への認可コードバインディング
DPoP 鍵への認可コードバインディング のサポートが追加されました。これには、プッシュ認可リクエストによる DPoP のサポートが含まれます。
貢献してくれたTakashi Norimatsu氏に感謝します。
OIDC 認証リクエストに送信される追加パラメーターの最大数と長さ
OIDC 認証リクエストは、最大長の追加カスタムパラメーターの数を制限してサポートします。追加パラメーターは、カスタム目的(たとえば、プロトコルマッパーを使用してトークンにクレームを追加するなど)に使用できます。以前のバージョンでは、パラメーターの最大数は 5 にハードコードされており、パラメーターの最大長は 2000 にハードコードされていました。現在、両方の値が構成可能です。さらに、追加パラメーターによってリクエストが失敗するか、パラメーターが無視されるかを構成することもできます。
貢献してくれたManuel Schallar氏とPatrick Weiner氏に感謝します。
ネットワークポリシーのサポートが Keycloak Operator に追加されました
プレビュー機能。 |
Kubernetes デプロイのセキュリティを向上させるために、ネットワークポリシー を Keycloak CR で指定できます。Keycloak Operator は、トラフィックの送信元を定義するイングレスルールを受け入れ、必要なネットワークポリシーを自動的に作成します。
Microsoft Active Directory を使用する場合、LDAP ユーザーはデフォルトで有効として作成されます
Microsoft AD を使用しており、管理インターフェースを通じてユーザーを作成する場合、ユーザーはデフォルトで有効として作成されます。
以前のバージョンでは、ユーザーに(一時的でない)パスワードを設定した後にのみユーザーのステータスを更新することができました。この動作は、他の組み込みユーザー・ストレージや、LDAP プロバイダーでサポートされている他の LDAP ベンダーと一貫性がありませんでした。
新しい条件付きオーセンティケーター Condition - sub-flow executed
および Condition - client scope
Condition - sub-flow executed および Condition - client scope は、Keycloak の新しい条件付きオーセンティケーターです。条件 Condition - sub-flow executed は、認証フローの実行中に以前のサブフローが正常に実行されたかどうか(または実行されなかったかどうか)を確認します。条件 Condition - client scope は、構成されたクライアントスコープが、認証を要求するクライアントのクライアントスコープとして存在するかどうかを確認します。詳細については、条件付きフローの条件を参照してください。
プロバイダーファクトリ間の依存関係の定義
Keycloak の拡張機能を開発する場合、開発者は ProviderFactory
インターフェースで dependsOn()
メソッドを実装することにより、プロバイダーファクトリクラス間の依存関係を指定できるようになりました。詳細な説明については、Javadoc を参照してください。
ウェルカムテーマでダークモードが有効になりました
すべての keycloak
テーマでダークモードのサポートが有効になりました。この機能は以前は管理コンソール、アカウントコンソール、ログインに存在していましたが、ウェルカムページでも利用できるようになりました。ユーザーがオペレーティングシステム設定(例:ライトモードまたはダークモード)またはユーザーエージェント設定を通じて好みを指定すると、テーマはこれらの設定に自動的に従います。
keycloak
テーマのいずれかを拡張するカスタムテーマを使用しており、ダークモードをまだサポートする準備ができていない場合、またはダークモードを実装することを妨げるスタイリングの競合がある場合は、テーマに次のプロパティを追加することでサポートを無効にできます。
darkMode=false
または、レルム設定の テーマ タブで ダークモード 設定をオフにすることで、組み込みの Keycloak テーマのダークモードサポートをレルムごとに無効にできます。
パスワードハッシュのメトリクス
Keycloak によって実行されたパスワード検証の回数をカウントする新しいメトリクスが利用可能です。これにより、CPU リソースがどこで使用されているかをより適切に評価し、サイジング計算に反映させることができます。
詳細については、Keycloak メトリクス および CPU およびメモリリソースのサイジングの概念 を参照してください。
管理コンソールでアクティブなすべてのセッションをサインアウトすると、すべてのセッションが効果的に削除されるようになりました
以前のバージョンでは、管理コンソールで アクティブなすべてのセッションをサインアウト をクリックすると、通常のセッションのみが削除されていました。オフラインセッションは、効果的に無効になっているにもかかわらず、引き続き表示されていました。
これが変更されました。アクティブなすべてのセッションからサインアウトすると、通常のセッションとオフラインセッションの両方が削除されるようになりました。
Node.js アダプターと JavaScript アダプター専用のリリースサイクル
今回のリリース以降、Keycloak JavaScript アダプターと Keycloak Node.js アダプターは、Keycloak サーバーのリリースサイクルとは独立したリリースサイクルを持つようになります。26.1.0 リリースは、これらのアダプターが Keycloak サーバーとともにリリースされる最後のリリースになる可能性がありますが、今後は、これらのアダプターは Keycloak サーバーとは異なるタイミングでリリースされる可能性があります。
クイックスタートの更新
Keycloak クイックスタートは、ベースブランチとして main
を使用するようになりました。以前使用されていた latest
ブランチは削除されました。main
ブランチは、Keycloak サーバー、Keycloak クライアントライブラリ、およびアダプターの最後にリリースされたバージョンに依存します。その結果、クイックスタートへのコントリビューションは、次の Keycloak サーバーリリースを待つ必要がなく、クイックスタートの利用者にすぐに表示されます。
KEYCLOAK_SESSION クッキーと AUTH_SESSION_ID クッキーの更新された形式
KEYCLOAK_SESSION
クッキーの形式がわずかに更新され、プレーンテキストでプライベートデータを含まなくなりました。これまで、クッキーの形式は realmName/userId/userSessionId
でした。現在、クッキーには、SHA-256 でハッシュされ、URL エンコードされたユーザーセッション ID が含まれています。
AUTH_SESSION_ID
クッキーの形式が更新され、署名検証を通じて整合性を確保するために、認証セッション ID の署名が含まれるようになりました。新しい形式は base64(auth_session_id.auth_session_id_signature)
です。この更新により、古い形式は受け入れられなくなり、古い認証セッションは無効になります。この変更は、ユーザーセッションには影響しません。
これらの変更は、独自のプロバイダーを実装し、Keycloak 内部クッキーの形式に依存している場合にのみ影響を与える可能性があります。
robots.txt ファイルの削除
以前はデフォルトで含まれていた robots.txt
ファイルが削除されました。デフォルトの robots.txt
ファイルはすべてのクロールをブロックしており、noindex
/nofollow
ディレクティブが従われるのを防いでいました。望ましいデフォルトの動作は、Keycloak ページが検索エンジンの結果に表示されないことであり、これはデフォルトで none
に設定されている既存の X-Robots-Tag
ヘッダーによって実現されます。異なる動作が必要な場合は、このヘッダーの値をレルムごとにオーバーライドできます。
以前にこれのためにリバースプロキシ構成にルールを追加した場合は、削除できます。
インポートされた鍵プロバイダーは、期限切れの証明書を持つ鍵をチェックしてパッシブ化します
外部で生成された鍵をインポートできる鍵プロバイダー(rsa
および java-keystore
ファクトリ)は、関連付けられた証明書が存在する場合、その有効性をチェックするようになりました。したがって、証明書が期限切れになっている鍵は、Keycloak にインポートできなくなりました。実行時に証明書の有効期限が切れると、鍵はパッシブ鍵(有効だがアクティブではない)に変換されます。パッシブ鍵は新しいトークンには使用されませんが、以前に発行されたトークンを検証するためには引き続き有効です。
デフォルトの generated
鍵プロバイダーは、10 年間有効な証明書を生成します(関連付けられた証明書を持つタイプまたは持つことができるタイプ)。有効期間が長く、鍵を頻繁にローテーションすることが推奨されているため、生成されたプロバイダーはこのチェックを実行しません。
Keycloak 26.0.0
クライアントライブラリの更新
クライアントライブラリ専用のリリースサイクル
今回のリリースから、一部の Keycloak クライアントライブラリは、Keycloak サーバーのリリースサイクルとは独立したリリースサイクルを持つようになります。26.0.0 リリースは、クライアントライブラリが Keycloak サーバーとともにリリースされる最後のリリースになる可能性があります。しかし、今後は、クライアントライブラリは Keycloak サーバーとは異なるタイミングでリリースされる可能性があります。
クライアントライブラリは次のアーティファクトです
-
Java 管理クライアント - Maven アーティファクト
org.keycloak:keycloak-admin-client
-
Java 認可クライアント - Maven アーティファクト
org.keycloak:keycloak-authz-client
-
Java ポリシーエンフォーサー - Maven アーティファクト
org.keycloak:keycloak-policy-enforcer
将来的には、さらに多くのライブラリが含まれる可能性があります。
クライアントライブラリは Java 8 でサポートされているため、古いアプリケーションサーバーにデプロイされたクライアントアプリケーションで使用できます。
クライアントライブラリとサーバーの互換性
今回のリリースから、同じサーバーバージョンと以前のいくつかのメジャーサーバーバージョンでクライアントライブラリをテストおよびサポートしています。
サーバーバージョンでのクライアントライブラリのサポート対象バージョンの詳細については、Keycloak クライアントライブラリのアップグレードを参照してください。
ユーザーセッションがデフォルトで永続化されるようになりました
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
コマンドを実行できるようになりました。さらに、ユーザーが手間をかけずに管理者アクセスを回復できる新しい専用コマンドが導入されました。
詳細な手順とこのトピックの詳細については、管理者ブートストラップとリカバリガイドを参照してください。
OpenTelemetry Tracing プレビュー
OpenTelemetry Tracing の基盤となる Quarkus サポートが Keycloak に公開され、より優れた可観測性のためにアプリケーションのトレースを取得できるようになりました。これにより、パフォーマンスのボトルネックを見つけ、アプリケーションの障害の原因を特定し、分散システムを介してリクエストをトレースするなど、多くのことができます。サポートはプレビューモードであり、フィードバックをお待ちしております。
詳細については、トレースの有効化ガイドを参照してください。
検証可能な資格情報発行のための OpenID
検証可能な資格情報発行のための OpenID (OID4VCI) は、Keycloak ではまだ実験的な機能ですが、今回のリリースで大幅に改善されました。Keycloak OAuth SIG では、重要な開発と議論が行われています。Keycloak コミュニティの誰もが参加することを歓迎します。
この機能の開発と議論に参加してくれた OAuth SIG グループのすべてのメンバーに感謝します。特に、Francis Pouatcha氏、Pascal Knüppel氏、Takashi Norimatsu氏、Ingrid Kamga氏、Stefan Wiedemann氏、Thomas Darimont氏に感謝します。
DPoP の改善
DPoP(OAuth 2.0 Demonstrating Proof-of-Possession)プレビュー機能が改善されました。DPoP はすべてのグラントタイプでサポートされるようになりました。以前のリリースでは、この機能は authorization_code
グラントタイプでのみサポートされていました。UserInfo エンドポイントでの DPoP トークンタイプのサポートも存在します。
貢献してくれたPascal Knüppel氏に感謝します。
GELF ロギングハンドラーの削除
GELF サポートはしばらくの間非推奨とされていましたが、今回のリリースで Keycloak から完全に削除されました。他のログハンドラーは利用可能であり、GELF の代替として使用するために完全にサポートされています。たとえば、Syslog などがあります。詳細については、ロギングガイドを参照してください。
Admin REST API 用の軽量アクセストークン
軽量アクセストークンを Admin REST API で使用できるようになりました。security-admin-console
および admin-cli
クライアントは、デフォルトで軽量アクセストークンを使用するようになり、「常に軽量アクセストークンを使用する」および「フルスコープを許可する」がこれら 2 つのクライアントで有効になりました。ただし、管理コンソールでの動作は事実上同じままです。これら 2 つのクライアントに変更を加えた場合や、他の目的で使用している場合は注意してください。
Keycloak JavaScript アダプターがスタンドアロンになりました
Keycloak JavaScript アダプターはスタンドアロンライブラリになり、Keycloak サーバーから静的に提供されなくなりました。目標は、ライブラリを Keycloak サーバーから分離し、独立してリファクタリングできるようにすることで、コードを簡素化し、将来のメンテナンスを容易にすることです。さらに、ライブラリはサードパーティの依存関係から解放され、軽量化され、さまざまな環境で使いやすくなりました。
変更点の完全な内訳については、アップグレードガイドを参照してください。
ホスト名 v1 機能の削除
非推奨のホスト名 v1 機能が削除されました。この機能は Keycloak 25 で非推奨となり、ホスト名 v2 に置き換えられました。この機能をまだ使用している場合は、ホスト名 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-trusted-addresses
は、proxy-headers
オプションが設定されている場合に、信頼できるプロキシアドレスの許可リストを指定するために使用できます。特定のリクエストのプロキシアドレスが信頼されていない場合、それぞれのプロキシヘッダー値は使用されません。
オプション 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 レルムは、機密データをデータベースに保存せずに、任意のキーを暗号化されたファイルに外部化できます。
この件に関する詳細については、レルムキーの設定 を参照してください。
ECDH-ES 暗号化キー管理アルゴリズムのサポートを追加
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
機能の導入により、同じソーシャルブローカーの異なるインスタンスを異なる組織にリンクすることが可能になるはずです。
ソーシャルブローカーを作成するときは、他のブローカーと同様に、Alias
とオプションで Display name
を指定する必要があります。
認証情報の新しい汎用イベントタイプ
認証情報の更新 (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 CR が、Keycloak Pod のスケジューリングを制御するためのファーストクラスプロパティを公開するようになりました。
詳細については、Operator Advanced Configuration を参照してください。
KeycloakRealmImport CR がプレースホルダーの置換をサポート
KeycloakRealmImport CR が、インポート時にプレースホルダーの置換を行うための環境変数を作成するために spec.placeholders
を公開するようになりました。
詳細については、Operator Realm Import を参照してください。
Infinispan マーシャリングが Infinispan Protostream に変更
マーシャリングは、Java オブジェクトをバイトに変換して、Keycloak サーバー間でネットワーク経由で送信するプロセスです。Keycloak 26 では、マーシャリング形式を JBoss Marshalling から Infinispan Protostream に変更しました。
JBoss Marshalling と Infinispan Protostream は互換性がなく、誤った使用法はデータ損失につながる可能性があります。その結果、このバージョンにアップグレードすると、すべてのキャッシュがクリアされます。 |
Infinispan Protostream は Protocol Buffers (proto 3) に基づいており、下位/上位互換性があるという利点があります。
レルムの削除時にグループ関連のイベントが発火しなくなる
グループのスケーラビリティを向上させる目的で、レルムを削除する際にグループがデータベースから直接削除されるようになりました。その結果、レルムの削除時に GroupRemovedEvent
のようなグループ関連のイベントが発火しなくなりました。
移行方法については、アップグレードガイドを参照してください。
レルム表現から ID プロバイダーが利用できなくなる
多くの ID プロバイダーを持つレルムと組織のスケーラビリティに関する改善の一環として、レルム表現は ID プロバイダーのリストを保持しなくなりました。ただし、レルムをエクスポートするときは、レルム表現から引き続き利用可能です。
移行方法については、アップグレードガイドを参照してください。
Securing Applications ドキュメントがガイド形式に変換
Securing Applications and Services ドキュメントが、以前のリリースで変換された Server Installation and Configuration ドキュメントと同様の新しい形式に変換されました。ドキュメントは Keycloak Guides で利用できるようになりました。
レガシークッキーの削除
Keycloak は、古いブラウザーがクッキーの SameSite
フラグをサポートしていないことへの回避策として導入された _LEGACY
クッキーを送信しなくなりました。
_LEGACY
クッキーは、安全でないコンテキストからのログインを許可するという別の目的も果たしていました。これは Keycloak の本番環境へのデプロイではまったく推奨されませんが、localhost
外の http
経由で Keycloak にアクセスすることはかなり頻繁にあります。_LEGACY
クッキーの代替として、Keycloak は安全でないコンテキストが使用されていることを検出すると、secure
フラグを設定せず、SameSite=None
の代わりに SameSite=Lax
を設定するようになりました。
Keycloak 25.0.0
アカウントコンソール v2 テーマの削除
アカウントコンソール v2 テーマが Keycloak から削除されました。このテーマは Keycloak 24 で非推奨となり、アカウントコンソール v3 テーマに置き換えられました。まだこのテーマを使用している場合は、アカウントコンソール v3 テーマに移行する必要があります。
ほとんどの Java アダプターが削除
以前の Keycloak バージョンのリリースノートで述べたように、ほとんどの Java アダプターが Keycloak コードベースおよびダウンロードページから削除されました。
OAuth 2.0/OIDC については、Tomcat アダプター、WildFly/EAP アダプター、Servlet Filter アダプター、KeycloakInstalled
デスクトップアダプター、jaxrs-oauth-client
アダプター、JAAS ログインモジュール、Spring アダプター、および SpringBoot アダプターの削除が含まれます。いくつかの代替案のリストについては、以前の投稿 を確認できます。
SAML については、Tomcat アダプターと Servlet フィルターアダプターの削除が含まれます。SAML アダプターは、WildFly および JBoss EAP で引き続きサポートされています。
汎用 Authorization Client ライブラリは引き続きサポートされており、今後もサポートする予定です。これは、他の OAuth 2.0 または OpenID Connect ライブラリと組み合わせて使用することを目的としています。この認可クライアントライブラリが Elytron OIDC や SpringBoot などのサードパーティ Java アダプターとともに使用されている例については、quickstarts を確認できます。WildFly で使用されている SAML アダプターの例についても、quickstarts を確認できます。
PatternFly 5 へのアップグレード
Keycloak 24 では、ウェルカムページが PatternFly 5、Keycloak のユーザーインターフェイスを支えるデザインシステムの最新バージョンを使用するように更新されました。今回のリリースでは、管理コンソールとアカウントコンソールも PatternFly 5 を使用するように更新されました。管理コンソールとアカウントコンソールを拡張およびカスタマイズする場合は、PatternFly 5 の変更点 を確認し、カスタマイズを適宜更新してください。
Argon2 パスワードハッシュ
Argon2 は、FIPS 環境以外で Keycloak が使用するデフォルトのパスワードハッシュアルゴリズムになりました。
Argon2 は 2015 年のパスワードハッシュコンペティション の優勝者であり、OWASP によって推奨されているハッシュアルゴリズムです。
Keycloak 24 では、PBKDF2 のデフォルトのハッシュ反復回数が 27.5K から 210K に増加し、パスワードハッシュの生成に必要な CPU 時間が 10 倍以上増加しました。Argon2 を使用すると、以前のバージョンの Keycloak とほぼ同じ CPU 時間で、より優れたセキュリティを実現できます。1 つの欠点は、Argon2 が GPU 攻撃に対する耐性を備えるために、より多くのメモリを必要とすることです。Keycloak の Argon2 のデフォルトでは、ハッシュリクエストごとに 7MB が必要です。過剰なメモリと CPU 使用率を防ぐため、Argon2 によるハッシュの並列計算は、デフォルトで JVM で利用可能なコア数に制限されています。Argon2 のメモリ集中型の性質をサポートするために、デフォルトの GC を ParallelGC から G1GC に更新して、ヒープの使用率を向上させました。
Argon2 は FIPS 140-2 に準拠していないことに注意してください。したがって、FIPS 環境にいる場合、デフォルトのアルゴリズムは引き続き PBKDF2 になります。また、FIPS 環境以外にいて、FIPS 環境に移行することを計画している場合は、パスワードポリシーを pbkdf2-sha512
などの FIPS 準拠のアルゴリズムに変更することを早めに検討してください。そうしないと、FIPS 環境に切り替えた後、ユーザーはログインできなくなります。
新しいホスト名オプション
以前のホスト名設定の複雑さと直感性の欠如に対応して、Hostname v2 オプションを導入できることを誇りに思います。
皆様からのフィードバックに耳を傾け、厄介な問題に取り組み、ホスト名設定を管理するためのよりスムーズなエクスペリエンスを作成しました。これらのオプションの背後にある動作も変更されており、カスタムホスト名設定を扱っている場合は注意が必要です。
古いホスト名オプションは非推奨となり、今後のリリースで削除されるため、Hostname v2 オプションはデフォルトでサポートされています。できるだけ早く移行する必要があります。
新しいオプションはデフォルトで有効になっているため、Keycloak は古いオプションを認識しません。
移行方法については、アップグレードガイドを参照してください。
永続的なユーザーセッション
以前のバージョンの Keycloak では、オフラインユーザーセッションとオフラインクライアントセッションのみがデータベースに保存されていました。新しい機能である persistent-user-sessions
は、オンラインユーザーセッションとオンラインクライアントセッションをメモリだけでなくデータベースにも保存します。これにより、Keycloak のすべてのインスタンスが再起動またはアップグレードされた場合でも、ユーザーはログイン状態を維持できます。
この機能はプレビュー機能であり、デフォルトでは無効になっています。使用するには、ビルドコマンドに以下を追加します。
bin/kc.sh build --features=persistent-user-sessions ...
詳細については、機能の有効化と無効化 ガイドを参照してください。サイジングガイド には、この機能が有効になっている場合の更新されたリソース要件について説明する新しい段落が含まれています。
アップグレード方法については、アップグレードガイドを参照してください。
クッキーの更新
すべてのクッキーに SameSite 属性を設定
次のクッキーは、SameSite
属性を設定していませんでしたが、最近のブラウザーバージョンでは、デフォルトで SameSite=Lax
になります。
-
KC_STATE_CHECKER
はSameSite=Strict
を設定するようになりました -
KC_RESTART
はSameSite=None
を設定するようになりました -
KEYCLOAK_LOCALE
はSameSite=None
を設定するようになりました -
KEYCLOAK_REMEMBER_ME
はSameSite=None
を設定するようになりました
デフォルト値 SameSite=Lax
は、主に SAML に適用される POST ベースのバインディング、および一部の OpenID Connect / OAuth 2.0 フローで使用される場合に問題を引き起こします。
非推奨のクッキーメソッドの削除
カスタムクッキーを設定するための次の API が削除されました。
-
ServerCookie
-NewCookie.Builder
に置き換えられました -
LocaleSelectorProvider.KEYCLOAK_LOCALE
-CookieType.LOCALE
に置き換えられました -
HttpCookie
-NewCookie.Builder
に置き換えられました -
HttpResponse.setCookieIfAbsent(HttpCookie cookie)
-HttpResponse.setCookieIfAbsent(NewCookie cookie)
に置き換えられました
期限切れの認証セッションに対する「既にログインしています」の問題を解決
Keycloak 23 リリースでは、ユーザーが複数のブラウザータブで並行して認証された場合の改善が提供されました。ただし、この改善は認証セッションが期限切れになった場合には対応していませんでした。ユーザーが 1 つのブラウザータブですでにログインしており、他のブラウザータブで認証セッションが期限切れになった場合、Keycloak は OIDC/SAML エラーでクライアントアプリケーションにリダイレクトバックできるようになりました。これにより、クライアントアプリケーションは認証をすぐに再試行できます。通常、SSO セッションのためにアプリケーションに自動的にログインする必要があります。詳細については、サーバー管理ガイドの認証セッション を参照してください。
軽量アクセストークンをさらに軽量化
以前のリリースでは、軽量アクセストークンのサポートが追加されました。今回のリリースでは、軽量アクセストークンからさらに多くの組み込みクレームを削除することに成功しました。クレームはプロトコルマッパーによって追加されます。それらの一部は、OIDC 仕様で厳密に要求されていなかったため、通常のアクセストークンまたは ID トークンにも影響を与えます。
-
クレーム
sub
およびauth_time
は、新しいクライアントスコープbasic
でデフォルトで構成されているプロトコルマッパーによって追加されるようになりました。このスコープは、すべてのクライアントに自動的に追加されます。クレームは、以前と同様に ID トークンとアクセストークンに追加されますが、軽量アクセストークンには追加されません。 -
クレーム
nonce
は、ID トークンにのみ追加されるようになりました。通常のアクセストークンまたは軽量アクセストークンには追加されません。下位互換性のために、このクレームをアクセストークンに追加するには、明示的に構成する必要があるプロトコルマッパーを使用できます。 -
クレーム
session_state
は、どのトークンにも追加されなくなりました。必要に応じて、プロトコルマッパーによって追加することは引き続き可能です。仕様でサポートされている他の専用クレームsid
が引き続き存在し、以前のバージョンでも利用可能であり、まったく同じ値を持ちます。
詳細については、アップグレードガイド を参照してください。
トークンイントロスペクションエンドポイントでの application/jwt メディアタイプのサポート
トークンイントロスペクションエンドポイントを呼び出すときに、HTTP ヘッダー Accept: application/jwt
を使用できます。特定のクライアントで有効にすると、トークンイントロスペクションエンドポイントからクレーム jwt
が、完全な JWT アクセストークンとともに返されます。これは、イントロスペクションエンドポイントを呼び出すクライアントが軽量アクセストークンを使用した場合に特に役立ちます。貢献してくれた Thomas Darimont に感謝します。
必須アクションの改善
管理コンソールで、特定のレルムの [必須アクション] タブでいくつかの必須アクションを設定できるようになりました。現在、[パスワードの更新] が唯一の組み込みの構成可能な必須アクションです。これは、再認証なしで kc_action
パラメーター (アカウントコンソールでパスワードを更新するときなどに使用) によってユーザーがパスワードを更新できる最大時間である 認証の最大経過時間 の設定をサポートしています。必須アクションのソートも改善されました。認証中に複数の必須アクションがある場合、認証中に設定されたアクション (たとえば、kc_action
パラメーターによるアクション) であろうと、管理者によってユーザーアカウントに手動で追加されたアクションであろうと、すべてのアクションがまとめてソートされます。貢献してくれた Thomas Darimont と Daniel Fesenmeyer に感謝します。
パスキーの改善
パスキーの条件付き UI のサポートが追加されました。パスキープレビュー機能が有効になっている場合、専用の認証器が利用可能になります。つまり、利用可能なパスキーアカウントのリストから選択し、それに基づいてユーザーを認証できます。貢献してくれた Takashi Norimatsu に感謝します。
SAML のデフォルトクライアントプロファイル
セキュアな SAML クライアントを持つためのデフォルトクライアントプロファイルが追加されました。管理コンソールでレルムのクライアントポリシーを閲覧すると、新しいクライアントプロファイル saml-security-profile
が表示されます。これを使用すると、署名が強制され、SAML リダイレクトバインディングが無効になり、ワイルドカードリダイレクト URL が禁止されるなど、SAML クライアントにセキュリティのベストプラクティスが適用されます。
検証可能な資格情報発行のための OpenID - 実験的サポート
検証可能な資格情報発行のための OpenID (OID4VCI) のサポートが進行中です。現時点では、これはまだ進行中の作業ですが、徐々に機能が追加されています。Keycloak は、事前承認コードフローのサポートにより、OID4VC 発行者として機能できます。JWT-VC、SD-JWT-VC、および VCDM 形式の検証可能な資格情報のサポートがあります。貢献とフィードバックをくれた OAuth SIG グループのメンバー、特に Stefan Wiedemann、Francis Pouatcha、Takashi Norimatsu、および Yutaka Obuchi に感謝します。
ユーザー属性による検索で大文字と小文字が区別されなくなる
ユーザー属性でユーザーを検索する場合、Keycloak はユーザー属性名を検索する際に小文字比較を強制しなくなりました。この変更の目的は、ユーザー属性テーブルの Keycloak ネイティブインデックスを使用して検索を高速化することでした。データベースの照合順序で大文字と小文字が区別されない場合、検索結果は以前と同じになります。データベースの照合順序で大文字と小文字が区別される場合、以前よりも検索結果が少なくなる可能性があります。
認可クライアントライブラリの破壊的な修正
keycloak-authz-client
ライブラリのユーザーの場合、AuthorizationResource.getPermissions(…)
を呼び出すと、List<Permission>
が正しく返されるようになりました。
以前は、メソッド宣言で List<Permission>
がアドバタイズされていたにもかかわらず、ランタイム時に List<Map>
が返されていました。
この修正により、List またはそのコンテンツを List<Map>
にキャストすることに依存していたコードが壊れます。このメソッドを何らかの形で使用したことがある場合は、これを行った可能性が高く、影響を受ける可能性があります。
クライアントの認可設定をエクスポートするときに ID が設定されなくなる
クライアントの認可設定をエクスポートするときに、リソース、スコープ、およびポリシーの ID が設定されなくなりました。その結果、あるクライアントから別のクライアントに設定をインポートできるようになりました。
メトリクスおよびヘルスエンドポイント用の管理ポート
メトリクスとヘルスチェックエンドポイントは、標準の Keycloak サーバーポートからはアクセスできなくなりました。これらのエンドポイントは外部に公開されるべきではないため、別のデフォルト管理ポート 9000
でアクセスできます。
これにより、Kubernetes 環境の標準 Keycloak エンドポイントとしてユーザーに公開しないことが可能になります。新しい管理インターフェイスは、新しいオプションセットを提供し、完全に構成可能です。
Keycloak Operator は、管理インターフェイスがデフォルトでオンになっていることを前提としています。詳細については、管理インターフェイスの設定 を参照してください。
リモートロギング用の Syslog
Keycloak は、リモートロギング用の Syslog プロトコルをサポートするようになりました。RFC 5424 で定義されたプロトコルを利用しています。デフォルトでは、syslog ハンドラーは無効になっていますが、有効にすると、すべてのログイベントをリモート syslog サーバーに送信します。
詳細については、ロギングの設定 ガイドを参照してください。
クラス EnvironmentDependentProviderFactory
の変更
メソッド EnvironmentDependentProviderFactory.isSupported()
は、いくつかのリリースで非推奨となり、削除されました。
詳細については、アップグレードガイド を参照してください。
すべての cache
オプションがランタイム
cache
、cache-stack
、および cache-config-file
オプションをランタイム時に指定できるようになりました。これにより、ビルドフェーズを実行したり、イメージを再構築したりする必要がなくなりました。
詳細については、アップグレードガイド を参照してください。
高可用性ガイドの強化
高可用性ガイドに、バックアップサイトからプライマリサイトへの意図しない自動フェイルバックを防ぐために AWS Lambda を構成する方法に関するガイドが含まれるようになりました。
AccessToken
、IDToken
、および JsonWebToken
クラスから非推奨のメソッドを削除
今回のリリースでは、次のクラスから非推奨のメソッドを最終的に削除します。
-
AccessToken
-
IDToken
-
JsonWebToken
詳細については、アップグレードガイド を参照してください。
メソッド getExp
が SingleUseObjectKeyModel
に追加
AccessToken
、IDToken
、および JsonWebToken
から非推奨のメソッドが削除された結果、SingleUseObjectKeyModel
も、有効期限値に関連するメソッド名を一貫させるために変更されました。
詳細については、アップグレードガイド を参照してください。
顧客 ID およびアクセス管理 (CIAM) とマルチテナンシーのサポートの導入
今回のリリースでは、Keycloak Organizations をテクノロジープレビュー機能として提供します。
この機能は、より多くの機能を将来提供するためのベースラインとなる、コア CIAM 機能を備えたレルムを提供し、企業間 (B2B) および企業間対企業間顧客 (B2B2C) のユースケースに対応します。
機能の面では、この機能は完成しています。ただし、次のメジャーリリースで完全にサポートするためには、まだ作業が必要です。残りの作業は主に、スケーラビリティに焦点を当てて、本番環境へのデプロイに向けて機能を準備することです。また、次のメジャーリリースまでに得られるフィードバックによっては、ロードマップを損なうことなく、追加の機能を受け入れ、機能にさらに価値を追加する可能性があります。
詳細については、サーバー管理ガイド を参照してください。
Keycloak 24.0.5
client_secret_post ベースの認証を使用する PAR クライアントのセキュリティ問題
今回のリリースには、PAR (Pushed Authorization Request) を使用する一部の OIDC コンフィデンシャルクライアントに影響を与える重要なセキュリティ問題の修正が含まれています。OIDC コンフィデンシャルクライアントを PAR とともに使用し、HTTP リクエストボディのパラメーターとして送信される client_id
と client_secret
に基づくクライアント認証 (OIDC 仕様で指定されたメソッド client_secret_post
) を使用する場合は、このバージョンにアップグレードした後、クライアントのクライアントシークレットをローテーションすることを強くお勧めします。
Keycloak 24.0.4
Admin User API を介してユーザーを更新する場合、ユーザー属性への部分的な更新はサポートされなくなりました
Admin User API を介してユーザー属性を更新する場合、username
、email
、firstName
、および lastName
などのルート属性を含め、ユーザー属性を更新するときに部分的な更新を実行することはできません。
詳細については、アップグレードガイド を参照してください。
Keycloak 24.0.1
Operator が 24.0.0 の代わりに nightly ビルドをデプロイ
Operator を使用して Keycloak をデプロイするとき、リリースプロセスに問題が発生したため、24.0.0
の代わりに nightly
コンテナーがインストールされました。
この問題の迅速な修正として、24.0.0
コンテナーに nightly
というタグが付けられ、nightly
リリースは一時的に無効になりました。
昨日 CET 午後 5 時より前に Operator を使用して 24.0.0
をインストールまたはアップグレードした場合、データベースが間違ったバージョンで更新されている可能性があります。影響を受けているかどうかを確認するには、データベースに接続して、次の SQL コマンドを実行してください。
SELECT * from migration_model WHERE version = '999.0.0';
上記で一致する行が返された場合は、何らかのアクションを実行する必要があります。そうしないと、今後のリリースでデータベース移行が実行されません。これを解決するには、次の SQL コマンドを実行してください。
UPDATE migration_model SET version = '24.0.0' WHERE version = '999.0.0';
Keycloak 24.0.0
サポートされるユーザープロファイルとプログレッシブプロファイリング
ユーザープロファイルプレビュー機能が完全にサポートされるようになり、ユーザープロファイルがデフォルトで有効になりました。
過去数か月間、Keycloak チームはユーザープロファイル機能を完全にサポートするために多大な努力を費やしてきました。今回のリリースでは、その取り組みを継続しました。徹底的なテストと素晴らしいコミュニティからのフィードバックに基づいて、多くの改善、修正、および調整が行われました。
以下は、この機能のいくつかのハイライトです。
-
ユーザーと管理者が管理できる属性をきめ細かく制御できるため、予期しない属性や値が設定されるのを防ぐことができます。
-
どのユーザー属性が管理され、通常のユーザーまたは管理者に対してフォームに表示される必要があるかを指定する機能。
-
動的フォーム - 以前は、ユーザーがプロファイルを新規作成または更新するフォームには、ユーザー名、メールアドレス、名、姓などの 4 つの基本属性が含まれていました。属性を追加 (または一部のデフォルト属性を削除) するには、カスタムテーマを作成する必要がありました。特定のデプロイメントの要件に基づいて、ユーザーに要求された属性が正確に表示されるようになったため、カスタムテーマは不要になる可能性があります。
-
検証 - 最大長または最小長、特定の正規表現を指定したり、特定の属性を URL または数値に制限したりするために使用できる組み込みバリデーターを含む、ユーザー属性のバリデーターを指定する機能。
-
アノテーション - 特定の属性を、たとえばテキストエリア、指定されたオプションを持つ HTML セレクト、カレンダー、またはその他の多くのオプションとしてレンダリングする必要があることを指定する機能。JavaScript コードを特定のフィールドにバインドして、属性のレンダリング方法を変更し、その動作をカスタマイズすることもできます。
-
プログレッシブプロファイリング - 一部のフィールドが
scope
パラメーターの特定の値に対してのみ必須またはフォームで使用可能であることを指定する機能。これにより、プログレッシブプロファイリングが効果的に可能になります。登録中にユーザーに 20 個の属性を尋ねる必要はなくなりました。代わりに、ユーザーが使用する個々のクライアントアプリケーションの要件に応じて、属性を段階的に入力するようにユーザーに依頼できます。 -
以前のバージョンからの移行 - ユーザープロファイルは常に有効になっていますが、この機能を使用していなかったユーザーにとっては以前と同様に動作します。ユーザープロファイル機能を活用できますが、使用する必要はありません。移行手順については、アップグレードガイド を参照してください。
サポートされる機能としてのユーザープロファイルの最初のリリースは、出発点に過ぎず、アイデンティティ管理に関するさらに多くの機能を提供するためのベースラインです。
多くのアイデア、要件、および貢献がコミュニティから寄せられたため、素晴らしい Keycloak コミュニティに心から感謝申し上げます。特に感謝を申し上げたいのは、
ユーザープロファイル機能の詳細については、サーバー管理ガイド を参照してください。
ユーザープロファイル SPI の破壊的な変更
今回のリリースでは、ユーザープロファイル SPI の変更が、この SPI に基づく既存の実装に影響を与える可能性があります。詳細については、アップグレードガイド を参照してください。
ユーザープロファイルとレルムに基づいてページをレンダリングするための Freemarker テンプレートの変更
今回のリリースでは、レルムに設定されたユーザープロファイル構成に基づいて属性を動的にレンダリングできるように、次のテンプレートが更新されました。
-
login-update-profile.ftl
-
register.ftl
-
update-email.ftl
詳細については、アップグレードガイド を参照してください。
ブローカーを介した最初のログイン時のプロファイル更新ページ用の新しい Freemarker テンプレート
今回のリリースでは、ユーザーがブローカーを介して初めて認証するときに、サーバーは idp-review-user-profile.ftl
テンプレートを使用してプロファイル更新ページをレンダリングします。
詳細については、アップグレードガイド を参照してください。
Java アダプターの非推奨と削除
2022 年に、Keycloak 19 での Keycloak アダプターの非推奨 を発表しました。コミュニティがこれに適応するための時間を増やすために、が延期されました。
それを念頭に置いて、これは OpenID Connect および SAML アダプターを含む Keycloak の最後のメジャーリリースになります。Jetty 9.x は 2022 年からサポートされていないため、Jetty アダプターは今回のリリースで既に削除されています。
汎用 Authorization Client ライブラリは引き続きサポートされ、他の OAuth 2.0 または OpenID Connect ライブラリと組み合わせて使用することを目的としています。
継続して提供する唯一のアダプターは、WildFlyおよびEAP 8.x の最新リリース用の SAML アダプターです。これをサポートし続ける理由は、Keycloak の SAML コードベースの大部分が WildFly からの貢献であるという事実にあります。この貢献の一環として、WildFly および EAP 用の SAML アダプターを長期的にメンテナンスすることに合意しました。
新しいウェルカムページ
Keycloak を初めて使用する際に表示される「ウェルカム」ページが再設計されました。これにより、セットアップエクスペリエンスが向上し、最新バージョンの PatternFly に準拠するようになりました。簡素化されたページレイアウトには、最初の管理者ユーザーを登録するためのフォームのみが含まれています。登録が完了すると、ユーザーは直接管理コンソールに移動します。
カスタムテーマを使用している場合は、新しいウェルカムページをサポートするためにテーマを更新する必要がある場合があります。詳細については、アップグレードガイドを参照してください。
新しいアカウントコンソールがデフォルトになりました
Keycloak 22 でアカウントコンソールバージョン 3 をプレビュー機能として導入しました。このリリースでは、これをデフォルトバージョンとし、バージョン 2 を非推奨とします。バージョン 2 は今後のリリースで削除される予定です。
この新しいバージョンには、ユーザープロファイル機能の組み込みサポートが含まれており、管理者アカウントコンソールでユーザーが利用できる属性を設定できます。また、ログイン後、ユーザーを自分の個人アカウントページに直接誘導します。
このテーマのカスタマイズ機能を使用または拡張している場合は、追加の移行が必要になる場合があります。詳細については、アップグレードガイドを参照してください。
Keycloak JS
package.json
での exports
フィールドの使用
Keycloak JS アダプターは、package.json
で exports
フィールド を使用するようになりました。この変更により、Webpack 5 や Vite などのよりモダンなバンドラーのサポートが向上しますが、いくつかの避けられない破壊的な変更が伴います。詳細については、アップグレードガイドを参照してください。
PKCE がデフォルトで有効
Keycloak JS アダプターは、pkceMethod
オプションをデフォルトで S256
に設定するようになりました。この変更により、アダプターを使用するすべてのアプリケーションで Proof Key Code Exchange (PKCE) が有効になります。PKCE をサポートしていないシステムでアダプターを使用する場合は、pkceMethod
オプションを false
に設定して無効にできます。
パスワードハッシュの変更
このリリースでは、パスワードハッシュのデフォルトを OWASP のパスワードストレージに関する推奨事項 に合わせました。
この変更の一環として、デフォルトのパスワードハッシュプロバイダーが pbkdf2-sha256
から pbkdf2-sha512
に変更されました。また、pbkdf2
ベースのパスワードハッシュアルゴリズムのデフォルトのハッシュ反復回数も変更されました。この変更は、最新の推奨事項に沿ったセキュリティの向上を意味しますが、パフォーマンスに影響があります。レルムにパスワードポリシー hashAlgorithm
と hashIterations
を追加することで、以前の動作を維持することが可能です。詳細については、アップグレードガイドを参照してください。
OAuth/OIDC 関連の改善
軽量アクセストークンのサポート
このリリースには、軽量アクセストークンのサポートが含まれています。その結果、指定されたクライアントに対してより小さなアクセストークンを持つことができます。これらのトークンには少数のクレームしか含まれていないため、サイズが小さくなります。軽量アクセストークンは、デフォルトでレルムキーによって署名された JWT であり、依然としていくつかの非常に基本的なクレームが含まれていることに注意してください。
このリリースでは、一部の OIDC プロトコルマッパーで利用可能な **軽量アクセストークンに追加** フラグが導入されています。特定のクレームを軽量アクセストークンに追加するかどうかを指定するには、このフラグを使用します。デフォルトでは **OFF** になっており、ほとんどのクレームは追加されないことを意味します。
また、クライアントポリシーエグゼキューターも存在します。特定のクライアントリクエストが軽量アクセストークンと通常のアクセストークンのどちらを使用するかを指定するには、これを使用します。エグゼキューターの代替手段として、クライアントの高度な設定で **常に軽量アクセストークンを使用する** フラグを使用できます。これにより、そのクライアントは常に軽量アクセストークンを使用するようになります。より柔軟性が必要な場合は、エグゼキューターが代替手段になる可能性があります。たとえば、デフォルトで軽量アクセストークンを使用し、特定の **scope** パラメーターに対してのみ通常のトークンを使用することを選択できます。
以前のリリースでは、**トークンイントロスペクションに追加** スイッチが追加されました。アクセストークンに存在しないクレームをイントロスペクションエンドポイントのレスポンスに追加するために使用します。
貢献してくれた Shigeyuki Kabano 氏に感謝します。また、この機能のヘルプとレビューをしてくれた Takashi Norimatsu 氏に感謝します。
OAuth 2.1 のサポート
このリリースには、オプションの OAuth 2.1 サポートが含まれています。このリリースでは新しいクライアントポリシープロファイルが導入され、管理者クライアントと特定のクライアントリクエストが OAuth 2.1 仕様に準拠していることを確認するために使用できます。機密クライアント用の専用クライアントプロファイルと、パブリッククライアント用の専用プロファイルが存在します。貢献してくれた Takashi Norimatsu 氏と Shigeyuki Kabano 氏に感謝します。
リフレッシュトークンフローで scope パラメーターがサポートされるようになりました
このリリースから、トークンリフレッシュ用の OAuth2/OIDC エンドポイントで **scope** パラメーターがサポートされるようになりました。このパラメーターを使用して、最初に許可されたスコープよりも少ないスコープを持つアクセストークンをリクエストします。これは、アクセストークンスコープを増やすことができないことを意味します。このスコープ制限は、リフレッシュされたリフレッシュトークンのスコープには影響しません。この機能は OAuth2 仕様に記載されているとおりに動作します。貢献してくれた Konstantinos Georgilakis 氏に感謝します。
安全なリダイレクト URI 用のクライアントポリシーエグゼキューター
新しいクライアントポリシーエグゼキューター secure-redirect-uris-enforcer
が導入されました。クライアントが使用できるリダイレクト URI を制限するために使用します。たとえば、クライアントのリダイレクト URI にワイルドカードを含めることができない、特定のドメインからのみである必要がある、OAuth 2.1 に準拠する必要があるなどを指定できます。貢献してくれた Lex Cao 氏と Takashi Norimatsu 氏に感謝します。
DPoP を強制するためのクライアントポリシーエグゼキューター
新しいクライアントポリシーエグゼキューター dpop-bind-enforcer
が導入されました。dpop
プレビューが有効になっている場合、特定のクライアントに対して DPoP を強制するために使用できます。貢献してくれた Takashi Norimatsu 氏に感謝します。
EdDSA のサポート
EdDSA レルムキーを作成し、さまざまなクライアントの署名アルゴリズムとして使用できます。たとえば、これらのキーを使用してトークンに署名したり、署名付き JWT を使用したクライアント認証に使用したりできます。この機能には、Keycloak 自体がサードパーティの ID プロバイダーへの private_key_jwt
認証に使用されるクライアントアサーションに署名するアイデンティティブローカリングが含まれています。貢献してくれた Takashi Norimatsu 氏と Muhammad Zakwan Bin Mohd Zahid 氏に感謝します。
JavaKeystore プロバイダーで EC キーがサポートされるようになりました
レルムキーを提供するプロバイダー JavaKeystoreProvider
が、以前にサポートされていた RSA キーに加えて、EC キーをサポートするようになりました。貢献してくれた Stefan Wiedemann 氏に感謝します。
ID プロバイダーの private_key_jwt 認証を使用する場合に JWT に X.509 サムプリントを追加するオプション
OIDC アイデンティティプロバイダーに、秘密鍵で署名された JWT を使用したクライアント認証を使用する場合に **JWT に X.509 ヘッダーを追加** オプションが追加されました。このオプションは、Azure AD などの一部の ID プロバイダーとの相互運用性に役立ちます。これらの ID プロバイダーは、JWT にサムプリントが存在することを要求します。貢献してくれた MT 氏に感謝します。
OAuth グラントタイプ SPI
Keycloak コードベースには、OAuth グラントタイプ SPI を導入するための内部アップデートが含まれています。このアップデートにより、Keycloak OAuth 2 トークンエンドポイントでサポートされるカスタムグラントタイプを導入する際の柔軟性が向上します。貢献してくれた Dmitry Telegin 氏に感謝します。
CORS の改善
CORS 関連の Keycloak 機能が SPI に抽出され、これにより柔軟性が向上する可能性があります。CorsSPI
は内部であり、今後のリリースで変更される可能性があることに注意してください。貢献してくれた Dmitry Telegin 氏に感謝します。
トラストストアの改善
Keycloak は、トラストストアの構成オプションを改善しました。Keycloak トラストストアは、送信接続、mTLS、データベースドライバーなど、サーバー全体で使用されるようになりました。個々の領域に個別のトラストストアを構成する必要はなくなりました。トラストストアを構成するには、トラストストアファイルまたは証明書をデフォルトの conf/truststores
に配置するか、新しい truststore-paths
構成オプションを使用できます。詳細については、関連する ガイド を参照してください。
バージョン管理された機能
機能がバージョン管理をサポートするようになりました。下位互換性を維持するために、既存のすべての機能 (account2
や account3
を含む) はバージョン 1 としてマークされています。新しく導入された機能はバージョン管理を使用します。つまり、ユーザーは目的の機能のさまざまな実装から選択できます。
詳細については、機能ガイド を参照してください。
SAML アイデンティティプロバイダーの自動証明書管理
SAML アイデンティティプロバイダーは、IDP エンティティメタデータ記述子エンドポイントから署名証明書を自動的にダウンロードするように構成できるようになりました。新しい機能を使用するには、プロバイダーで [メタデータ記述子 URL] オプション (証明書を含む IDP メタデータ情報が公開されている URL) を構成し、[メタデータ記述子 URL を使用] を [ON] に設定します。証明書は、その URL から自動的にダウンロードされ、public-key-storage
SPI にキャッシュされます。証明書は、プロバイダーページの [アクション] コンボを使用して、管理コンソールからリロードまたはインポートすることもできます。
新しいオプションの詳細については、ドキュメント を参照してください。
ロードバランサーのノンブロッキングヘルスチェック
/lb-check
で利用可能な新しいヘルスチェックエンドポイントが追加されました。実行はイベントループで実行されます。つまり、このチェックは、Keycloak がリクエストキューで待機している多くのリクエストを処理する必要がある過負荷状態でも応答性があります。この動作は、たとえば、負荷が高い別のサイトへのフェイルオーバーを回避するために、マルチサイトデプロイメントで役立ちます。エンドポイントは現在、組み込みおよび外部の Infinispan キャッシュの可用性をチェックしています。他のチェックは後で追加される可能性があります。
このエンドポイントはデフォルトでは利用できません。有効にするには、multi-site
機能を指定して Keycloak を実行します。詳細については、機能の有効化と無効化 を参照してください。
Keycloak CR 最適化フィールド
Keycloak CR に startOptimized
フィールドが含まれるようになり、これにより、開始コマンドに --optimized
フラグを使用するかどうかに関するデフォルトの想定をオーバーライドできます。その結果、カスタム Keycloak イメージが使用されている場合でも、CR を使用してビルド時のオプションを構成できます。
拡張されたリバースプロキシ設定
新しい --proxy-headers
オプションを使用することで、Forwarded
または X-Forwarded-*
ヘッダーのいずれかの解析を個別に有効にできるようになりました。詳細については、リバースプロキシガイド を参照してください。元の --proxy
オプションは非推奨となり、今後のリリースで削除される予定です。移行手順については、アップグレードガイド を参照してください。
管理者 API とアカウントコンテキストの両方でのユーザー表現の変更
このリリースでは、ルートユーザー属性 (username
、email
、firstName
、lastName
、locale
など) を、管理者とアカウント REST API の両方を使用する場合にこれらの属性がどのようにマーシャルおよびアンマーシャルされるかを調整するために、基本/抽象クラスに移動してカプセル化しています。
この戦略は、クライアントが属性を管理する方法の一貫性を提供し、レルムに設定されたユーザープロファイル構成に準拠していることを保証します。
詳細については、アップグレードガイド を参照してください。
オフラインセッションとリモートセッションの順次ロード
このリリースから、Keycloak クラスターの最初のメンバーは、リモートセッションを並行ではなく順次ロードします。オフラインセッションのプリロードが有効になっている場合は、それらも順次ロードされます。
詳細については、アップグレードガイド を参照してください。
別の認証済みユーザーの代わりにアクションを実行することはできなくなりました
このリリースでは、ユーザーがすでに認証されており、アクションが別のユーザーにバインドされている場合、メール検証などのアクションを実行できなくなりました。たとえば、ユーザーはメールリンクが別のアカウントにバインドされている場合、検証メールフローを完了できません。
メール検証フローの変更
このリリースでは、ユーザーがメールを検証するためのリンクをたどろうとして、メールが以前に検証されている場合、適切なメッセージが表示されます。
それに加えて、新しいエラー (EMAIL_ALREADY_VERIFIED
) イベントが、すでに検証済みのメールを検証しようとした試行を示すために発生します。このイベントを使用して、リンクが漏洩した場合のユーザーアカウントのハイジャックの可能性を追跡したり、ユーザーがアクションを認識しない場合にユーザーに警告したりできます。
非推奨のオフラインセッションプリロード
Keycloak のデフォルトの動作は、オンデマンドでオフラインセッションをロードすることです。起動時にプリロードする古い動作は非推奨になりました。これは、起動時にプリロードすると、セッション数の増加に対応して適切にスケールせず、Keycloak のメモリ使用量が増加するためです。古い動作は今後のリリースで削除される予定です。
詳細については、アップグレードガイド を参照してください。
メモリ内のオフラインセッション寿命オーバーライドの構成オプション
メモリ要件を削減するために、Infinispan キャッシュにインポートされたオフラインセッションの寿命を短縮するための構成オプションを導入しました。現在、オフラインセッションの寿命オーバーライドはデフォルトで無効になっています。
詳細については、サーバー管理ガイド を参照してください。
Infinispan メトリクスはキャッシュマネージャーとキャッシュ名にラベルを使用するようになりました
Keycloak の組み込みキャッシュのメトリクスを有効にすると、メトリクスはキャッシュマネージャーとキャッシュ名にラベルを使用するようになりました。
詳細については、アップグレードガイド を参照してください。
ユーザー属性値の長さの拡張
このリリース以降、Keycloak は、以前は制限されていた 255 文字を超えるユーザー属性値の保存と検索をサポートします。
詳細については、アップグレードガイド を参照してください。
ブルートフォース保護の変更
ブルートフォース保護にいくつかの機能強化が加えられました。
-
OTP またはリカバリーコードを使用した認証の試行がブルートフォース保護のために失敗した場合、アクティブな認証セッションは無効になります。そのセッションで認証をさらに試行すると失敗します。
-
以前のバージョンの Keycloak では、管理者は、アカウントへのブルートフォース攻撃のためにユーザーを一時的または永続的に無効にするかを選択する必要がありました。管理者は、指定された回数の一時的なロックアウトの後、ユーザーを永続的に無効にできるようになりました。
-
プロパティ
failedLoginNotBefore
がbrute-force/users/{userId}
エンドポイントに追加されました。
承認ポリシー
以前のバージョンの Keycloak では、ユーザー、グループ、またはクライアントポリシーの最後のメンバーが削除されると、そのポリシーも削除されていました。残念ながら、ポリシーが集約ポリシーで使用されている場合、これは権限のエスカレーションにつながる可能性がありました。権限のエスカレーションを回避するために、エフェクトポリシーは削除されなくなり、管理者はそれらのポリシーを更新する必要があります。
Keycloak CR cache-config-file オプション
Keycloak CR では、cache
スペックの configMapFile
フィールドを使用して、cache-config-file
オプションを指定できるようになりました。例:
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
...
cache:
configMapFile:
name: my-configmap
key: config.xml
Keycloak CR リソースオプション
Keycloak CR では、Keycloak コンテナーのコンピューティングリソースを管理するための resources
オプションを指定できるようになりました。Keycloak CR を介してメインの Keycloak デプロイメントのリソースを個別に要求および制限し、Realm Import CR を介してレルムインポートジョブのリソースを個別に要求および制限する機能を提供します。
値が指定されていない場合、デフォルトの requests
メモリは 1700MiB
に設定され、limits
メモリは 2GiB
に設定されます。
要件に基づいてカスタム値を指定できます。例:
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: example-kc
spec:
...
resources:
requests:
cpu: 1200m
memory: 896Mi
limits:
cpu: 6
memory: 3Gi
詳細については、Operator の高度な構成 を参照してください。
一時的なロックアウトログがイベントに置き換えられました
ブルートフォースプロテクターによってユーザーが一時的にロックアウトされた場合に、新しいイベント USER_DISABLED_BY_TEMPORARY_LOCKOUT
が発生するようになりました。新しいイベントが構造化された形式で情報を提供するため、ID KC-SERVICES0053
のログは削除されました。
詳細については、アップグレードガイド を参照してください。
Cookie のアップデート
Cookie 処理コードがリファクタリングおよび改善され、新しい Cookie プロバイダーが含まれています。これにより、Keycloak によって処理される Cookie の一貫性が向上し、必要に応じて Cookie に関する構成オプションを導入する機能が提供されます。
NameID の SAML ユーザー属性マッパーで有効な NameID 形式のみが提案されるようになりました
NameID のユーザー属性マッパーでは、[Name ID 形式] オプションを次の値に設定できました。
-
urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName
-
urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName
-
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
-
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
ただし、Keycloak はこれらの NameIDPolicy
のいずれかを含む AuthnRequest
ドキュメントの受信をサポートしていないため、これらのマッパーが使用されることはありませんでした。サポートされているオプションは、次の Name ID 形式のみを含むように更新されました。
-
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
-
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
-
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
-
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
コンテナ内で実行する場合の異なる JVM メモリ設定
Keycloak は、初期ヒープサイズと最大ヒープサイズにハードコードされた値を指定する代わりに、コンテナの総メモリに対する相対値を使用します。JVM オプション -Xms
と -Xmx
は、-XX:InitialRAMPercentage
と -XX:MaxRAMPercentage
に置き換えられました。
メモリ消費量に大きな影響を与える可能性があるため、特定のアクションの実行が必要になる場合があります。 |
詳細については、アップグレードガイド を参照してください。
GELF ログハンドラーは非推奨になりました
GELF との統合を提供する 基盤となるライブラリ のサポート終了に伴い、Keycloak は GELF ログハンドラーをすぐにサポートしなくなります。この機能は今後のリリースで削除される予定です。外部ログ管理が必要な場合は、ファイルログ解析の使用を検討してください。
マルチサイトアクティブ/パッシブデプロイメントのサポート
複数の独立したサイトに Keycloak をデプロイすることは、高可用性と障害からの迅速な復旧を提供するために、一部の環境では不可欠です。このリリースでは、Keycloak のアクティブ/パッシブデプロイメントをサポートしています。
開始するには、クラウド環境に高可用性 Keycloak をデプロイするための包括的なブループリントも含まれている 高可用性ガイド を使用してください。
Keycloak 23.0.0
OpenID Connect / OAuth 2.0
FAPI 2 ドラフトのサポート
Keycloak には、新しいクライアントプロファイル fapi-2-security-profile
と fapi-2-message-signing
があり、クライアントと通信する際に Keycloak が最新の FAPI 2 ドラフト仕様への準拠を確実に強制します。貢献してくれた Takashi Norimatsu 氏に感謝します。
DPoP プレビューサポート
Keycloak には、OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP) のサポートのプレビューがあります。貢献してくれた Takashi Norimatsu 氏と Dmitry Telegin 氏に感謝します。
イントロスペクションエンドポイントの柔軟性の向上
以前のバージョンでは、イントロスペクションエンドポイントは、アクセストークンで利用可能なほとんどのクレームを自動的に返していました。現在、ほとんどのプロトコルマッパーには、新しい [トークンイントロスペクションに追加] スイッチが含まれています。この追加により、イントロスペクションエンドポイントはアクセストークンとは異なるクレームを返すことができるため、柔軟性が向上します。この変更は、「軽量アクセストークン」サポートへの第一歩です。アクセストークンは、イントロスペクションエンドポイントによって依然として返される多くのクレームを省略できるためです。以前のバージョンから移行する場合、イントロスペクションエンドポイントはアクセストークンから返されるのと同じクレームを返す必要があるため、移行後もデフォルトでは動作は実質的に同じである必要があります。貢献してくれた Shigeyuki Kabano 氏に感謝します。
OAuth 2.0 デバイス認証グラントフローの機能フラグ
OAuth 2.0 デバイス認証グラントフローに機能フラグが含まれるようになり、この機能を簡単に無効にできます。この機能はデフォルトで有効になっています。貢献してくれた Thomas Darimont 氏に感謝します。
認証
パスキーのサポート
Keycloak には、パスキー のプレビューサポートがあります。
パスキーの登録と認証は、WebAuthn の機能によって実現されます。したがって、Keycloak のユーザーは、既存の WebAuthn 登録と認証によってパスキーの登録と認証を行うことができます。
同期されたパスキーとデバイスバインドされたパスキーの両方を、同一デバイス認証とクロスデバイス認証の両方に使用できます。ただし、パスキー操作の成功は、ユーザーの環境によって異なります。環境 でどの操作が成功するかを確認してください。貢献してくれた Takashi Norimatsu 氏に感謝します。また、この機能のアイデアとテストを手伝ってくれた Thomas Darimont 氏に感謝します。
WebAuthn の改善
WebAuthn ポリシーに新しいフィールド Extra Origins
が含まれています。これにより、Web 以外のプラットフォーム (ネイティブモバイルアプリケーションなど) との相互運用性が向上します。貢献してくれた Charley Wu 氏に感謝します。
すでにログインしています
このリリースでは、ユーザーが複数のブラウザータブでログインページを開いていて、1 つのブラウザータブで認証した場合の問題に対処しています。ユーザーが別のブラウザータブで認証しようとすると、「すでにログインしています」というメッセージが表示されます。これは改善され、最初のタブで認証した後、他のブラウザータブがユーザーを自動的に認証するようになりました。ただし、さらなる改善が必要です。たとえば、認証セッションが期限切れになり、1 つのブラウザータブで再開された場合、他のブラウザータブは自動的にログインに追従しません。
最大認証時間を指定するためのパスワードポリシー
Keycloak は、ユーザーが再認証なしにパスワードを変更できる認証の最大有効期間を指定できる新しいパスワードポリシーをサポートしています。このパスワードポリシーが 0 に設定されている場合、ユーザーはアカウントコンソールまたは他の方法でパスワードを変更するために再認証する必要があります。デフォルト値の 5 分よりも短いまたは長い値を指定することもできます。貢献してくれた Thomas Darimont 氏に感謝します。
デプロイメント
マルチサイトアクティブ/パッシブデプロイメントのプレビューサポート
複数の独立したサイトに Keycloak をデプロイすることは、高可用性と障害からの迅速な復旧を提供するために、一部の環境では不可欠です。このリリースでは、Keycloak のアクティブ/パッシブデプロイメントのプレビューサポートが追加されています。
負荷を維持し、障害シナリオから回復できるセットアップのテストと検証に多くの労力が費やされてきました。開始するには、クラウド環境に高可用性 Keycloak をデプロイするための包括的なブループリントも含まれている 高可用性ガイド を使用してください。
アダプター
OpenID Connect WildFly および JBoss EAP
以前のバージョンで非推奨になった WildFly および JBoss EAP 用の OpenID Connect アダプターが、このリリースで削除されました。これは、WildFly に含まれており、Keycloak アダプターからのシームレスな移行を提供する Elytron OIDC アダプターに置き換えられます。
SAML WildFly および JBoss EAP
WildFly および JBoss EAP 用の SAML アダプターは、ZIP ダウンロードとして配布されなくなり、Galleon フィーチャーパックとして配布されるため、インストールがより簡単かつシームレスになります。
詳細については、アプリケーションのセキュリティ保護ガイド を参照してください。
サーバー配布
ロードシェディングのサポート
Keycloak に、高負荷時に着信リクエストを適切に拒否できるようにする http-max-queued-requests
オプションが追加されました。詳細については、プロダクションガイド を参照してください。
RESTEasy Reactive
Keycloak は RESTEasy Reactive に切り替えました。quarkus-resteasy-reactive
を使用するアプリケーションは、リアクティブスタイル/セマンティクスを使用していなくても、起動時間の短縮、ランタイムパフォーマンスの向上、およびメモリフットプリントの削減の恩恵を受けるはずです。JAX-RS API に直接依存する SPI は、この変更と互換性があるはずです。ResteasyClientBuilder
を含む RESTEasy Classic に依存する SPI は互換性がなく、更新が必要になります。この更新は、Jersey のような JAX-RS API の他の実装にも必要になります。
ユーザープロファイル
宣言型ユーザープロファイルは、このリリースでもプレビュー機能ですが、サポートされている機能に昇格させるために懸命に取り組んでいます。フィードバックをお待ちしております。問題が見つかった場合や改善案がある場合は、Github issue を作成してください。理想的には area/user-profile
ラベルを付けてください。このリリースの移行変更に関する追加情報については、アップグレードガイド を確認することもお勧めします。
グループのスケーラビリティ
多数のグループとサブグループを使用するユースケースで、グループの検索に関するパフォーマンスが向上しました。サブグループのページネーションルックアップを可能にする改善があります。貢献してくれた Alice 氏に感謝します。
Keycloak 22.0.3
テンプレートを介してユーザーを登録または更新する際のセキュリティ脆弱性
セキュリティ脆弱性が Keycloak 22.0.2 で導入されました。22.0.2 へのアップグレードは強くお勧めしません。また、22.0.2 を本番環境にデプロイした場合は、すぐに 22.0.3 にアップグレードしてください。
Keycloak が 22.0.2 にアップグレードされた後に自己登録したユーザーの場合、パスワードは安全に保存されておらず、Keycloak の管理者に公開される可能性があります。これは、アップグレードがロールアウトされた後に登録したユーザーにのみ影響し、以前に登録したユーザーには影響しません。
プレビュー宣言型ユーザープロファイルを使用しているレルムは、この問題の影響を受けず、デフォルトのユーザープロファイルプロバイダーを使用しているレルムのみが影響を受けます。
デプロイメントに影響を受けるユーザーがいるかどうかを特定するには、データベースにアクセスし、次の SQL ステートメントを実行してクエリできます。
SELECT DISTINCT U.ID, U.USERNAME, U.EMAIL, U.REALM_ID FROM USER_ENTITY U
INNER JOIN USER_ATTRIBUTE UA ON U.ID = UA.USER_ID
WHERE UA.NAME IN ('password','password-confirm')
影響を受けるユーザーに連絡し、パスワード更新必須アクションを追加することをお勧めします。
影響を受けるユーザーがいる場合は、次の SQL ステートメントを実行して、これらの属性をデータベースから削除することもお勧めします。
DELETE FROM USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
22.0.2 リリース以降にデータベースのバックアップが実行され、影響を受けるユーザーがいる場合は、これらを削除することをお勧めします。
カスタムユーザーストレージプロバイダー
カスタムユーザーストレージフェデレーションプロバイダーを使用したデプロイメントも、プロバイダーが Keycloak にユーザー属性の保存を委任している場合は影響を受ける可能性があります。カスタムユーザーストレージを確認して、これが問題かどうかを特定してください。
デプロイメントに影響を受けるフェデレーションユーザーがいるかどうかを特定するには、データベースにアクセスし、次の SQL ステートメントを実行してクエリできます。
SELECT DISTINCT USER_ID,REALM_ID,STORAGE_PROVIDER_ID FROM FED_USER_ATTRIBUTE
WHERE NAME IN ('password','password-confirm')
影響を受けるフェデレーションユーザーがいる場合は、次の SQL ステートメントを実行して、これらの属性をデータベースから削除することもお勧めします。
DELETE FROM FED_USER_ATTRIBUTE UA WHERE UA.NAME IN ('password','password-confirm')
カスタムユーザーストレージプロバイダーが属性自体を管理している場合は、カスタムストレージを確認して、password
属性と password-confirm
属性を削除する必要があります。
Keycloak 22.0.0
サーバー配布
Java 11 のサポートが削除されました
Java 11 で Keycloak サーバーを実行することは、サポートされなくなりました。Java 11 は Keycloak 21 で非推奨となり、Keycloak 22 で削除される計画が発表されました。
Quarkus 3.x へのアップグレード
Keycloak は、Quarkus Java フレームワークのバージョン 3.2.0.Final にアップグレードしました。Quarkus 3.x は、最新テクノロジーで最先端のユーザーエクスペリエンスを提供し、迅速な動きで Java 開発を推進するという伝統を継続しています。
Hibernate ORM 6 へのアップグレード
Keycloak は Hibernate ORM 6.2 へのアップグレードの恩恵を受けます。これには、パフォーマンスの向上、SQL の改善、最新の JDK サポート、および最新の RDBMS 機能のサポートが含まれます。
KeyStore Config Source の追加
KeyStore Vault のニュースに関連して、Quarkus が最近リリースした KeyStore Config Source という機能も統合しました。これは、既存の設定ソース (CLI パラメーター、環境変数、ファイル) に加えて、Java キーストアファイルに保存された設定プロパティを介して Keycloak サーバーを設定できるようになったことを意味します。この機能の詳細については、設定ガイドを参照してください。
管理コンソール
アカウントコンソール v3 のプレビューへの昇格
Keycloak のバージョン 21.1.0 では、新しいアカウントコンソール (バージョン 3) が実験的な機能として導入されました。このバージョンから、プレビュー機能に昇格しました。
アカウントコンソールテンプレート変数の削除
アカウントコンソール V2 および V3 テンプレートに公開されていた 2 つの変数 (isEventsEnabled
および isTotpConfigured
) は未使用のまま残されており、このリリースで削除されました。
開発者がアカウントコンソールのテーマを拡張した場合、これらの変数を使用していた可能性があります。基本テーマを拡張している場合は、これらの変数が使用されていないことを確認してください。
カスタム管理コンソールメッセージの変更
管理コンソール (および間もなく新しいアカウントコンソールも) は、国際化されたメッセージのキーの解析方法に関して、Keycloak の他の部分とはわずかに異なる動作をします。これは、国際化に i18next ライブラリを使用しているためです。したがって、「レルム設定」➡「ローカライゼーション」で管理コンソール用のカスタムメッセージを定義する場合は、i18next のベストプラクティスを考慮する必要があります。具体的には、管理コンソール用のメッセージを定義する場合は、メッセージのキーに名前空間を指定することが重要です。
たとえば、新しいレルムが作成されたときにユーザーに表示されるwelcome
メッセージを上書きしたいと仮定します。このメッセージは、メッセージを保持する元のファイルの名前 (dashboard.json
) と同じ、dashboard
名前空間にあります。このメッセージを上書きする場合は、名前空間をプレフィックスとして使用し、その後にコロンで区切られたメッセージのキーを使用する必要があります。この場合は dashboard:welcome
になります。
JavaScript アダプター
レガシー Promise API の削除
このリリースで、Keycloak JS アダプターからレガシー Promise API メソッドを削除しました。これは、アダプターから返された promises で .success()
および .error()
を呼び出すことができなくなったことを意味します。
new
演算子でのインスタンス化が必須
以前のリリースでは、Keycloak JS アダプターが new
演算子なしで構築された場合、非推奨の警告を積極的にログに記録し始めました。このリリース以降、そうすると代わりに例外がスローされます。これは、JavaScript クラスの期待される動作と一致させるためであり、将来のアダプターのリファクタリングを可能にします。
Admin API
Operator
k8s.keycloak.org/v2alpha1 の変更
keycloak.status に追加フィールドが追加され、Keycloak をスケーラブルなリソースとして容易に利用できるようになりました。また、status をより解釈しやすくする追加フィールド (observedGeneration および condition observedGeneration、lastTransitionTime フィールドなど) もあります。
condition status フィールドは、標準の Kubernetes condition に準拠するために、ブール値から文字列に変更されました。CRD では、一時的に任意の内容を受け入れるように表現されますが、常に文字列のみになります。このフィールドの使用箇所はすべて、「True」、「False」、または「Unknown」の値 (true または false ではなく) を予期するように更新してください。
Identity Brokering
OpenID Connect アイデンティティプロバイダーにおける必須クレーム設定
OpenID Connect アイデンティティプロバイダーは、アイデンティティプロバイダーによって発行された ID トークンに特定のクレームが含まれている必要があることを指定する新しい設定をサポートしています。そうでない場合、ユーザーはこのブローカーを介して認証できません。
このオプションはデフォルトで無効になっています。有効にすると、フィルタリングする JWT トークンクレームの名前と、一致させる値を指定できます (正規表現形式をサポート)。
OpenID Connect プロバイダーでの JWE 暗号化 ID トークンと UserInfo レスポンスのサポート
OpenID Connect プロバイダーは、ID トークンと UserInfo レスポンスのJson Web Encryption (JWE)をサポートするようになりました。プロバイダーは、選択された暗号化アルゴリズムに対して定義されたレルムキーを使用して復号化を実行します。
Keycloak 21.1.0
モノレポ
以前は、Keycloak は複数の GitHub リポジトリにわたって管理されていました。
複数のリポジトリを持つことは、多くの複雑さと手間をもたらしました。たとえば、1 回の変更で複数のプルリクエストを異なるリポジトリに送信する必要があることがよくありました。
物事を簡素化するために、すべてをメインリポジトリに移行しました。
実験的アカウントコンソールバージョン 3
アカウントコンソールバージョン 3 が、Keycloak の実験的な機能として利用できるようになりました。このバージョンは、「ユーザープロファイル」機能で作成されたカスタムフィールドをサポートしています。試用して早期フィードバックを提供したい場合は、次のように有効にできます。
bin/kc.sh start-dev --features=account3
Keycloak Java ベースのアダプターにおける Keycloak Authorization Services サポートの変更
非推奨アダプターの削除の一環として、Keycloak Policy Enforcer がアダプターのコードベースから個別の依存関係に抽出されました。
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-policy-enforcer</artifactId>
<version>21.1.0</version>
</dependency>
この依存関係を提供することにより、ポリシーエンフォーサーをお好みの Java スタックと統合できるようにすることを期待しています。
また、Wildfly Elytron で保護された Jakarta アプリケーションでポリシーエンフォーサーを有効にするための組み込みサポートも提供します。
現時点では、クイックスタートとドキュメントをまだ作成中のため、この依存関係はまだ GA ではありません。
この作業は、非推奨のアダプターを使用している既存のアプリケーションには影響を与えないはずです。= デフォルトで利用可能な Javascript エンジン
以前のバージョンでは、Keycloak を Java 17 で Javascript プロバイダーとともに使用する場合、Nashorn javascript エンジンをディストリビューションに追加する必要がありました。Nashorn javascript エンジンは Keycloak サーバーでデフォルトで利用できるようになったため、これは不要になりました。
Keycloak 21.0.0
古い管理コンソールの削除
Keycloak 19 では、新しい管理コンソールが新しいデフォルトの管理コンソールに昇格し、古い管理コンソールは非推奨になりました。このリリースでは、古い管理コンソールは完全に削除されました。
Keycloak はメトリクスに Micrometer を使用
Keycloak は、Prometheus 形式でメトリクスをエクスポートするオプションのメトリクスエンドポイントを提供します。このリリースでは、このデータを提供する実装が SmallRye から Micrometer に切り替えられました。この変更により、メトリクスは名前が変更されました。
詳細については、移行ガイドを参照してください。
Keycloak サーバーの Java 11 サポートの非推奨
Java 11 で Keycloak サーバーを実行することは非推奨となり、Keycloak 22 で削除される予定です。
アダプターは、Java 8、Java 11、および Java 17 で引き続きサポートされています。ただし、そう遠くない将来に Java 8 のサポートを削除する予定です。
SAML SP メタデータの変更
このリリースより前は、SAML SP メタデータには署名と暗号化の両方の用途に同じキーが含まれていました。このバージョンの Keycloak 以降では、SP メタデータでの暗号化用途には暗号化を目的としたレルムキーのみを含めます。各暗号化キー記述子について、使用されるべきアルゴリズムも指定します。次の表に、サポートされている XML-Enc アルゴリズムと Keycloak レルムキーへのマッピングを示します。詳細については、アップグレードガイドを参照してください。
XML-Enc アルゴリズム |
Keycloak レルムキーアルゴリズム |
RSA-OAEP |
|
RSA1_5 |
ユーザーセッションプロバイダーからの非推奨メソッドの削除
いくつかの非推奨メソッドがユーザーセッションプロバイダーから削除されました。まだ行っていない場合は、それらの使用箇所を Keycloak 20 リリースの Javadoc に記載されている対応する代替に置き換える必要があります。詳細については、アップグレードガイドを参照してください。
新しいストレージ: IS_CLIENT_ROLE
検索可能フィールドの非推奨
RoleModel
の IS_CLIENT_ROLE
検索可能フィールドは非推奨になりました。EXISTS
または NOT_EXISTS
演算子で使用される CLIENT_ID
検索可能フィールドに置き換える必要があります。詳細については、Keycloak 21 の JavaDoc を参照してください。
FIPS 140-2 プレビューサポート
以前のリリースで実験的であった Keycloak の FIPS 140-2 サポートが、プレビューに昇格しました。このプレビューバージョンを作成するために多くの修正と改善が行われました。詳細については、FIPS ドキュメントを参照してください。フィードバックをお待ちしております。
この機能に多大なご協力をいただいた David Anderson、Sudeep Das、および Isaac Jensen に改めて感謝いたします。
リバースプロキシの背後で実行する場合の標準 Forwarded
ヘッダーのサポート
リクエストのパスにプロキシサーバーが関与している場合に、プロキシによって追加された情報が変更または失われるのを防ぐために、非標準の X-Forwarded-*
を認識することに加えて、Keycloak は同じ目的で標準の Forwarded
ヘッダーを活用できるようになりました。
詳細については、リバースプロキシの使用ガイドを参照してください。
プロキシが Keycloak ノードへのリクエストを行うときに、Forwarded
ヘッダーもオーバーライドしていることを確認してください。
コンテナイメージが ubi9-micro ベースに
セキュリティを強化するために、Keycloak コンテナイメージは 2 つの方法で変更されました。1 つ目は、UBI8 ではなく UBI9 ベースになったことです。2 つ目は、以前に使用されていた -minimal
ではなく、-micro
に切り替えたことです。
UBI9 への変更は、ほとんどのユーザーに影響を与えません。まれに、glibc エラー CPU does not support x86-64-v2 が表示される場合があります。x86-64-v2
は 2009 年以降のプロセッサから利用可能です。仮想化環境が誤って構成されている場合に、この問題が発生する可能性が最も高くなります。
-minimal
から -micro
への変更は、より大きな影響を与える可能性があります。イメージに簡単なカスタマイズを加えるユーザーは違いに気付かないでしょうが、RPM をインストールするユーザーは、その方法を変更する必要があります。コンテナ内での Keycloak の実行ガイドが更新され、その方法が示されています。
これらの変更の結果、Keycloak コンテナイメージに影響を与える既知の CVE が 82% 削減されました!
その他の改善点
-
クライアント登録アクセストークンローテーションを無効にするオプション。 Réda Housni Alaoui に感謝します。
Keycloak 20.0.0
WildFly ディストリビューションの削除
Keycloak 17.0.0 では、新しい Quarkus ベースの Keycloak ディストリビューションが導入され、WildFly ベースのディストリビューションは非推奨になりました。このリリースでは、WildFly ディストリビューションは削除され、サポートされなくなりました。
WildFly ディストリビューションをまだ使用している場合は、できるだけ早く Quarkus ディストリビューションに移行することを強くお勧めします。詳細については、移行ガイドを参照してください。
新しい Keycloak Operator のアップグレード
Quarkus ベースのディストリビューション用の新しい Keycloak Operator がプレビュー機能ではなくなったことを発表できてうれしく思います。いくつかの機能追加と多数の改善を行いましたが、その一部は破壊的な変更をもたらしました。
Realm Operator
新しい Operator には現在、一部の CR (クライアントやユーザーなど) が欠落しているため、Realm Operator の形式で一時的な回避策を導入しています。詳細については、GitHub リポジトリを参照してください。また、「Keycloak Operator CR の将来」ブログ記事も参照してください。
サポートされている OpenJDK バージョン
Keycloak は、サーバーとアダプターの両方で OpenJDK 17 をサポートするようになりました。
WildFly ベースのディストリビューションの削除により、OpenJDK 8 で Keycloak サーバーを実行するためのサポートはなくなりました。また、Keycloak 21 で OpenJDK 8 の Keycloak アダプターのサポートを削除する予定です。
Keycloak 22 以降では、最新の OpenJDK LTS リリースのみをサポートし、最新の OpenJDK リリースも迅速にサポートすることを目指しています。つまり、Keycloak 22 では Keycloak サーバーの OpenJDK 11 サポートも削除する予定です。
ホスト名プロバイダーが完全なベース URL の設定をサポート
このリリースでは、フロントエンドリクエストと管理コンソールのベース URL を設定するための 2 つの追加サーバーオプションを導入しています。
-
hostname-url
-
hostname-admin-url
詳細については、ホスト名の設定ガイドを参照してください。
Windows で Keycloak を実行する場合の kc.bat
の改善
このリリースでは、Linux で実行する場合と同じエクスペリエンスを提供するために、kc.bat
に重要な変更を加えています。
組み込み H2 データベースのアップグレード
Keycloak は、開発目的で H2 データベースドライバーを同梱しています。これは開発目的のみを意図しているため、本番環境では絶対に使用しないでください。
このリリースでは、H2 ドライバーがバージョン 1.x からバージョン 2.x にアップグレードされました。
Keycloak JavaScript アダプターをホストするためのフィーチャーガード
アプリケーションは、keycloak.js
を Keycloak サーバーから直接ロードできます。JavaScript ライブラリをこの方法でロードすることはベストプラクティスとは見なされないため、この機能を無効にできるフィーチャーガードが追加されました。
Keycloak 21 では、このオプションを非推奨とし、Keycloak 22 では、Keycloak サーバーから keycloak.js
をロードする機能を完全に削除する予定です。
OTP Application SPI
以前のリリースでは、ユーザーに表示される OTP アプリケーションのリストは Keycloak にハードコードされていました。OTP Application SPI の導入により、組み込みの OTP アプリケーションを無効にしたり、カスタム OTP アプリケーションを追加したりすることが可能になりました。
カスタムアイデンティティプロバイダーがプロバイダーのアイコンを設定可能に
カスタムアイデンティティプロバイダーが、ログインページで使用されるアイコンを設定できるようになりました。Klaus Betz に感謝します。彼はAppleID でのログインをサポートする Keycloak の拡張機能もメンテナンスしています。
FIPS 140-2 実験的サポート
FIPS 140-2 対応環境への Keycloak のデプロイに対する実験的サポートが追加されました。試用方法の詳細を記載したブログ投稿が、リリース直後に公開される予定です。フィードバックをお待ちしております。
この機能の一部に貢献してくれた David Anderson に感謝します。また、インスピレーションとして使用された最初のプロトタイプ作成の努力をしてくれた Sudeep Das と Isaac Jensen にも感謝します。
属性によるグループの検索
Admin REST API を介して属性でグループを検索できるようになりました。この貢献をしてくれた Alice に感謝します。
アカウントコンソールでのグループメンバーシップの表示
ユーザーがアカウントコンソールで自分のグループメンバーシップを表示できるようにすることが可能になりました。この貢献をしてくれた cgeorgilakis に感謝します。
データプロバイダーおよびモデルからの非推奨メソッドの削除
いくつかの非推奨メソッドがデータプロバイダーおよびモデルから削除されました。まだ行っていない場合は、それらの使用箇所を Keycloak 19 リリースの Javadoc に記載されている対応する代替に置き換える必要があります。詳細については、アップグレードガイドを参照してください。
Keycloak 19.0.0
OpenID Connect および SAML アダプターの寿命終了
一部の Keycloak OpenID Connect アダプターは寿命が尽き、このリリースには含まれていません。
Fuse 6 および 7 (OpenID Connect)
Keycloak は、Fuse 6 または 7 のアダプターを提供しなくなります。Fuse 用のアダプターが必要な場合は、Red Hat Single Sign-On 7.x アダプターを利用してください。
JBoss AS 7 および EAP 6 (OpenID Connect および SAML)
JBoss AS 7 は非常に長い間メンテナンスされていません。JBoss AS 7 をまだ使用している場合は、WildFly に移行し、WildFly のネイティブ OIDC サポートを活用することをお勧めします。
Red Hat JBoss Enterprise Application Platform 6.x を使用している Red Hat のお客様は、Red Hat Single Sign-On 7.x アダプターを使用する必要があります。これらは Keycloak サーバーと組み合わせて使用できます。
Jetty 9.2 および 9.3 (OpenID Connect および SAML)
Jetty 9.2 は 2018 年に寿命を迎え、Jetty 9.3 は 2020 年に寿命を迎えました。これらのバージョンをまだ使用している場合は、できるだけ早く Jetty 9.4 にアップグレードすることをお勧めします。
Spring Boot 1 (OpenID Connect)
Spring Boot 1.x は 2019 年に寿命を迎えました。Spring Boot 1 をまだ使用している場合は、できるだけ早く Spring Boot 2 にアップグレードすることをお勧めします。
WildFly レガシーセキュリティレイヤー (OpenID Connect および SAML)
WildFly 25 では、レガシーセキュリティレイヤーが削除され、今後は Elytron のみがサポートされます。古いバージョンの WildFly を使用している場合は、アップグレードして WildFly のネイティブ OIDC サポートを活用することをお勧めします。
Red Hat JBoss Enterprise Application Platform 7.x を使用している Red Hat のお客様は、Red Hat Single Sign-On 7.x アダプターを使用する必要があります。これらは Keycloak サーバーと組み合わせて使用できます。
Keycloak ストレージの変更
Keycloak ストレージが変更されており、現在のストレージは引き続きサポートされていますが、最終的には真新しい実装に置き換えられます。この変更により、クラウドネイティブストレージのサポート、ダウンタイムなしの機能、ユーザー以外の追加領域のカスタムストレージの実装のサポートが向上します。
これは、現在のストアのサポートされている機能のいくつかの深い変更が *レガシー* 機能になることを意味します。レガシーストアと新しいストアを同時に使用することはできません。一度にアクティブにできるストアは 1 つだけです。
最も目に見える変更は、User Storage SPI が新しいストレージ API である Map Storage API と互換性がないことです。したがって、User Storage SPI はレガシーストアで非推奨となり、keycloak-model-legacy
という別のモジュールに移動します。この変更は、特にユーザーフェデレーションおよびカスタムユーザープロバイダーに関連する領域など、いくつかの領域に影響を与えます。
さらに、API が統合され、ストレージレイヤーの詳細は REST サービスレイヤーに対して透過的になります。具体的には、サービスはキャッシュされたオブジェクトとキャッシュされていないオブジェクトを区別したり、フェデレーションストレージとローカルストレージを明確に区別したりできなくなります。
したがって、KeycloakSession
メソッドを介してローカルストレージまたはキャッシュ内のオブジェクトにアクセスするカスタム拡張機能は、見直す必要があります。詳細については、アップグレードガイドを参照してください。
OIDC ログアウトの変更
以前のリリースでは、OIDC ログアウトのサポートを追加しました。このリリースには、他のいくつかの修正と改善が含まれています。ハイライトは次のとおりです。
-
OIDC RP-Initiated Logout 仕様の最新ドラフトで追加された
client_id
パラメーターのサポート。その結果、ログアウト確認画面を表示するためにクライアントの同意が必要
フラグを使用する必要はなくなりました。 -
OIDCクライアントに
Valid Post Logout Redirect URIs
設定オプションが追加されました。この変更はOIDC仕様に準拠しており、ログイン後とログアウト後のリダイレクトで異なるリダイレクトURIセットを使用できるようになります。Valid Post Logout Redirect URIs
に+
を使用すると、ログアウト時にValid Redirect URIs
オプションで指定されたリダイレクトURIセットと同じものが使用されます。この変更は、旧バージョンからの移行時のデフォルトの動作とも一致しており、後方互換性も維持されます。
詳細については、サーバー管理ガイドをご覧ください。
メールワークフローの更新
新しいプレビュー機能であるUPDATE_EMAIL
が追加されました。この機能を有効にし、レルムで対応するフラグを有効にすると、ユーザーは新しいメールアドレスに送信されるリンクをクリックして、メールアドレスの更新を確認する必要があります。詳細については、サーバー管理ガイドをご覧ください。貢献者のRéda Housni Alaoui氏に感謝いたします。
レガシーKeycloak OperatorでのpodDisruptionBudget
の非推奨化
今回のリリースでは、レガシーKeycloak OperatorのKeycloak CRにあるpodDisruptionBudget
フィールドを非推奨としました。Kubernetesバージョン1.25以降にOperatorをデプロイする場合、このオプションフィールドは無視されます。
回避策として、クラスター内にPod Disruption Budgetを手動で作成できます。例:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
labels:
app: keycloak
name: keycloak
spec:
maxUnavailable: 1
selector:
matchLabels:
component: keycloak
Kubernetesドキュメントも参照してください。
集中ロギングの初期サポート
バージョン19以降、KeycloakはGELFを使用して、ELK、EFK、Graylogなどの集中ロギングソリューションにログを送信することを標準でサポートしています。
すぐに使用を開始するためのドキュメントと例は、ロギングガイドにあります。
Keycloak 18.0.0
新しいOperatorプレビュー
今回のリリースでは、真新しいKeycloak Operatorをプレビューとして導入します。レガシーOperatorから全面的に書き直されただけでなく、主なユーザー向け変更点は、使用されるKeycloakディストリビューションです。新しいOperatorはQuarkus版のKeycloakを使用します。それに伴い、API(カスタムリソース定義の形式)が変更されました。インストールと移行の手順を含む詳細については、Operator関連ガイドをご覧ください。
レガシーOperatorは、Keycloak WildFlyディストリビューションがEOLを迎えるKeycloak 20までアップデートを受け取ります。
新しい管理コンソールプレビュー
新しい管理コンソールがプレビューに移行し、Keycloak 19でデフォルトの管理コンソールになる予定です。
新しいコンソールに関する問題や改善提案がありましたら、GitHub Discussionsを通じてお知らせください。
ステップアップ認証
Keycloakはステップアップ認証をサポートするようになりました。この機能はKeycloak 17で追加され、今回のバージョンでさらに改良されました。
詳細については、サーバー管理ガイドをご覧ください。
貢献者のCornelia Lahnsteiner氏とGeorg Romstorfer氏に感謝いたします。
クライアントシークレットローテーション
Keycloakは、顧客ポリシーを通じてクライアントシークレットローテーションをサポートするようになりました。この機能はプレビュー機能として利用可能になり、機密クライアントが最大2つのシークレットを同時に使用できるレルムポリシーを提供できるようになります。
詳細については、サーバー管理ガイドをご覧ください。
OpenID Connectログアウトの改善
KeycloakがOpenID Connectログアウト仕様のすべてに完全に準拠するように、いくつかの修正と改善が行われました。
-
OpenID Connect RP-Initiated Logout 1.0
-
OpenID Connect Front-Channel Logout 1.0
-
OpenID Connect Back-Channel Logout 1.0
-
OpenID Connect Session Management 1.0
詳細については、サーバー管理ガイドをご覧ください。
WebAuthnの改善
KeycloakはWebAuthn IDレス認証をサポートするようになりました。この機能により、セキュリティキーがResident Keysをサポートしている限り、WebAuthnセキュリティキーは認証中にユーザーを識別できます。詳細については、サーバー管理ガイドをご覧ください。貢献者のJoaquim Fellmann氏に感謝いたします。
これに加えて、さらに多くのWebAuthnの改善と修正が行われています。
非推奨のupload-script
機能が削除されました
upload-script
機能は、非常に長い間非推奨としてマークされていました。今回のリリースで、完全に削除され、サポートされなくなりました。
これらの機能のいずれかを使用している場合は、
-
OpenID Connectスクリプトマッパー
-
スクリプト認証 (認証実行)
-
JavaScriptポリシー
これらの機能に引き続き依存する方法を理解するために、管理インターフェースを通じてスクリプトを管理するのではなく、サーバーにスクリプトをデプロイする方法について、こちらのドキュメントを読むことを検討してください。
セッション制限
Keycloakは、ユーザーが持つことができるセッション数に制限を設けることをサポートするようになりました。制限は、レルムレベルまたはクライアントレベルで設定できます。
詳細については、サーバー管理ガイドをご覧ください。貢献者のMauro de Wit氏に感謝いたします。
SAML ECPプロファイルがデフォルトで無効になりました
SAML ECPプロファイルの悪用のリスクを軽減するため、Keycloakは明示的に許可しないすべてのSAMLクライアントに対してこのフローをブロックするようになりました。プロファイルは、クライアント構成内のECPフローを許可するフラグを使用して有効にできます。詳細については、サーバー管理ガイドをご覧ください。
Quarkusディストリビューション
起動時のレルムのインポート
Keycloak Quarkusディストリビューションは、起動時にレルムを直接インポートすることをサポートするようになりました。詳細については、対応するガイドを確認してください。
JSONおよびファイルロギングの改善
Keycloak Quarkusディストリビューションは、当初、ファイルへのロギングとJSONを使用した構造化データのロギングをサポートしています。
改善点に関する詳細については、対応するロギングガイドを確認してください。
keycloak.confの値に対する環境変数展開
Keycloak Quarkusディストリビューションは、keycloak.confの値の環境変数からの展開をサポートするようになりました。
詳細については、対応するガイドを確認してください。
その他の改善
-
最新のPatternFlyリリースに合わせたアカウントコンソール。
-
暗号化されたユーザー情報エンドポイントレスポンスのサポート。 Giacomo Altiero氏に感謝します
-
暗号化キーに使用されるアルゴリズムRSA-OAEP with A256GCMのサポート。 Filipe Bojikian Rissi氏に感謝します
-
GitHub Enterpriseサーバーでのログインのサポート。 Neon Ngo氏に感謝します
Keycloak 17.0.0
ハイライト
Quarkusディストリビューションが完全にサポートされるようになりました
デフォルトのKeycloakディストリビューションは、Quarkusベースになりました。新しいディストリビューションは、より高速で、より軽量で、構成がはるかに簡単です。
WildFlyディストリビューションからの移行は、Keycloakの起動方法と構成方法が大幅に変更されたため、すべての人にとって簡単ではないことを理解しています。それを念頭に置いて、2022年6月までWildFlyディストリビューションのサポートを継続します。
新しいディストリビューションへの移行方法については、Quarkus移行ガイドを確認してください。
Quarkusディストリビューションのアップデート
可能な限り最高の体験を提供するために、Quarkusディストリビューションの改良と改善に多くの努力が払われました。いくつかのハイライトは次のとおりです。
-
Keycloakのインストールと構成を支援するためのサーバーガイドの形式での新しいドキュメントアプローチ
-
Quarkusを2.7.0.Finalにアップグレード
-
構成ファイルはJava固有ではなくなり、構成キーをCLI引数に合わせる
-
build options
とruntime configuration
の明確な分離。 -
h2-mem
およびh2-file
データベースの名前をdev-mem
およびdev-file
に変更。 -
機能の有効化と無効化の簡略化
-
カスタムの、およびサポートされていないQuarkus構成は、
conf/quarkus.properties
を通じて行われます。 -
JAVA_OPTS_APPENDを介してカスタムJavaオプションを追加する機能 (dasniko氏に感謝します)
-
初期ロギング機能
-
クロスDCの初期サポート
-
ユーザー定義プロファイルはサポートされなくなりましたが、同じ目標を達成するために異なる構成ファイルを使用する
-
新しいディストリビューションを使用するように更新されたクイックスタート
Keycloak 16.1.0
ハイライト
Wildfly 26.0.0へのアップグレード
Keycloakサーバーは、基盤となるコンテナとしてWildfly 26.0.0.Finalを使用するようにアップグレードされました。
WildFly 26の詳細については、WildFly 26リリースノートを参照してください。
Keycloak 16.0.0
ハイライト
Wildfly 25.0.1へのアップグレード
Keycloakサーバーは、基盤となるコンテナとしてWildfly 25.0.1.Finalを使用するようにアップグレードされました。
WildFly 25は、レガシーセキュリティサブシステムのサポートを終了し、完全にElytronに置き換えられます。これには、Keycloakの構成方法に大幅な変更が必要です。詳細については、移行ガイドを参照してください。
WildFly 25の詳細については、WildFly 25リリースノートを参照してください。
Keycloak 15.1.0
ハイライト
Quarkusディストリビューションプレビュー
今回のリリースの最大のハイライトは、Quarkusディストリビューションに加えられたすべての改善です。非常に多く、すべてをリストするのは困難です。
CLIは徹底的に磨き上げられ、Keycloakの構成と実行に非常にシンプルで便利なアプローチを提供できるようになったと考えています。非常にシンプルなので、ドキュメントは必要ないはずです。
開始するには、ディストリビューションを解凍し、bin/kc.[sh|bat] -h
と入力して、素晴らしさを発見してください。
Keycloakの構成に関するドキュメントを提供する予定がないという意味ではありませんが、今回は間に合いませんでした。ドキュメントがないため、Quarkusディストリビューションへのすべての変更と、その使用方法の概要を紹介するブログ投稿がリリースに続くことを期待してください。
Quarkusディストリビューションをデフォルトのディストリビューションにすることに急速に進んでおり、まもなくWildFlyディストリビューションを非推奨にする予定です。これを念頭に置いて、できるだけ多くの人がテスト実行を行い、使いやすさの問題が見つかった場合、何かを構成できない場合、またはバグを発見した場合にフィードバックを提供することが重要です。
GitHub Discussionsでご意見やフィードバックをお待ちしております。
新しい管理コンソールプレビュー
新しい管理コンソールは非常にうまく形になってきており、プレビューがメインディストリビューションに含まれています。まだ機能は完全ではありませんが、試してみるべきことはたくさんあります。
WildFlyのアップデート
WildFly 23からWildFly 25へのアップグレードには、予想以上に時間がかかりました。現在も懸命に取り組んでおり、アップグレードされたKeycloak 16をできるだけ早くリリースしたいと考えていますが、Quarkusディストリビューションへのアップデートを公開したかったため、今回はその間にこのリリースを行っています。
WildFlyアダプターの非推奨化
WildFly 25には、Keycloakアダプターを必要としない優れたネイティブOpenID Connectサポートが追加されました。これを念頭に置いて、WildFlyアダプターを非推奨とし、WildFly 25はサポートしませんが、古いWildFlyバージョンおよびRed Hat JBoss Enterprise Application Platform 7.yではしばらくの間利用できます。
Spring SecurityおよびBootアダプターの非推奨化
ずっと前に、Spring Security 5.0で、SpringにOAuth 2.0およびOpenID Connectのネイティブサポートが追加されました。これを念頭に置いて、Spring BootおよびSecurityアダプターを非推奨にすることを開始する時期が来ました。
OpenID Connectフロントチャネルログアウトのサポート
KeycloakはOpenID Connect Front-Channel Logout 1.0をサポートするようになりました。
詳細については、サーバー管理ガイドをご覧ください。
貢献者のRonaldo Yamada氏に感謝いたします。
Keycloak 15.0.1
ハイライト
このリリースには、いくつかの重要なバグ修正が含まれています。さらに、FAPI関連の機能(JARMサポートやCIBAの改善など)への貢献に対して、Leandro José de Bortoli氏に感謝いたします。
Keycloak 15.0.0
ハイライト
Financial-grade API (FAPI) の改善、FAPI CIBA、およびOpen Banking Brasil
Keycloakサーバーは、Financial-grade API (FAPI) のサポートを改善しました。具体的には、KeycloakはFAPI CIBAおよびOpenBanking Brasilに準拠するようになりました。CIBA pingモードもサポートしています。FAPI CIBAのほとんどの作業を行い、Keycloakプロジェクトに継続的に素晴らしい仕事をしているTakashi Norimatsu氏に感謝します。また、FAPIコンプライアンスの多くの作業を行ったDmytro Mishchuk氏、Andrii Murashkin氏、Hryhorii Hevorkian氏、Leandro José de Bortoli氏にも感謝します。最後に、ご協力とフィードバックをいただいたFAPI Special interest groupのすべてのメンバーに感謝します。
Keycloak 14.0.0
ハイライト
クライアントポリシーとFinancial-grade API (FAPI) のサポート
Keycloakサーバーは、クライアントポリシーとFinancial-grade API (FAPI) の公式サポートを提供するようになりました。この機能は以前のバージョンでプレビューされていましたが、より洗練され、適切に文書化されました。この作業のほとんどを行ったTakashi Norimatsu氏に感謝します。また、この機能の多くの作業を行ったDmytro Mishchuk氏、Andrii Murashkin氏、Hryhorii Hevorkian氏にも感謝します。最後に、ご協力とフィードバックをいただいたFAPI Special interest groupのすべてのメンバーに感謝します。
ユーザープロファイルSPIの改善と宣言型構成のサポート
今回のバージョンでは、Keycloakでのユーザープロファイルの管理方法の基盤を準備するために、ユーザープロファイルSPIにいくつかの改善が行われました。
これらの改善の1つは、管理コンソールを介したユーザープロファイルの構成のサポートです。詳細については、サーバー管理ガイドに進んでください
コミュニティとこの取り組みに関与したすべての人々に感謝します。
オフラインセッションの改善
オフラインセッションのプリロードが改善され、Peter Flintholm氏のおかげで高速化されました。
プレビュー機能として、オフラインセッションのプリロードは、Thomas Darimont氏の尽力のおかげで遅延ロードを優先してスキップできます。この機能はサーバー構成で明示的に有効にする必要があります。詳細については、サーバー管理ガイドをご覧ください。
Keycloak 13.0.0
ハイライト
OAuth 2.0 Device Authorization Grant (RFC 8628)
OAuth 2.0 Device Authorization Grantのサポートが利用可能になりました。
Hiroyuki Wada氏、Łukasz Dywicki氏、Michito Okai氏に感謝します。
OpenID Connect Client Initiated Backchannel Authentication (CIBA)
OpenID Connect Client Initiated Backchannel Authentication (CIBA) のサポートが利用可能になりました。
Takashi Norimatsu氏、Andrii Murashkin氏、Christophe Lannoy氏、および実装とフィードバックにご協力いただいたFAPI WGのメンバーに感謝します。
サーバーとクライアント間の通信におけるSAMLアーティファクトバインディング
Keycloakは、SAMLアーティファクトバインディングを使用してクライアントと通信することをサポートするようになりました。クライアント構成に新しいForce Artifact Binding
オプションが導入され、アーティファクトメッセージを使用したクライアントとの通信が強制されます。詳細については、サーバー管理ガイドに進んでください。このバージョンでは、Keycloak SAMLクライアントアダプターはアーティファクトバインディングをサポートしていないことに注意してください。
AlistairDoswald氏とharture氏に感謝します。
アイデンティティブローカリングのPKCEのサポート
Keycloakは、外部OpenID Connect IdPへのブローカリング時にPKCEを活用できるようになりました。
thomasdarimont氏に感謝します。
デフォルトロールの処理の改善
デフォルトロールは、内部的にdefault-roles-<realmName>
という通常名前の新しいロールのコンポジットロールとして保存されるようになりました。レルムとすべてのクライアントのデフォルトロールの両方を、新しく作成されたユーザーまたはアイデンティティブローカリングを通じてインポートされたユーザーに直接割り当てる代わりに、ロールのみがそれらに割り当てられ、残りのデフォルトロールは有効なロールとして割り当てられます。この変更により、特にクライアント数が多い場合、デフォルトロールの処理のパフォーマンスが向上します。これは、すべてのクライアントを処理する必要がなくなるためです。
Keycloak 12.0.0
ハイライト
Keycloak.Xディストリビューションプレビュー
新しい今後のKeycloak.Xディストリビューションのプレビューを紹介します。このディストリビューションはQuarkusを搭載しており、起動時間とメモリ消費量を大幅に改善し、Keycloakの構成をはるかに簡単にします。
新しいアカウントコンソールがデフォルトになりました
新しいアカウントコンソールはプレビュー機能ではなくなり、Keycloakのデフォルトのアカウントコンソールになりました。古いアカウントコンソールはしばらくの間残ります。古いアカウントコンソールにカスタムテーマがある場合、古いコンソールがデフォルトで使用され、新しいアカウントコンソールにカスタムテーマを更新する時間が与えられます。
OpenID Connectバックチャネルログアウト
OpenID Connectバックチャネルログアウトのサポートが利用可能になりました。DaSmoo氏とbenjamin37氏に感謝します。
SAMLアイデンティティプロバイダーでAuthnContextをリクエストする機能
SAMLアイデンティティプロバイダーによって発行された認証リクエストでAuthnContextセクションの仕様のサポートが追加されました。
lscorcia氏に感謝します
FAPI RWサポートとクライアントポリシーへの初期サポート
Financial-grade API Read and Write API Security Profile (FAPI RW) のサポートを実現するために多くの作業が行われました。これはクライアントポリシーの使用で利用可能であり、まだプレビュー状態です。次のリリースでさらに洗練されることを期待できます。Takashi Norimatsu氏とFAPI Special interest groupのすべてのメンバーに感謝します。
ログインテーマをPatternFly 4にアップグレード
KeycloakログインテーマコンポーネントがPatternFly 4にアップグレードされました。古いPatternFly 3は新しいものと同時に実行されるため、PF3コンポーネントをそこに含めることができます。
ユーザーエクスペリエンスを向上させるために、ログインテーマのデザイン変更もあります。カスタムアイデンティティプロバイダーのアイコンを定義することもできます。詳細については、ドキュメントを参照してください。
Gatekeeper EOL
Gatekeeperは、21年11月に寿命を迎えました。これは、サポートまたは更新を終了することを意味します。発表はこちらでご覧いただけます。
その他の改善
-
リフレッシュトークンとユーザーセッションなしのOAuth2クライアント資格情報付与のサポート。 Thomas Darimont氏に感謝します
-
OAuth2失効エンドポイントにアクセストークンを送信するためのサポート
Keycloak 11.0.0
ハイライト
LDAPv3パスワード変更操作
LDAPv3パスワード変更操作のサポートが追加されました。また、構成されたLDAPサーバーからメタデータを要求して、LDAPv3パスワード変更操作をサポートしているかどうかを管理コンソールで確認する機能も追加されました。
cachescrubber氏に感謝します
LDAPグループマッパーのネームスペースサポート
LDAPグループマッパーのネームスペースサポートにより、Keycloakグループツリーの指定されたブランチ(ネームスペース)の下にあるLDAPからのグループをマッピングできます。以前は、LDAPからのグループは常にKeycloakの最上位グループとして追加されていました。
Torsten Juergeleit氏に感謝します
WildFly 20へのアップグレード
Keycloakサーバーは、内部的にWildFly 20.0.1.Finalを使用するようにアップグレードされました。詳細については、アップグレードガイドをご覧ください。
SAML POSTバインディングは最新バージョンのブラウザーで破損しています
JSESSIONID
CookieのSameSite
値None
は、Keycloak SAMLアダプターの正しい動作に必要です。異なる値を使用すると、SAML POSTバインディングを使用している場合、Keycloakへのリクエストごとにコンテナのセッションがリセットされます。正しい動作を維持するためのWildFlyおよびEAPのKeycloak SAML Galleon機能パックガイドの手順を参照してください。この回避策は、以前のバージョンのアダプターでも機能するはずであることに注意してください。
その他の改善
-
クライアントオフラインセッションのライフサイクルのサポート。 Yoshiyuki Tabata氏に感謝します
-
チェコ語翻訳。 Jakub Knejzlík氏に感謝します
-
Facebookアイデンティティプロバイダーから追加のフィールドを取得する可能性。 Bartosz Siemieńczuk氏に感謝します
-
署名および暗号化されたIDトークンに使用されるAES 192およびAES 256アルゴリズムのサポート。 Takashi Norimatsu氏に感謝します
-
Ability to specify signature algorithm in Signed JWT Client Authentication. Thanks to Takashi Norimatsu
Keycloak 10.0.0
ハイライト
アイデンティティブローカリング同期モード
With Identity Brokering Sync Mode it is now possible to control if user profiles are updated on first login, or every login from an external Identity Provider. It is also possible to override this behaviour on individual mappers.
Thanks to Martin Idel
OpenID Connect / OAuth 2.0 のクライアントセッションタイムアウト
Typically, an SSO session last for days if not months, while individual client sessions should ideally be a lot shorter. With the introduction of client session timeout it is now possible to configure a separate timeout for individual clients, as well as a default for all clients within a realm.
Thanks to Yoshiyuki Tabata
OAuth 2.0 トークン失効 (RFC 7009)
For applications that use Keycloak as an OAuth 2.0 Authorization Server there is now support to revoke refresh tokens through the token revocation endpoint.
Thanks to Yoshiyuki Tabata
セキュリティヘッダー SPI とレスポンスフィルター
A new SPI was introduced to allow better flexibility when setting security related headers on responses. This provides a cleaner implementation within Keycloak, but also allows full customisation if needed. Security headers are now set by a response filter instead of within the code itself, which makes it less error-prone, removing the chance that some response are missing headers.
Keycloak 9.0.1
ハイライト
JavaScript アダプターから PromiseType を削除
The promiseType init option has been removed from the JavaScript adapter. Instead a promise that supports both native promise API and legacy Keycloak promise API is returned. This allows gradually migration of applications from the legacy/deprecated API to the native promise API.
その他の改善点
LocaleSelectorSPI に対する破壊的な API 変更を元に戻しました
In 9.0.0 a breaking API change was introduced to LocaleSelectorSPI. With 9.0.1 the changes to this API is now reverted, and a new LocaleUpdaterSPI has been introduced.
Spring Boot アプリケーションにおける KeycloakConfigResolver
インスタンスの自動解決を修正
In previous releases, Spring Boot applications had to manually implement the KeycloakConfigResolver
interface or extend the built-in org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver
.
This release fixes the backward compatibility issue by resolving instances automatically in case none is provided. As well as still allowing applications to provide their own configuration resolver implementations.
Keycloak 9.0.0
ハイライト
Drools ポリシーを削除
The Drools Policy was finally removed after the deprecation period. If you need more complex policies you can still use JavaScript-based policies.
クライアントのページネーションサポート
Pagination support was added to clients in the Admin Console and REST API. Thanks to saibot94.
新しい Elytron Credential Store Vault プロバイダー
A new built-in vault provider that reads secrets from a keystore-backed Elytron credential store has been added as a WildFly extension. The creation and management of the credential store is handled by Elytron using either the elytron
subsystem or the elytron-tool.sh
script.
W3C WebAuthn および認証フローの更なるアップデート
In this release, we did some usability improvements to the authentication flows. It should be easier for the end user to choose between available authentication mechanisms for two-factor authentication. It should be more intuitive to log in with OTP or WebAuthn considering the fact that user can have more OTP or WebAuthn credentials. There is also better support for passwordless WebAuthn authentication. Finally, we did some work on defects related to the authentication flows.
Keycloak 8.0.2
ハイライト
今後の Google Chrome アップデートに伴う SameSite Cookie の変更
Starting with version 80, Google Chrome will change the default value for the SameSite
cookie parameter to Lax
. Therefore, changes were required to several Keycloak cookies (especially those which are used within the Javascript adapter for checking the session status using the iframe) to set SameSite
parameter to None
. Please note that this setting also requires setting the Secure
parameter, hence starting with this version, the Javascript adapter will only be fully functional when using the SSL / TLS connection on the Keycloak side.
Keycloak 8.0.1
Keycloak 8.0.0
ハイライト
Vault
Several configuration fields can obtain their value from a vault instead of entering the value directly: LDAP bind password, SMTP password, and identity provider secrets.
Furthermore, new vault SPI has been introduced to enable development of extensions to access secrets from custom vaults.
新しいデフォルトのホスト名プロバイダー
The fixed and request hostname providers have been replaced with a single new default hostname provider. This provider comes with a number of improvements, including
-
No need to change provider to set fixed base URL
-
Support different base URL for frontend and backend requests
-
Support changing context-path in cases where Keycloak is exposed on a different context-path through a reverse proxy
テーマリソース内のメッセージ
Message bundles in theme resources enables internationalization of custom providers such as authenticators. They are also shared between all theme types, making it possible to for example share messages between the login and account console. Thanks to micedre.
SAML アダプター用 RoleMappingsProvider SPI
We have added a new SPI that allows for the configuration of custom role mappers that are used by the SAML adapters to map the roles extracted from the SAML assertion into roles that exist in the SP application environment. This is particularly useful when the adapters need to communicate with third party IDPs and the roles set by the IDP in the assertion do not correspond to the roles that were defined for the SP application. The provider to be used can be configured in the keycloak-saml.xml
file or in the keycloak-saml
subsystem. An implementation that performs the role mappings based on the contents of a properties file was also provided.
Notice that when Keycloak acts as the IDP we can use the built-in role mappers to perform any necessary mappings before setting the roles into the assertion, so this SPI will probably be redundant in this case. The RoleMappingsProvider
SPI was designed for situations when the IDP offer no way to map roles before adding them to the assertion.
W3C Web Authentication サポート
In this release, we added initial support for W3C Web Authentication (WebAuthn). There are a few limitations in current implementation, however we are working on further improvements in this area. Thanks to tnorimat for the contribution. Also thanks to ynojima for the help and feedback.
パスワードレス認証、多要素認証、およびユーザーごとの複数クレデンシャルのサポート
With the arrival of W3C Web Authentication support, we’ve refined the authentication flow system to be able to allow a user to select which authentication method is preferred for login (for example, the choice between an OTP credential and a WebAuthn credential). The new mechanisms also allow an administrator to craft flows for password-less login, for example just using WebAuthn as an authentication method. Please note that with these changes, any custom authentication flow you have created may need to be adapted to the new flow logic.
As a result of these changes, users can now have multiple OTP devices and multiple WebAuthn devices. The same system that allows a user to select which type of device to use during login also allows that user to select which specific device to use. Thanks to the Cloudtrust team: AlistairDoswald, sispeo and Fratt for their contributions, and to harture and Laurent for their help.
その他の改善点
theme.properties におけるシステムプロパティと環境変数のサポート
It is now possible to use system properties and environment variables within theme.properties file. Thanks to Opa-
署名付き JWT によるクライアント認証のためのより多くの署名アルゴリズムのサポート
Thanks to tnorimat, we support more signing algorithms for client authentication with signed JWT.
OIDC アイデンティティプロバイダーの構成可能なクライアント認証方法
In this release, possibility to authenticate OIDC providers with signed JWT or basic authentication was added. So all the client authentication methods mentioned in the OIDC specification are supported now. Thanks to madgaet and rradillen for contributions.
JavaScript アダプターへのロギングの有効/無効化のサポート
Thanks to jonkoops now it’s possible to enable or disable logging for the JS adapter.
JavaScript アダプターからクレデンシャルサポートを削除
The option to provide client credentials in the JavaScript adapter was removed. Thanks to jonkoops
Gatekeeper のアップデート
-
Secure token and logout endpoint were included in Gatekeeper. Thanks to fredbi
-
There was a bug on Gatekeeper which was making cookies to be applied to subdomains. Thanks to daniel-ac-martin the issue was fixed
-
Now Gatekeeper provides support to Same-site cookies. Thanks to fiji-flo
サーバーへのスクリプトのデプロイ
Please take a look at 7.0.1 Release Notes for more details on how you can now deploy and run scripts to customize specific behavior.
Keycloak 7.0.1
サーバーへのスクリプトのデプロイ
Until now, administrators were allowed to upload scripts to the server through the Keycloak Administration Console as well as through the RESTful Admin API.
For now on, this capability is disabled by default and users should prefer to deploy scripts directly to the server. For more details, please take a look at JavaScript Providers.
Keycloak 7.0.0
ハイライト
Tomcat 9 アダプターのサポート
Java adapter for Apache Tomcat 8 and Apache Tomcat 9 was unified and now it serves for both of them.
新しいアカウントコンソール
A lot of work has been done on the new Account Console and Account REST API. It’s not quite ready yet, but it’s getting there and hopefully will be fully done for Keycloak 8.
署名および暗号化された ID トークンのサポート
Keycloak can support the signed and encrypted ID token according to the Json Web Encryption (JWE) specification. Thanks to tnorimat.
その他の改善点
-
PKCE support added to JavaScript adapter. Thanks to thomasdarimont
-
Oracle database support added to Keycloak container image. Thanks to nerdstep
-
Clock Skew support added to SAML adapter. Thanks to steevebtib
-
TypeScript support for Node.js adapter. Thanks to evanshortiss
-
Gatekeeper now allows to provide unencrypted token in header, while encrypting in cookie. There was also a bug on Gatekeeper when
Revoke Refresh Token
is enabled on the Keycloak server. The issue was fixed. Thanks to fredbi -
New tab in the Admin console to display the list of users for client roles. Thanks to unly
Keycloak 6.0.0
PS256 サポート
Thanks to tnorimat Keycloak now has support for signing and verifying tokens with PS256.
Keycloak 4.8.0.Final
OpenShift 統合
It is now possible to fully secure OpenShift 3.11 with Keycloak, including the ability to automatically expose Service Accounts as OAuth clients as clients to Keycloak.
This is currently a technology preview feature.
Rules/Drools ポリシーをテクノロジープレビュー機能としてマーク
Until now, Drools policies were enabled by default. But now, this policy type is only available as a technology preview feature and to use it you need to enable the preview profile or the corresponding feature. Take a look at the Authorization Services Guide for more details.
Keycloak 4.7.0.Final
拡張された Remember Me
Introduced the ability to specify different session idle and max timeouts for remember me sessions. This enables remember me sessions to live longer than regular sessions.
Keycloak 4.6.0.Final
Keycloak Gatekeeper
Keycloak Gatekeeper provides a security proxy that can be used to secure applications and services without an adapter. It can be installed locally alongside your application or as a sidecar on OpenShift or Kubernetes.
Huge thanks to gambol99 for contributing this work to Keycloak.
Keycloak 4.5.0.Final
署名 SPI
The Signature SPI makes it possible to plug-in additional signature algorithms. This enables additional signatures and also enables changing how signatures are generated. For example, using this allows using an HSM device to sign tokens.
Thanks to tnorimat for contributing a significant part of this work.
新しい署名アルゴリズム
Alongside the Signature SPI there is now also support for additional signature algorithms.
Keycloak now has support for RS256, RS384, RS512, ES256, ES384, ES512, HS256, HS384 and HS512.
Elliptic Curve Digital Signature Algorithm (ES256/384/512) are very interesting as they provide similar security properties as RSA signatures, but use significantly less CPU.
HMAC (HS256/384/512) are also very useful when you do not want your application to verify the signature itself. Since these are symmetric signatures only Keycloak is able to verify the signature, which requires the application to use the token introspection endpoint to verify tokens.
Thanks to tnorimat for contributing a significant part of this work.
OpenID Connect クライアントのより良いオーディエンスサポート
It is now possible to specify the audiences in the tokens issued for OpenID Connect clients. There is also support for verification of audience on the adapter side.
マイナーな改善点
-
Added LocaleSelector SPI, which allows to change the way how the locale will be resolved for a particular request. Thanks to knutz3n
-
Added an authenticator to automatically link Identity Provider identity to an existing account after first Idp authentication. Thanks to slominskir
Keycloak 4.4.0.Final
WildFly 13 へのアップグレード
The Keycloak server was upgraded to use WildFly 13 under the covers. This means update of the underlying dependencies and also some changes in the configuration. We now also support WildFly 13 adapter and we upgraded the underlying JDG/Infinispan server version for the Cross-DC setup. See Upgrading Guide for more details.
Node.js における Authorization Services のサポート
Having authorization services support in Node.js makes it very easy to do fine-grained central authorization with the Node.js adapter.
マイナーな改善点
-
Update design for the welcome page
-
Allow passing current locale to OAuth2 IdPs. Thanks to knutz3n
-
Support Content-Security-Policy-Report-Only security header. Thanks to knutz3n
-
Script based ProtocolMapper for SAML. Thanks to AlistairDoswald
Keycloak 4.3.0.Final
ホスト名 SPI
The hostname SPI introduces a more flexible way to configure the hostname for Keycloak. There are two built-in providers. The first is request, which uses the request headers to determine the hostname. The second is fixed, which allows configuring a fixed hostname. The latter makes sure that only valid hostnames can be used and also allows internal applications to invoke Keycloak through an alternative URL.
For more details refer to the threat mitigation section in the Server Administration Guide.
X.509 クライアント認証
The newly added Client Authenticator uses X509 Client Certificates and Mutual TLS to secure a connection from the client. In addition to that the Keycloak Server validates Subject DN field of the client’s certificate.
Authorization Services のパフォーマンス改善
For this release, we improved policy evaluation performance across the board, increasing reliability and throughput. The main changes we did were related with trying to optimize the policy evaluation path by avoiding unnecessary flows and collect decisions as soon as they happen. We also introduced a policy decision cache on a per-request basis, avoiding redundant decisions from policies previously evaluated.
We are also working on other layers of cache which should give a much better experience. See KEYCLOAK-7952.
サーバーからパーミッションを取得する際のレスポンスモードの選択
In previous versions, permissions were always returned from the server using standard OAuth2 response, containing the access and refresh tokens. In this release, clients can use a response_mode
parameter to specify how the server should respond to an authorization request. This parameter accepts two values
-
decision
Indicating that responses should only contain a flag indicating whether or not permissions were granted by the server. Otherwise a
403
HTTP status code is returned. -
permissions
Indicating that a response should contain every single permission granted by the server using a JSON format.
NodeJS Policy Enforcer
The keycloak-nodejs-connect, an adapter for NodeJS, now supports constructs to protect resources based on decisions taken from the server. The new construct allows users to protect their resources using fine-grained permissions as follows
app.get('/protected/resource', keycloak.enforcer('resource:view'), function (req, res) {
res.json({message: 'access granted'});
});
Google ログインのホスト型ドメインのサポート
Login with Google now supports the hd
parameter to restrict Google logins to a specific hosted domain at Google. When this is specified in the identity provider any login from a different domain is rejected.
Thanks to brushmate for the contribution.
HTML 出力の安全でないタグのエスケープ
Most HTML output is already escaped for HTML tags, but there are some places where HTML tags are permitted. These are only where admin access is needed to update the value. Even though it would require admin access to update such fields we have added an extra layer of defence and are now escaping unsafe elements like <script>
.
Keycloak 4.2.0.Final
Cordova のブラウザータブサポート
We now have support for using browser tab and universal links in the JavaScript adapter for Cordova. This enables SSO between multiple applications as well as increases security.
Thanks to gtudan for the contribution.
Keycloak 4.0.0.Final
クライアントスコープと OAuth 2 scope パラメーターのサポート
We added support for Client Scopes, which replaces Client Templates. Client Scopes are a more flexible approach and also provides better support for the OAuth scope
parameter.
There are changes related to Client Scopes to the consent screen. The list on the consent screen is now linked to client scopes instead of protocol mappers and roles.
See the documentation and migration guide for more details.
OAuth 2 証明書バインドアクセストークン
We now have a partial implementation of the specification OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens . More accurately we have support for the Certificate Bound Access Tokens. If your confidential client is able to use 2-way SSL, Keycloak will be able to add the hash of the client certificate into the tokens issued for the client. At this moment, it’s just the Keycloak itself, which verifies the token hashes (for example during refresh token
requests). We plan to add support to adapters as well. We also plan to add support for Mutual TLS Client Authentication.
Thanks to tnorimat for the contribution.
Authorization Services
UMA 2.0 サポート
UMA 2.0 is now supported for Authorization Services. Check the documentation for more details if you are coming from previous versions of Keycloak.
Keycloak アカウントサービスを介したユーザー管理アクセス
Now end-users are able to manage their resources and the permissions associated with them through the Keycloak Account Service. From there, resource owners can now check their resources, share resources with another users as well approve requests from other users.
非同期認可フロー
When using UMA, client applications can now choose whether or not an authorization request should start an authorization flow to ask for the resource owner approval. This functionality allows applications to ask for resource owner approval when trying to access one of his resources on behalf of another user.
プッシュされたクレーム
Clients applications are now able to send arbitrary claims to Keycloak along with an authorization request in order to evaluate permissions based on these claims. This is a very handy addition when access should be granted (or denied) in the scope of a specific transaction or based on information about the runtime.
リソース属性
It is now possible to associated attributes with resources protected by Keycloak and use these same attributes to evaluate permissions from your policies.
Policy enforcer が通常アクセス トークンを受け入れるように
In some situations, you may want to just send regular access tokens to a resource server but still be able to enforce policies on these resources.
One of the main changes introduced by this release is that you are no longer required to exchange access tokens with RPTs in order to access resources protected by a resource server (when not using UMA). Depending on how the policy enforcer is configured on the resource server side, you can just send regular access tokens as a bearer token and permissions will still be enforced.
Policy enforcer がサーバーからリソースをオンデマンドでロードできるようになりました
Until now, when deploying an application configured with a policy-enforcer
, the policy enforcer would either load all protected paths from the server or just map these paths from the adapter configuration. Users can now decide to load paths on-demand from the server and avoid map these resources in the adapter configuration. Depending on how many protected resources you have this functionality can also improve the time to deploy an application.
Policy enforcer がリソースキャッシュの設定をサポート
In order to avoid unnecessary hits to the server, the policy enforcer caches the mapping between protected resources and their corresponding paths in your application. Users can now configure the behaviour of the cache or even completely disable it.
クレーム情報ポイント
The policy-enforcer
definition on the adapters (keycloak.json
) was also updated to support the concept of pushed claims. There you have the concept of a claim-information-point
which can be set to push claims from different sources such as the HTTP request or even from an external HTTP service.
評価 API の改善
The Evaluation API used to implement policies in Keycloak, especially JavaScript and Drools policies, provides now methods to
-
Access information from the current realm such as check for user roles, groups and attributes
-
Push back arbitrary claims to the resource server in order to provide additional information on how a specific permissions should be enforced
Authorization Services
UMA 2.0
UMA 2.0 is now supported for Authorization Services, including support for users to manage user access through the account management console. There are also other additions and improvements to authorization services.
テーマとテーマリソース
Keycloak にテーマをホットデプロイすることが、通常のプロバイダーデプロイメントを通じて可能になりました。テーマリソースのサポートも追加され、テーマを作成しなくても追加のテンプレートやリソースを追加できます。これは、認証フローに追加のページを追加する必要があるカスタム認証機構に役立ちます。
特定のクライアントのテーマをオーバーライドするサポートも追加しました。ニーズに合わない場合は、テーマを選択するためのカスタムロジックを実装できる新しいテーマセレクターSPIもあります。
Instagram アイデンティティプロバイダー
Instagram でログインするサポートを追加しました。hguerrero 氏の貢献に感謝します。
アダプター
JavaScript - ネイティブ Promise サポート
JavaScript アダプターがネイティブ Promise をサポートするようになりました。古いスタイルの Promise のサポートも保持しています。どちらも互換的に使用できます。
JavaScript - Cordova オプション
JavaScript アダプターのログインやその他のメソッドに Cordova 固有のオプションを渡すことができるようになりました。looorent 氏の貢献に感謝します。