Keycloak 14.0.0

ハイライト

クライアント・ポリシーとFinancial-grade API(FAPI)のサポート

Keycloakサーバーは、クライアント・ポリシーとFinancial-grade API(FAPI)を公式にサポートするようになりました。この機能は以前のバージョンでプレビューされていましたが、現在はより洗練され、適切に文書化されています。これに関するほとんどの作業を行ってくれた Takashi Norimatsu に感謝します。また、 https://github.com/andriimurashkin [Andrii Murashkin] と Hryhorii Hevorkian にも感謝します。彼らは、この機能についても多くの作業を行いました。最後に、 FAPI Special interest group のすべてのメンバーの支援とフィードバックに感謝します。

ユーザー・プロフィールSPIの改善と宣言型設定のサポート

このバージョンでは、Keycloakでユーザー・プロフィールを管理する方法の基礎を準備するために、ユーザー・プロフィールSPIにいくつかの改善が加えられました。

これらの改善の1つは、管理コンソールを介したユーザー・プロフィールの設定のサポートです。詳細については、 Server Administration Guide を参照してください。

コミュニティーとこの取り組みに携わったすべての方に感謝します。

オフライン・セッションの改善

オフライン・セッションの事前ロードが改善され、 Peter Flintholm のおかげでより高速になるはずです。

プレビュー機能として、 Thomas Darimont の取り組みのおかげで、オフライン・セッションの事前ロードをスキップして遅延ロードを行うことができます。この機能は、サーバー設定で明示的にアクティブ化する必要があります。詳細については、サーバー管理ガイドを参照してください。

その他の改善

  • アクティブな認証中セッションの最大数を設定するためのサポート。デフォルト値は、ブラウザーのセッションごとに300の認証中セッション(ブラウザータブ)に設定されています。

Keycloak 13.0.0

ハイライト

WildFly 23へのアップグレード

Keycloakサーバーは、基盤となるコンテナーとしてWildfly 23.0.2.Finalを使用するようにアップグレードされました。

OAuth 2.0デバイス認可グラント (RFC 8628)

OAuth 2.0デバイス認可グラントのサポートが利用可能になりました。

Hiroyuki WadaŁukasz DywickiMichito Okai に感謝します。

OpenID Connect Client Initiated Backchannel Authentication (CIBA)

OpenID Connect Client Initiated Backchannel Authentication (CIBA)のサポートが利用可能になりました。

実装とフィードバックに対する https://github.com/tnorimat [Takashi Norimatsu]、https://github.com/andriimurashkin [Andrii Murashkin]、https://github.com/c4r1570p4e [Christophe Lannoy]、およびFAPI WGのメンバーに感謝します。

サーバーからクライアントへの通信でのSAMLアーティファクト・バインディング

Keycloakは、SAML Artifact バインディングを使用したクライアントとの通信をサポートするようになりました。新しい Force Artifact Binding オプションがクライアントの設定に導入され、アーティファクト・メッセージを使用してクライアントとの通信を強制します。詳細については、 Server Administration Guide に進んでください。このバージョンでは、Keycloak SAMLクライアント・アダプターはアーティファクト・バインディングをサポートしていないことに注意してください。

AlistairDoswaldhartureに感謝します。

アイデンティティー・ブローカリングに対するPKCEのサポート

Keycloakは、外部のOpenID ConnectのIdPにブローカリングするときにPKCEを活用できるようになりました。

thomasdarimont に感謝します。

デフォルトロール処理の改善

デフォルトロールが、通常は default-roles-<realmName> という名前の新しいロールの複合ロールとして内部的に保存されるようになりました。レルムとすべてのクライアントのデフォルトロールの両方を、新しく作成されたユーザーまたはアイデンティティー・ブローカリングを介してインポートされたユーザーに直接割り当てる代わりに、ロールだけが割り当てられ、残りのデフォルトロールは有効なロールとして割り当てられます。この変更により、すべてのクライアントを通過する必要がなくなるため、特に多数のクライアントでのデフォルトロールの処理のパフォーマンスが向上します。

Keycloak 12.0.0

ハイライト

Keycloak.Xディストリビューション・プレビュー

