Keycloak 16.0.0
Keycloak 15.1.0
ハイライト
Quarkusディストリビューション・プレビュー
今回のリリースの最大のハイライトは、Quarkusディストリビューションに施されたすべての改善です。実際には非常に多くの改良点があり、すべてを列挙するのは難しいでしょう。
CLIは徹底的に改良され、Keycloakの設定と実行に非常にシンプルで便利なアプローチを提供するようになったと信じています。それは、ほとんどドキュメントが必要ないほどシンプルです。
まず、配布物を解凍し、bin/kc.[sh|bat] -h
と入力すれば、素晴らしいものを発見することができます。
Keycloakの設定に関するドキュメントを提供する予定がないわけではありませんが、今回はまだ実現できていません。ドキュメントがないため、リリース後にQuarkusディストリビューションへのすべての変更とその使用方法の概要を紹介するブログ投稿を予定しています。
私たちはQuarkusディストリビューションをデフォルトのディストリビューションとする方向で急速に進んでおり、WildFlyディストリビューションはまもなく廃止される予定です。このことを念頭に置いて、できるだけ多くの人がQuarkusを試用し、使い勝手の問題や設定できないこと、バグを発見した場合などにフィードバックを提供することが重要です。
ぜひ、 GitHub Discussions でご意見をお聞かせください!
新しい管理コンソール・プレビュー
新しい管理コンソールはとてもよくできていて、プレビュー版がメインのディストリビューションに含まれています。まだ機能は完全ではありませんが、試せることはたくさんあります。
WildFlyのアップデート
WildFly 23からWildFly 25へのアップグレードは、私たちが望むよりもずっと長い時間がかかりました。しかし、Quarkusディストリビューションへのアップデートを提供したかったので、このリリースはその間に行います。
WildFlyアダプターの非推奨化
WildFly 25では、Keycloakアダプターを必要としない優れたネイティブのOpenID Connectサポートがあります。このことを考慮して、WildFlyアダプターを非推奨とし、WildFly 25をサポートしませんが、古いWildFlyバージョンやRed Hat JBoss Enterprise Application Platform 7.yではしばらくの間存続させる予定です。
Spring SecurityアダプターとSpring Bootアダプターの非推奨化
Spring Security 5.0で、OAuth 2.0とOpenID ConnectがSpringでネイティブサポートされるようになってからだいぶ経ちました。これを受けて、Spring BootとSecurityのアダプターを非推奨にする時期が来ました。
OpenID Connect Back-Channel Logoutのサポート
Keycloakは OpenID Connect Front-Channel Logout 1.0 をサポートしました。
詳しくは、 Server Administration Guide を参照してください。
Ronaldo Yamada のコントリビューションに感謝します。
Keycloak Operatorで非推奨の機能
本リリースでは、Keycloak Operatorの機能の一部を非推奨とし、サポート対象外としました。これは、Backup CRDとオペレーター管理のPostgres Databaseに関するものです。詳細については、 Server Installation and Configuration Guideの関連する章を参照してください。
Keycloak 15.0.1
ハイライト
このリリースにはいくつかの重要なバグフィックスが含まれています。また、JARMのサポートやCIBAの改善など、FAPI関連の機能に貢献した 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 に感謝します。また、 Dmytro Mishchuk 、 Andrii Murashkin 、 Hryhorii Hevorkian 、 Leandro José de Bortoli にも感謝します。彼らは同様にFAPIのコンプライアンスについて多大な働きかけをしてくれたのです。最後に、 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つは、管理コンソールを介したユーザー・プロフィールの設定のサポートです。詳細については、 Server Administration Guide を参照してください。
コミュニティーとこの取り組みに携わったすべての方に感謝します。
オフライン・セッションの改善
オフライン・セッションの事前ロードが改善され、 Peter Flintholm のおかげでより高速になるはずです。
プレビュー機能として、 Thomas Darimont の取り組みのおかげで、オフライン・セッションの事前ロードをスキップして遅延ロードを行うことができます。この機能は、サーバー設定で明示的にアクティブ化する必要があります。詳細については、サーバー管理ガイドを参照してください。
Keycloak 13.0.0
ハイライト
OAuth 2.0デバイス認可グラント (RFC 8628)
OAuth 2.0デバイス認可グラントのサポートが利用可能になりました。
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 Artifact バインディングを使用したクライアントとの通信をサポートするようになりました。新しい Force Artifact Binding
オプションがクライアントの設定に導入され、アーティファクト・メッセージを使用してクライアントとの通信を強制します。詳細については、 Server Administration Guide に進んでください。このバージョンでは、Keycloak SAMLクライアント・アダプターはアーティファクト・バインディングをサポートしていないことに注意してください。
AlistairDoswald と hartureに感謝します。
アイデンティティー・ブローカリングに対するPKCEのサポート
Keycloakは、外部のOpenID ConnectのIdPにブローカリングするときにPKCEを活用できるようになりました。
thomasdarimont に感謝します。
Keycloak 12.0.0
ハイライト
Keycloak.Xディストリビューション・プレビュー
新規および今後のKeycloak.Xディストリビューションがプレビュー機能として導入されました。このディストリビューションはQuarkusを利用しており、起動時間とメモリ消費量が大幅に改善されるだけでなく、Keycloakの設定がはるかに簡単になります。
新しいアカウント・コンソールがデフォルトになりました
新しいアカウント・コンソールはプレビュー機能ではなくなり、Keycloakのデフォルトのアカウントコンソールになりました。古いアカウント・コンソールはしばらくの間残ります。古いアカウントコンソール用のカスタムテーマがある場合は、デフォルトで古いコンソールが使用されるため、すぐにカスタムテーマを新しいアカウントコンソールに更新する必要はありません。
OpenID Connect Back-Channel Logout
DaSmoo と benjamin37 のおかげで、OpenID Connect Back-Channel Logoutが利用可能になりました。
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は11月21日にサポートが終了しました。これは、サポートまたは更新を終了したことを意味します。発表は このページ で参照できます。
その他の改善
-
リフレッシュトークンなし、かつユーザー・セッションなしのOAuth2クライアント・クレデンシャル・グラントのサポート。 Thomas Darimont に感謝します。
-
OAuth2 Revocationエンドポイントへのアクセストークンの送信のサポート
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を使用するようにアップグレードされました。詳細については、 Upgrading Guide を参照してください。
その他の改善
-
クライアントのオフライン・セッションの有効期間のサポート。 Yoshiyuki Tabata に感謝します。
-
チェコ語の翻訳。 Jakub Knejzlík に感謝します。
-
Facebook アイデンティティー・プロバイダーから追加のフィールドをフェッチ可能になりました。 BartoszSiemieńczuk に感謝します。
-
署名および暗号化されたIDトークンに使用されるAES 192およびAES 256アルゴリズムのサポート。 Takashi Norimatsu に感謝します。
-
署名付きJWTクライアント認証で署名アルゴリズムを指定する機能。 Takashi Norimatsu に感謝します。
Keycloak 10.0.0
ハイライト
アイデンティティー・ブローカリング同期モード
アイデンティティー・ブローカリング同期モードにより、ユーザー・プロファイルを最初のログイン時に更新するか、外部のアイデンティティー・プロバイダーからのすべてのログイン時に更新するかを制御できるようになりました。個々のマッパーでこの動作をオーバーライドすることもできます。
Martin Idel のコントリビューションに感謝します。
OpenID Connect / OAuth 2.0のクライアント・セッション・タイムアウト
通常、SSOセッションは数ヶ月ではないにしても数日間続きますが、個々のクライアント・セッションは理想的にはもっと短いはずです。クライアント・セッションタイムアウトの導入により、レルム内のすべてのクライアントのデフォルトだけでなく、個々のクライアントに個別のタイムアウトを設定できるようになりました。
Yoshiyuki Tabata のコントリビューションに感謝します。
OAuth 2.0 Token Revocation(RFC 7009)
KeycloakをOAuth 2.0認可サーバーとして使用するアプリケーションの場合に、トークン無効化エンドポイントを介してリフレッシュトークンを無効化することがサポートされました。
Yoshiyuki Tabata のコントリビューションに感謝します。
Keycloak 9.0.1
その他の改善
LocaleSelectorSPIへの互換性のないAPIの変更を元に戻しました
9.0.0では、LocaleSelectorSPIに重大なAPI変更が導入されました。9.0.1では、このAPIへの変更が元に戻され、新しいLocaleUpdatorSPIが導入されました。
Spring Bootアプリケーションの KeycloakConfigResolver
インスタンスの自動解決を修正しました
以前のリリースでは、Spring Bootアプリケーションは手動で KeycloakConfigResolver
インターフェイスを実装するか、組み込みの org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver
を拡張する必要がありました。
このリリースでは、何も提供されない場合にインスタンスを自動的に解決することにより、下位互換性の問題が修正されています。さらに、アプリケーションが独自の設定リゾルバーの実装を提供できるようにします。
Keycloak 9.0.0
ハイライト
クライアントのページネーションのサポート
管理コンソールとREST APIで、ページ分割のサポートがクライアントに追加されました。 saibot94 に感謝します。
新しいElytronクレデンシャル・ストア・ボールト・プロバイダー
キーストアでサポートされているElytronクレデンシャル・ストアからシークレットを読み取る新しい組み込みのボールト・プロバイダーが、WildFly拡張機能として追加されました。クレデンシャル・ストアの作成と管理は、 elytron
サブシステムまたは elytron-tool.sh
スクリプトを使用してElytronによって処理されます。
W3C WebAuthnおよび認証フローに対するその他の更新
このリリースでは、認証フローの使いやすさが改善されました。エンドユーザーは、2要素認証に使用できる認証メカニズムを簡単に選択できます。ユーザーがより多くのOTPまたはWebAuthnクレデンシャルを持つことができるという事実を考慮し、OTPまたはWebAuthnでログインする方が直感的であるはずです。パスワードレスのWebAuthn認証のサポートも改善されました。最後に、認証フローに関連する欠陥についていくつかの作業を行いました。
ユーザーロケールの処理の改善
ログインページのロケールが選択される方法、およびユーザーのロケールが更新されるタイミングに多くの改良が加えられました。
詳細については、 Server Administration Guide を参照してください。
Keycloak 8.0.2
ハイライト
Google Chromeの今後のアップデートによるSameSite Cookieの変更
バージョン80以降、Google Chromeは SameSite
Cookieパラメータ-のデフォルト値を Lax
に変更します。したがって、 SameSite
パラメーターを None
に設定するために、いくつかのKeycloak Cookie(特にJavaScriptアダプター内でiframeを使用してセッション・ステータスをチェックするために使用されるCookie)を変更する必要がありました。この設定では Secure
パラメーターも設定する必要があることに注意してください。このバージョン以降、JavaScriptアダプターはKeycloak側でSSL / TLS接続を使用する場合にのみ完全に機能します。
Keycloak 8.0.0
ハイライト
ボールト(Vault)
いくつかの設定フィールドは、LDAPバインド・パスワード、SMTPパスワード、およびアイデンティティー・プロバイダー・シークレットの値を直接入力する代わりに、ボールトから値を取得できます。
さらに、カスタム・ボールトからシークレットにアクセスするための拡張機能の開発を可能にする新しいボールトSPIが導入されました。
新しいデフォルト・ホスト名プロバイダー
固定ホスト名プロバイダーとリクエストホスト名プロバイダーは、単一の新しいデフォルト・ホスト名プロバイダーに置き換えられました。このプロバイダーには、次のような多くの改善点があります。
-
固定ベースURLを設定するためにプロバイダーを変更する必要がない
-
フロントエンドとバックエンドのリクエストでの異なるベースURLをサポート
-
Keycloakがリバース・プロキシーを介して異なるコンテキストパスで公開されている場合のコンテキストパスの変更をサポート
テーマリソースのメッセージ
テーマリソースのメッセージ・バンドルにより、オーセンティケーターなどのカスタム・プロバイダーの国際化が可能になります。また、すべてのテーマタイプ間で共有されるため、たとえばログイン・コンソールとアカウント・コンソール間でメッセージを共有できます。 micedre に感謝します。
SAMLアダプター用のRoleMappingsProvider SPI
SAMLアサーションから抽出されたロールをSPアプリケーション環境に存在するロールにマッピングするために、SAMLアダプターによって使用されるカスタム・ロールマッパーの設定を可能にする新しいSPIを追加しました。これは、アダプターがサードパーティーのIDPと通信する必要があり、アサーションでIDPによって設定されたロールがSPアプリケーションに対して定義されたロールに対応していない場合に特に役立ちます。使用するプロバイダーは、 keycloak-saml.xml
ファイルまたは keycloak-saml
サブシステムで設定できます。プロパティー・ファイルの内容に基づいてロールマッピングを実行する実装も提供されました。
KeycloakがIDPとして機能する場合、ロールをアサーションに設定する前に、組み込みのロールマッパーを使用して必要なマッピングを実行できるため、この場合、このSPIはおそらく冗長になることに注意してください。 RoleMappingsProvider
SPIは、IDPがロールをアサーションに追加する前にマップする方法を提供しない状況のために設計されました。
パスワードレス認証、多要素認証、ユーザーごとの複数のクレデンシャルのサポート
W3C Web Authenticationサポートの登場により、認証フローシステムを改良し、ユーザーがログインに適した認証方法の選択(たとえば、OTPクレデンシャルとWebAuthnクレデンシャルの選択)ができるようにしました。新しいメカニズムにより、管理者はパスワードレス・ログインのフローを作成することもできます。たとえば、認証方法としてWebAuthnを使用するだけです。これらの変更により、場合によっては作成したカスタム認証フローを新しい制御ロジックに適合させる必要があることに注意してください。
これらの変更の結果、ユーザーは複数のOTPデバイスと複数のWebAuthnデバイスを使用できるようになりました。ユーザーがログイン時に使用するデバイスのタイプを選択できるようにする同じシステムでは、ユーザーが使用する特定のデバイスを選択することもできます。 Cloudtrust チーム: AlistairDoswald 、 sispeo 、 Fratt の貢献、および harture 、 Laurent の協力に感謝します。
その他の改善
theme.propertiesでのシステム・プロパティーと環境変数のサポート
theme.propertiesファイル内でシステム・プロパティーと環境変数を使用できるようになりました。 Opa- に感謝します。
署名されたJWTを使用したクライアント認証のためのより多くの署名アルゴリズムのサポート
tnorimat の貢献により、署名付きJWTを使用したクライアント認証用の署名アルゴリズムをサポートしました。
JavaScriptアダプターへのログインの有効化/無効化のサポート
jonkoops の貢献により、JSアダプターのロギングを有効または無効にできるようになりました。
JavaScriptアダプターからクレデンシャルのサポートが削除されました
JavaScriptアダプターでクライアント・クレデンシャルを提供するオプションが削除されました。 jonkoops に感謝します。
Gatekeeperの更新
-
セキュアトークンとログアウト・エンドポイントはGatekeeperに含まれました。 fredbi に感謝します。
-
Gatekeeperには、サブドメインに適用されるCookieを作成するバグがありました。 daniel-ac-martin のおかげで、問題は修正されました。
-
現在、GatekeeperはSame-site cookiesのサポートを提供しています。 fiji-flo に感謝します。
サーバーへのスクリプトのデプロイ
特定の動作をカスタマイズするためにスクリプトをデプロイおよび実行する方法の詳細については、 7.0.1 Release Notes を参照してください。
Keycloak 7.0.1
サーバーへのスクリプトのデプロイ
これまで、管理者はKeycloak管理コンソールとRESTful Admin APIを使用して、サーバーにスクリプトをアップロードできました。
現時点では、この機能はデフォルトで 無効 であり、ユーザーはスクリプトをサーバーに直接デプロイすることを選択する必要があります。詳細については、JavaScript Providersを参照してください。
Keycloak 7.0.0
ハイライト
新しいアカウント・コンソール
新しいアカウント・コンソールとアカウントREST APIに対して多くの改良が行われました。まだ準備は完了していませんが、それが実現しつつあり、うまくいけば、Keycloak 8で完了します。
署名および暗号化されたIDトークンのサポート
Keycloakは、JSON Web Encryption(JWE)の仕様に従って署名および暗号化されたIDトークンをサポートできます。 tnorimat に感謝します。
その他の改善
-
JavaScriptアダプターに追加されたPKCEのサポート。 thomasdarimont に感謝をします。
-
Keycloakコンテナー・イメージに追加されたOracle Databaseのサポート。 nerdstep に感謝をします。
-
SAMLアダプターに追加されたクロックスキューのサポート。 steevebtib に感謝をします。
-
Node.jsアダプターのTypeScriptサポート。 evanshortiss に感謝をします。
-
Gatekeeperは、Cookieで暗号化することで、ヘッダーで暗号化されていないトークンを提供できるようになりました。また、Keycloakサーバーで
Revoke Refresh Token
が有効になっている場合に起きる、Gatekeeperのバグがありました。この問題は修正されています。 fredbi に感謝をします。 -
管理コンソールでクライアントロールに対するユーザーの一覧を表示するための新しいタブ。 unly に感謝をします。
Keycloak 6.0.0
PS256のサポート
tnorimat のおかげで、KeycloakはPS256でトークンの署名と検証をサポートするようになりました。
Keycloak 4.8.0.Final
OpenShitとの統合
サービス・アカウントをOAuthクライアントとして自動的にKeycloakに公開する機能を含め、OpenShift 3.11をKeycloakで完全に保護することが可能になりました。
これは現在はテクノロジー・プレビュー機能です。
Rules/Droolsポリシーはテクノロジー・プレビュー機能としてマークされました
これまで、Droolsポリシーはデフォルトで有効になっていました。しかし、現在はこのポリシータイプはテクノロジー・プレビュー機能としてのみ利用可能です。使用するには、プレビュー・プロファイルまたは対応する機能を有効にする必要があります。詳しくは、 Authorization Services Guide を見てください。
Keycloak 4.7.0.Final
Keycloak 4.6.0.Final
Keycloak Gatekeeper
Keycloak Gatekeeperは、アダプターなしでアプリケーションとサービスを保護するために使用できるセキュリティー・プロキシーを提供します。アプリケーションと並行してローカルにインストールすることも、OpenShiftまたはKubernetesのサイドカーとしてインストールすることもできます。
この機能をKeycloakに提供してくれた gambol99 に大きな感謝をします。
Keycloak 4.5.0.Final
Signature SPI
Signature SPIは、追加の署名アルゴリズムをプラグインすることを可能にします。 これにより、追加の署名が有効になり、署名の生成方法を変更することもできます。たとえば、これを使用すると、HSMデバイスを使用してトークンに署名できます。
この作業の重要な部分をコントリビューションしてくれた tnorimat に感謝します。
新しい署名アルゴリズム
Signature SPIと並んで、追加の署名アルゴリズムのサポートもあります。
Keycloakは現在、RS256、RS384、RS512、ES256、ES384、ES512、HS256、HS384、およびHS512をサポートしています。
楕円曲線デジタル署名アルゴリズム(ES256/384/512)は、RSA署名と同様のセキュリティ特性を提供しますが、使用するCPUが大幅に少なくなるため非常に興味深いものです。
アプリケーションに署名を検証させたくない場合は、HMAC(HS256/384/512)も非常に便利です。これらは対称型の署名であるため、Keycloakのみが署名を検証できますが、アプリケーションはトークンの検証にトークン・イントロスペクション・エンドポイントを使用する必要があります。
この作業の重要な部分をコントリビューションしてくれた tnorimat に感謝します。
OpenID Connectクライアントに対するより良いAudienceサポート
OpenID Connectクライアント用に発行されたトークンでAudienceを指定できるようになりました。アダプター側でのAudience検証のサポートもあります。
マイナーな改善
-
LocaleSelector SPIが追加されました。これにより、特定のリクエストに対してロケールを解決する方法を変更できます。 knutz3n に感謝します。
-
最初のIdP認証後にアイデンティティー・プロバイダーのアイデンティティーを既存のアカウントに自動的にリンクするオーセンティケーターを追加しました。 slominskir に感謝します
Keycloak 4.4.0.Final
WildFly 13へのアップグレード
Keycloakサーバーは、内部でWildFly 13を使用するようにアップグレードされました。これは、基礎となる依存関係の更新と、構成のいくつかの変更を意味します。また、WildFly 13アダプターもサポートしており、Cross-DCセットアップ用に基礎となるJDG/Infinispanサーバーのバージョンをアップグレードしました。詳しくは Upgrading Guide を参照してください。
マイナーな改善
-
ウェルカム・ページのデザインを更新
-
現在のロケールをOAuth2 IdPに渡すことを許可。 knutz3n に感謝します。
-
Content-Security-Policy-Report-Onlyセキュリティー・ヘッダーのサポート。 knutz3n に感謝します。
-
SAML用のスクリプトベースのProtocolMapper。 AlistairDoswald に感謝します。
Keycloak 4.3.0.Final
Hostname SPI
Hostname SPIは、Keycloakのホスト名を設定するためのより柔軟な方法を導入します。2つの組み込みプロバイダがあります。1つ目はrequestで、リクエストヘッダーを使ってホスト名を決定します。2番目はfixedで、固定ホスト名を設定できます。後者は、有効なホスト名のみが使用可能であることを確認し、また内部アプリケーションが代替URLを通じてKeycloakを呼び出すことを可能にします。
詳細については、 Server Administration Guide の脅威軽減のセクションを参照してください。
X509 Client Authenticator
新しく追加されたClient Authenticatorは、X509クライアント証明書とMutual TLSを使用してクライアントからの接続を保護します。それに加えて、Keycloakサーバーはクライアント証明書のSubject DNフィールドを検証します。
認可サービスのパフォーマンス向上
今回のリリースでは、全面的にポリシー評価のパフォーマンスが向上し、信頼性とスループットが向上しました。私たちが行った主な変更は、不要なフローを回避してポリシー評価パスを最適化し、発生したらすぐに決定情報を収集することでした。また、要求ごとにポリシー決定キャッシュを導入し、以前に評価されたポリシーによる重複した決定を避けるようにしました。
私たちは、より良いエクスペリエンスを与える他のキャッシュ・レイヤーにも取り組んでいます。 KEYCLOAK-7952 を参照してください。
サーバーからパーミッションを取得する際のレスポンスモードの選択
以前のバージョンでは、アクセストークンとリフレッシュトークンを含む標準のOAuth2レスポンスを使用して、パーミッションは常にサーバーから返されていました。このリリースでは、クライアントは response_mode
パラメーターを使用してサーバーが認可リクエストにどのように応答するべきかを指定することができます。このパラメーターは次の2つの値を受け入れます。
-
decision
レスポンスには、サーバーによってパーミッションが付与されたかどうかを示すフラグのみを含めるように指示します。そうでなければ、
403
HTTPステータスコードが返されます。 -
permissions
JSON形式を使用して、レスポンスにサーバーから付与されたすべてのパーミッションが含まれるように指示します。
NodeJSポリシー・エンフォーサー
NodeJS用のアダプターである keycloak-nodejs-connectは、サーバーからの決定に基づいてリソースを保護するための構築をサポートするようになりました。新しい構文により、ユーザーは次のようにきめ細かいパーミッションを使用して自分のリソースを保護できます。
app.get('/protected/resource', keycloak.enforcer('resource:view'), function (req, res) {
res.json({message: 'access granted'});
});
Googleログイン用のホストドメインのサポート
Googleでのログインは、GoogleログインをGoogleの特定のホストドメインに制限するための hd
パラメーターをサポートします。これがアイデンティティー・プロバイダーで指定されている場合は、異なるドメインからのログインは拒否されます。
brushmateのコントリビューションに感謝します。
Keycloak 4.2.0.Final
Cordovaのブラウザータブのサポート
Cordova用のJavaScriptアダプターでブラウザータブとユニバーサル・リンクを使用できるようになりました。これにより、複数のアプリケーション間のSSOが可能になり、セキュリティが向上します。
gtudan のコントリビューションに感謝します。
Keycloak 4.0.0.Final
クライアント・スコープとOAuth 2スコープ・パラメーターのサポート
クライアント・テンプレートに代わるクライアント・スコープのサポートが追加されました。クライアント・スコープは、より柔軟なアプローチであり、OAuthの scope
パラメーターに対してより良いサポートを提供します。
同意画面には、クライアント・スコープに関する変更があります。同意画面のリストは、プロトコル・マッパーとロールの代わりにクライアント・スコープにリンクされるようになりました。
詳細については、マニュアルおよび移行ガイドを参照してください。
OAuth 2 Certificate Bound Access Tokens
OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokensの仕様の部分実装が行われました。より正確には、Certificate Bound Access Tokenをサポートしました。コンフィデンシャル・クライアントが双方向SSLを使用できる場合、Keycloakはクライアント用に発行されたトークンにクライアント証明書のハッシュを追加できます。現在のところ、Keycloak自体だけで、トークンハッシュを検証します(たとえば、 refresh token
リクエストの間)。アダプターにもサポートを追加する予定です。Mutual TLSクライアント認証のサポートも追加する予定です。
tnorimatのコントリビューションに感謝します。
Authorization Services
UMA 2.0のサポート
UMA 2.0が認可サービスでサポートされるようになりました。以前のバージョンのKeycloakからアップグレードしている場合は、ドキュメントの詳細を確認してください。
Keycloakアカウント・サービスによるUser-Managed Access
これで、エンドユーザーはKeycloakアカウント・サービスを通じて、リソースとそのリソースに関連付けられたパーミッションを管理することができます。そこから、リソースオーナーは自分のリソースを確認し、他のユーザーとリソースを共有したり、他のユーザーからの要求を承認することができます。
クレームのプッシュ
クライアント・アプリケーションは、任意のクレームに基づいてパーミッションを評価するために、認可リクエストとともにKeycloakにそれらのクレームを送信できるようになりました。これは、特定のトランザクションの範囲内で、またはランタイムに関する情報に基づいてアクセスを許可(または拒否)する必要がある場合に、非常に便利です。
ポリシー・エンフォーサーは、通常のアクセストークンを受け入れるようになりました
場合によっては、通常のアクセストークンをリソースサーバーに送信するだけで、これらのリソースに対してポリシーを適用することができます。
このリリースで導入された主な変更の1つは、(UMAを使用しない場合)リソースサーバーによって保護されたリソースにアクセスするために、アクセストークンをRPTと交換する必要がなくなったことです。ポリシー・エンフォーサーがリソースサーバー側でどのように設定されているかに応じて、通常のアクセストークンをベアラートークンとして送信するだけで、パーミッションは引き続き適用されます。
ポリシー・エンフォーサーは、オンデマンドでサーバーからリソースをロードできるようになりました
今のところ、 policy-enforcer
で設定されたアプリケーションをデプロイするときに、ポリシー・エンフォーサーはサーバーからすべてのプロテクトされたパスをロードするか、またはアダプター設定から取得したこれらのパスをマップするだけです。ユーザーは、サーバーからオンデマンドでパスをロードし、アダプター設定でこれらのリソースをマップすることを避けることができます。保護されたリソースの数に応じて、この機能を使用すると、アプリケーションのデプロイメント時間を短縮することもできます。
ポリシー・エンフォーサーは、リソース・キャッシュの設定をサポートするようになりました
サーバーへの不必要なヒットを避けるために、ポリシー・エンフォーサーは、保護されたリソースとアプリケーション内の対応するパスとの間のマッピングをキャッシュします。ユーザーはキャッシュの動作を設定したり、完全に無効にすることもできます。
Authorization Services
テーマとテーマのリソース
通常のプロバイダー配備で、テーマをKeycloakにホットデプロイできるようになりました。テーマリソースのサポートも追加しました。テーマを作成せずにテンプレートとリソースを追加することができます。これは、認証フローに追加されるページを必要とするカスタム・オーセンティケーターにとって便利です。
特定のクライアントのテーマを無効にするサポートも追加しました。それがニーズに合っていない場合は、カスタムロジックを実装してテーマを選択できる新しいテーマセレクターSPIもあります。
Instagramアイデンティティー・プロバイダー
Instagramでログインするためのサポートが追加されました。 hguerrero からのコントリビュートに感謝します。
アダプター
JavaScript - ネイティブPromiseのサポート
JavaScriptアダプターは、ネイティブのPromiseをサポートするようになりました。古いスタイルのPromiseも、今までどおりサポートしています。どちらも区別せずに使用できます。
JavaScript - Cordovaオプション
JavaScriptアダプターのログインやその他のメソッドにCordova固有のオプションを渡すことができるようになりました。 loorent からのコントリビュートに感謝します。