新規および今後のKeycloak.Xディストリビューションがプレビュー機能として導入されました。このディストリビューションはQuarkusを利用しており、起動時間とメモリ消費量が大幅に改善されるだけでなく、Keycloakの設定がはるかに簡単になります。

新しいアカウント・コンソールがデフォルトになりました

新しいアカウント・コンソールはプレビュー機能ではなくなり、Keycloakのデフォルトのアカウントコンソールになりました。古いアカウント・コンソールはしばらくの間残ります。古いアカウントコンソール用のカスタムテーマがある場合は、デフォルトで古いコンソールが使用されるため、すぐにカスタムテーマを新しいアカウントコンソールに更新する必要はありません。

OpenID Connect Back-Channel Logout

DaSmoobenjamin37 のおかげで、OpenID Connect Back-Channel Logoutが利用可能になりました。

WildFly 21へのアップグレード

Keycloakサーバーは、基盤となるコンテナーとしてWildfly 21を使用するようにアップグレードされました。

SAMLアイデンティティー・プロバイダーでAuthnContextをリクエストする機能

SAMLアイデンティティー・プロバイダーによって発行される認証リクエストにおけるAuthnContextセクションの指定がサポートされました。

lscorcia に感謝します。

FAPI RWのサポートとクライアント・ポリシーの初期サポート

Financial-grade API Read and Write API Security Profile(FAPI RW)をサポートするために行われた作業がたくさんありました。これはクライアント・ポリシーの使用で利用可能であり、まだプレビュー状態です。次のリリースでは、さらに磨きをかけることが期待できます。 Takashi NorimatsuFAPI 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 を参照してください。

最新バージョンのブラウザーでは、SAML POSTバインディングが正常に動作しません

Keycloak SAMLアダプターが正しく動作するには、 JSESSIONID Cookieの SameSite 値を None にする必要があります。SAML POSTバインディングが使用されている場合、異なる値を使用すると、Keycloakへのリクエストごとにコンテナーのセッションがリセットされます。正しい動作を維持するように WildflyTomcat については、次の手順を参照してください。この回避策は、以前のバージョンのアダプターでも機能するはずであることに注意してください。

その他の改善

  • クライアントのオフライン・セッションの有効期間のサポート。 Yoshiyuki Tabata に感謝します。

  • チェコ語の翻訳。 Jakub Knejzlík に感謝します。

  • Facebook IDプロバイダーから追加のフィールドをフェッチ可能になりました。 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 のコントリビューションに感謝します。

セキュリティー・ヘッダーSPIとレスポンス・フィルター

レスポンスにセキュリティー関連のヘッダーを設定するときに柔軟性を高めるため、新しいSPIが導入されました。これにより、Keycloak内の実装がよりクリーンになりますが、必要に応じて完全にカスタマイズすることもできます。セキュリティー・ヘッダーは、コード自体ではなくレスポンス・フィルターによって設定されるようになりました。これにより、エラーが発生しにくくなり、一部のレスポンスでヘッダーが欠落する可能性がなくなります。

WildFly 19へのアップグレード

Keycloakサーバーは内部でWildFly 19を使用するようにアップグレードされました。

その他の改善

  • Keycloak JavaScriptアダプターに追加されたアプリケーション起動アクションの呼び出しのサポート

  • 評価中のリソースとポリシーのフェッチのパフォーマンスの向上

Keycloak 9.0.1

ハイライト

JavaScriptアダプターからPromiseTypeが削除されました

promiseTypeのinitオプションがJavaScriptアダプターから削除されました。代わりに、ネイティブPromise APIとレガシーKeycloak Promise APIの両方をサポートするPromiseが返されます。これにより、レガシー/非推奨のAPIからネイティブのPromise APIへのアプリケーションの段階的な移行が可能になります。

その他の改善

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

ハイライト

Droolsポリシーの削除

Droolsポリシーは非推奨期間の後に最終的に削除されました。より複雑なポリシーが必要な場合は、JavaScriptベースのポリシーが使用できます。

クライアントのページネーションのサポート

管理コンソールとREST APIで、ページ分割のサポートがクライアントに追加されました。 saibot94 に感謝します。

新しいElytronクレデンシャル・ストア・ボールト・プロバイダー

キーストアでサポートされているElytronクレデンシャル・ストアからシークレットを読み取る新しい組み込みのボールト・プロバイダーが、WildFly拡張機能として追加されました。クレデンシャル・ストアの作成と管理は、 elytron サブシステムまたは elytron-tool.sh スクリプトを使用してElytronによって処理されます。

W3C WebAuthnおよび認証フローに対するその他の更新

このリリースでは、認証フローの使いやすさが改善されました。エンドユーザーは、2要素認証に使用できる認証メカニズムを簡単に選択できます。ユーザーがより多くのOTPまたはWebAuthnクレデンシャルを持つことができるという事実を考慮し、OTPまたはWebAuthnでログインする方が直感的であるはずです。パスワードレスのWebAuthn認証のサポートも改善されました。最後に、認証フローに関連する欠陥についていくつかの作業を行いました。

ユーザーロケールの処理の改善

ログインページのロケールが選択される方法、およびユーザーのロケールが更新されるタイミングに多くの改良が加えられました。

詳細については、 Server Administration Guide を参照してください。

その他の改善

  • Authorizationヘッダートークンは、Gatekeeperのタイプがベアラーの場合にのみ考慮されます。 HansK-p に感謝します。

  • 署名済みクライアント・シークレットJWTを使用したクライアント認証では、より多くのアルゴリズムがサポートされています。具体的には、HS384およびHS512アルゴリズムが追加されました。 tnorimat に感謝します。

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.1

ハイライト

LDAPの課題

このリリースではKeycloak 7からのLDAPにおける致命的な脆弱性を修正しました。Keycloak 7.0.0、もしくは7.0.1、8.0.0をプロダクション環境で利用している場合は、すぐにアップグレードすることを強く推奨します。

WildFly 18.0.1.Final

WildFly 18.0.1.Finalにアップグレードしました。これにはサードパーティー・ライブラリーにおけるいくつかのCVEに対する更新が含まれています。

Keycloak 8.0.0

ハイライト

ボールト(Vault)

いくつかの設定フィールドは、LDAPバインド・パスワード、SMTPパスワード、およびIDプロバイダー・シークレットの値を直接入力する代わりに、ボールトから値を取得できます。

さらに、カスタム・ボールトからシークレットにアクセスするための拡張機能の開発を可能にする新しいボールトSPIが導入されました。

New Default Hostname provider

固定ホスト名プロバイダーとリクエストホスト名プロバイダーは、単一の新しいデフォルト・ホスト名プロバイダーに置き換えられました。このプロバイダーには、次のような多くの改善点があります。

  • 固定ベース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がロールをアサーションに追加する前にマップする方法を提供しない状況のために設計されました。

WildFly 18 アップグレード

Keycloakサーバーは内部でWildFly 18を使用するようにアップグレードされました。

W3C Web Authenticationサポート

このリリースでは、W3C Web Authentication(WebAuthn)の初期サポートを追加しました。現在の実装にはいくつかの制限がありますが、この領域のさらなる改善に取り組んでいます。 tnorimat の貢献に感謝します。また、 ynojima のご協力とフィードバックにも感謝します。

パスワードレス認証、多要素認証、ユーザーごとの複数のクレデンシャルのサポート

W3C Web Authenticationサポートの登場により、認証フローシステムを改良し、ユーザーがログインに適した認証方法の選択(たとえば、OTPクレデンシャルとWebAuthnクレデンシャルの選択)ができるようにしました。新しいメカニズムにより、管理者はパスワードレス・ログインのフローを作成することもできます。たとえば、認証方法としてWebAuthnを使用するだけです。これらの変更により、場合によっては作成したカスタム認証フローを新しい制御ロジックに適合させる必要があることに注意してください。

これらの変更の結果、ユーザーは複数のOTPデバイスと複数のWebAuthnデバイスを使用できるようになりました。ユーザーがログイン時に使用するデバイスのタイプを選択できるようにする同じシステムでは、ユーザーが使用する特定のデバイスを選択することもできます。 Cloudtrust チーム: AlistairDoswaldsispeoFratt の貢献、および hartureLaurent の協力に感謝します。

その他の改善

theme.propertiesでのシステム・プロパティーと環境変数のサポート

theme.propertiesファイル内でシステム・プロパティーと環境変数を使用できるようになりました。 Opa- に感謝します。

署名されたJWTを使用したクライアント認証のためのより多くの署名アルゴリズムのサポート

tnorimat の貢献により、署名付きJWTを使用したクライアント認証用の署名アルゴリズムをサポートしました。

設定可能なOIDCアイデンティティー・プロバイダーのクライアント認証方式

このリリースでは、署名付きJWTまたはBASIC認証でOIDCプロバイダーを認証できる機能が追加されました。そのため、 OIDC仕様 に記載されているすべてのクライアント認証方式がサポートされるようになりました。貢献してくれた madgaetrradillen に感謝します。

JavaScriptアダプターへのログインの有効化/無効化のサポート

jonkoops の貢献により、JSアダプターのロギングを有効または無効にできるようになりました。

JavaScriptアダプターからクレデンシャルのサポートが削除されました

JavaScriptアダプターでクライアント・クレデンシャルを提供するオプションが削除されました。 jonkoops に感謝します。

Gatekeeperの更新

  • セキュアトークンとログアウト・エンドポイントはGatekeeperに含まれました。 fredbi に感謝します。

  • Gatekeeperには、サブドメインに適用されるCookieを作成するバグがありました。 daniel-ac-martin のおかげで、問題は修正されました。

  • 現在、GatekeeperはSame-site cookiesのサポートを提供しています。 fiji-flo に感謝します。

サーバーへのスクリプトのデプロイ

特定の動作をカスタマイズするためにスクリプトをデプロイおよび実行する方法の詳細については、 7.0.1 リリースノート を参照してください。

Keycloak 7.0.1

サーバーへのスクリプトのデプロイ

これまで、管理者はKeycloak管理コンソールとRESTful Admin APIを使用して、サーバーにスクリプトをアップロードできました。

現時点では、この機能はデフォルトで 無効 であり、ユーザーはスクリプトをサーバーに直接デプロイすることを選択する必要があります。詳細については、JavaScriptプロバイダーを参照してください。

Keycloak 7.0.0

ハイライト

WildFly 17 アップグレード

Keycloakサーバーは内部でWildFly 17を使用するようにアップグレードされました。

Tomcat 9アダプターのサポート

Apache Tomcat 8とApache Tomcat 9のJavaアダプターは統合され、現在は両方に対応しています。

新しいアカウント・コンソール

新しいアカウント・コンソールとアカウントREST APIに対して多くの改良が行われました。まだ準備は完了していませんが、それが実現しつつあり、うまくいけば、Keycloak 8で完了します。

署名および暗号化されたIDトークンのサポート

Keycloakは、JSON Web Encryption(JWE)の仕様に従って署名および暗号化されたIDトークンをサポートできます。 tnorimat に感謝します。

テストとリリースの自動化

Keycloakチームは、KeycloakとRed Hat Single Sign-Onの両方のテストとリリースに関する自動化にかなりの時間を費やしました。

その他の改善

  • 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

WildFly 16 アップグレード

Keycloakサーバーは内部でWildFly 16を使用するようにアップグレードされました。

SmallRye HealthとSmallRye Metricsの拡張

Keycloakは、標準的な正常性とメトリクスのエンドポイントを提供するSmallRye HealthとSmallRye Metricsの拡張機能が有効になりました。Keycloak固有のメトリクスと同様にいくつかのドキュメントを間もなく追加します。

PS256のサポート

tnorimat のおかげで、KeycloakはPS256でトークンの署名と検証をサポートするようになりました。

MP-JWTクライアント・スコープ

Eclipse MicroProfile仕様に従ったトークンを発行しやすくするための新しい組み込みクライアント・スコープです。

Keycloak 5.0.0

WildFly 15 アップグレード

Keycloakサーバーは内部でWildFly 15を使用するようにアップグレードされました。

Keycloak 4.8.0.Final

OpenShitとの統合

サービス・アカウントをOAuthクライアントとして自動的にKeycloakに公開する機能を含め、OpenShift 3.11をKeycloakで完全に保護することが可能になりました。

これは現在はテクノロジー・プレビュー機能です。

Rules/Droolsポリシーはテクノロジー・プレビュー機能としてマークされました

これまで、Droolsポリシーはデフォルトで有効になっていました。しかし、現在はこのポリシータイプはテクノロジー・プレビュー機能としてのみ利用可能です。使用するには、プレビュー・プロファイルまたは対応する機能を有効にする必要があります。詳しくは、 Authorization Services Guide を見てください。

DB2のサポートを削除

DB2サポートはしばらくの間非推奨でした。このリリースでは、DB2のサポートをすべて削除しました。

Keycloak 4.7.0.Final

Remember Meの強化

Remember Meセッション用に異なるセッションアイドル時間と最大タイムアウトを指定する機能が導入されました。これにより、Remeber Meセッションを通常のセッションよりも長く生存させることができます。

グループのページネーション・サポート

これまで、多数のグループが管理コンソールで問題を引き起こしていました。これは現在、グループのページネーションの導入によって解決されています。

オフライン・セッションが多数ある場合の起動時間を改善

これまでは、オフライン・セッションが多いと、サーバーの起動に時間がかかる場合がありました。この起動時間は大幅に短縮されました。

Keycloak 4.6.0.Final

WildFly 14へのアップグレード

Keycloakサーバーは内部でWildFly 14を使用するようにアップグレードされました。

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 を参照してください。

Node.jsでの認可サービスのサポート

Node.jsで認可サービスをサポートすることで、Node.jsアダプターを使用してきめ細かい中央での認可を行うことが非常に簡単になります。

マイナーな改善

  • ウェルカム・ページのデザインを更新

  • 現在のロケールを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のコントリビューションに感謝します。

HTML出力における危険なタグのエスケープ

ほとんどのHTML出力はHTMLタグに対してすでにエスケープされていますが、HTMLタグが許可されている場所がいくつかあります。これらは、値を更新するためには管理者アクセスが必要な箇所に限られています。そのようなフィールドを更新するには管理者アクセスが必要になりますが、追加の防御層が追加され、現在では <script> のような危険な要素をエスケープしています。

Keycloak 4.2.0.Final

Cordovaのブラウザータブのサポート

Cordova用のJavaScriptアダプターでブラウザータブとユニバーサル・リンクを使用できるようになりました。これにより、複数のアプリケーション間のSSOが可能になり、セキュリティが向上します。

gtudan のコントリビューションに感謝します。

SAMLアダプターのマルチテナンシーのサポート

SAMLアダプターは、OpenID Connect用の組み込みアダプターのように、マルチテナンシーをサポートします。

ドット(.)でクレームを作成するオプション

以前のバージョンでは、ドット(.)文字を含むクレーム名を使用してトークン内にクレームを作成することはできませんでした。現在は、設定内のドット文字をエスケープすることが可能になり、ドット文字を含むクレーム名を使用できます。

Keycloak 4.1.0.Final

Spring Boot 2をデフォルトのスターターにしました

リリース4.1以降、Spring BootスターターはSpring Boot 2アダプターをベースにしています。以前のバージョンのSpring Bootを使用している場合は、keycloak-legacy-spring-boot-starterが利用可能です。

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アカウント・サービスを通じて、リソースとそのリソースに関連付けられたパーミッションを管理することができます。そこから、リソースオーナーは自分のリソースを確認し、他のユーザーとリソースを共有したり、他のユーザーからの要求を承認することができます。

非同期認可フロー

UMAを使用する場合、クライアント・アプリケーションは、認可リクエストが認可フローを開始してリソースオーナーの承認を求めるかどうかを選択できるようになりました。この機能により、アプリケーションは、別のユーザーの代わりにリソースの1つにアクセスしようとするときに、リソースオーナーの承認を求めることができます。

ユーザー管理パーミッションAPI

リソースサーバーは、特定のユーザーが所有するリソースに追加のポリシーを関連付けることができるようになりました。新しいAPIは、ロール、グループ、ユーザー、クライアント、JavaScriptなどのさまざまなポリシータイプを使用して、これらのパーミッションを管理する操作を提供します。

クレームのプッシュ

クライアント・アプリケーションは、任意のクレームに基づいてパーミッションを評価するために、認可リクエストとともにKeycloakにそれらのクレームを送信できるようになりました。これは、特定のトランザクションの範囲内で、またはランタイムに関する情報に基づいてアクセスを許可(または拒否)する必要がある場合に、非常に便利です。

リソース属性

Keycloakで保護されているリソースに属性を関連付け、これらの属性を使用してポリシーのパーミッションを評価することが可能になりました。

ポリシー・エンフォーサーは、通常のアクセストークンを受け入れるようになりました

場合によっては、通常のアクセストークンをリソースサーバーに送信するだけで、これらのリソースに対してポリシーを適用することができます。

このリリースで導入された主な変更の1つは、(UMAを使用しない場合)リソースサーバーによって保護されたリソースにアクセスするために、アクセストークンをRPTと交換する必要がなくなったことです。ポリシー・エンフォーサーがリソースサーバー側でどのように設定されているかに応じて、通常のアクセストークンをベアラートークンとして送信するだけで、パーミッションは引き続き適用されます。

ポリシー・エンフォーサーは、オンデマンドでサーバーからリソースをロードできるようになりました

今のところ、 policy-enforcer で設定されたアプリケーションをデプロイするときに、ポリシー・エンフォーサーはサーバーからすべてのプロテクトされたパスをロードするか、またはアダプター設定から取得したこれらのパスをマップするだけです。ユーザーは、サーバーからオンデマンドでパスをロードし、アダプター設定でこれらのリソースをマップすることを避けることができます。保護されたリソースの数に応じて、この機能を使用すると、アプリケーションのデプロイメント時間を短縮することもできます。

ポリシー・エンフォーサーは、リソース・キャッシュの設定をサポートするようになりました

サーバーへの不必要なヒットを避けるために、ポリシー・エンフォーサーは、保護されたリソースとアプリケーション内の対応するパスとの間のマッピングをキャッシュします。ユーザーはキャッシュの動作を設定したり、完全に無効にすることもできます。

クレーム情報ポイント

アダプターの policy-enforcer 定義( keycloak.json )もプッシュされたクレームの概念をサポートするように更新されました。ここには、クレーム情報ポイントという概念があります。このクレーム情報ポイントには、HTTPリクエストや外部HTTPサービスなど、さまざまなソースからクレームをプッシュするように設定できます。

Evaluation APIの改善

Keycloak(特にJavaScriptとDroolsポリシー)でポリシーを実装するために使用されるEvaluation APIは、以下のメソッドを提供します。

  • ユーザーロール、グループ、および属性のチェックなど、現在のレルムからの情報にアクセスする

  • 特定のパーミッションの強制方法に関する追加情報を提供するために、任意のクレームをリソースサーバーにプッシュバックする

Authorization Services

UMA 2.0

ユーザーがアカウント管理コンソールを介してユーザーアクセスを管理できるようにするなど、UMA 2.0が認可サービスでサポートされるようになりました。認可サービスには、他にも追加や改良があります。

クレームのプッシュ

パーミッションを評価するときに、クライアントが追加のクレームをプッシュし、ポリシーで使用されるようにすることが可能になりました。

リソース属性

パーミッションを評価するときに、リソースの属性を定義して、ポリシーで使用されるようにすることが可能になりました。

テーマとテーマのリソース

通常のプロバイダー配備で、テーマをKeycloakにホットデプロイできるようになりました。テーマリソースのサポートも追加しました。テーマを作成せずにテンプレートとリソースを追加することができます。これは、認証フローに追加されるページを必要とするカスタム・オーセンティケーターにとって便利です。

特定のクライアントのテーマを無効にするサポートも追加しました。それがニーズに合っていない場合は、カスタムロジックを実装してテーマを選択できる新しいテーマセレクターSPIもあります。

Instagramアイデンティティー・プロバイダー

Instagramでログインするためのサポートが追加されました。 hguerrero からのコントリビュートに感謝します。

管理コンソールでのユーザーIDによる検索

管理コンソールでIDを使用してユーザーを検索するには、以前はURLを編集する必要がありましたが、ユーザー検索フィールドで直接検索することが可能になりました。

アダプター

Spring Boot 2

Spring Boot 2をサポートしました。

Fuse 7

Fuse 7をサポートしました。

JavaScript - ネイティブPromiseのサポート

JavaScriptアダプターは、ネイティブのPromiseをサポートするようになりました。古いスタイルのPromiseも、今までどおりサポートしています。どちらも区別せずに使用できます。

JavaScript - Cordovaオプション

JavaScriptアダプターのログインやその他のメソッドにCordova固有のオプションを渡すことができるようになりました。 loorent からのコントリビュートに感謝します。