Keycloak 21.0.0

旧管理コンソールが削除されました

Keycloak 19では、新しい管理コンソールは新しいデフォルトの管理コンソールとなり、古い管理コンソールは非推奨となりました。このリリースでは、古い管理コンソールは完全に削除されました。

メトリクスにマイクロメーターを採用

Keycloakは、Prometheusフォーマットでメトリクスをエクスポートするメトリクス・エンドポイントをオプションで提供します。このリリースでは、このデータを提供する実装がSmallRyeからMicrometerに変更されました。この変更に伴い、メトリックスの名称が変更されました。

詳しくはマイグレーション・ガイドを参照してください。

KeycloakサーバーのJava 11サポートは廃止されました

Java11でKeycloakサーバーを実行することは非推奨となり、Keycloak22で削除される予定です。

Java8、Java11、Java17は引き続きサポートしていますが、Java8は遠くない将来にサポートを終了する予定です。

Hashicop Vaultのサポートを終了します

このリリースでは、Hashicorp vaultのアウトオブボックス・サポートを削除しました。

詳しくはこちらの 議論 を参照してください。

SAML SPメタデータの変更

このリリース以前は、SAML SPメタデータには、署名と暗号化の両方の用途に使用する同じキーが含まれていました。このバージョンのKeycloakから、SPメタデータには暗号化を目的としたレルムキーだけを含めるようにしました。また、各暗号化キー記述子に対して、そのキーが使用されることを想定したアルゴリズムも指定しています。次の表は、サポートされているXML-EncアルゴリズムとKeycloakレルムキーへのマッピングを示したものです。詳細は、 Upgrading Guide を参照してください。

XML-Enc algorithm

Keycloak realm key algorithm

rsa-oaep-mgf1p

RSA-OAEP

rsa-1_5

RSA1_5

ユーザー・セッション・プロバイダーの非推奨メソッドが削除されました

ユーザー・セッション・プロバイダーからいくつかの非推奨のメソッドが削除されました。まだ実行されていない場合、それらの使用法は、Keycloak 20リリースのJavadocで文書化されている対応の置換に置き換える必要があります。詳しくは Upgrading Guide を参照してください。

新しいストレージ: IS_CLIENT_ROLE の検索可能フィールドは非推奨になりました

RoleModelIS_CLIENT_ROLE 検索可能フィールドは非推奨となりました。これは、EXISTS または NOT_EXISTS という演算子とともに使用する CLIENT_ID 検索可能フィールドに置き換える必要があります。詳細はKeycloak 21のJavaDocを参照してください。

FIPS 140-2のプレビュー・サポート

前回のリリースで実験的だったKeycloakのFIPS 140-2サポートが、今回プレビューに昇格しました。このプレビュー版を作成するために、多くの修正と改良が行われました。詳しくは、 FIPSドキュメント を参照してください。フィードバックは歓迎します!

David AndersonSudeep Das Isaac Jensen には、この機能に関して多大な協力をいただき、改めて感謝申し上げます。

リバース・プロキシーで動作する場合の標準的な Forwarded ヘッダーのサポート

Keycloakは、リクエストのパスにプロキシー・サーバーが関与している場合、変更されたり失われたりするプロキシーによって追加された情報を取得するために、非標準の X-Forwarded-* を認識することに加えて、同じ目的のために標準の Forwarded ヘッダーを利用できるようになりました。

詳しくは、 リバースプロキシの使用 ガイドを参照してください。

Keycloakノードへのリクエストを行う際に、プロキシーが Forwarded ヘッダーをオーバーライドしていることを確認してください。

ubi9-microベースのコンテナー・イメージ

セキュリティー強化のため、 Keycloakコンテナー・イメージ は2つの点で変更されています。まず、UBI8ではなく、UBI9ベースになりました。第二に、以前は -minimal を使用していましたが、 -micro に替わりました。

UBI9への変更は、ほとんどのユーザーに影響を与えることはありません。まれにglibcエラー CPU does not support x86-64-v2 が表示される場合があります。 x86-64-v2+ は2009年以降のプロセッサーから利用可能です。仮想化環境の設定が間違っている場合に、この問題に遭遇する可能性が高いです。

minimal+ から micro への変更は、より大きな影響を与える可能性があります。イメージに簡単なカスタマイズを行うユーザーには、何の違いも感じられないでしょう。しかし、RPMをインストールするユーザーは、その方法を変更する必要があります。 container guide が更新され、その方法が紹介されています。

これらの変更の結果、Keycloakコンテナー・イメージに影響を与える既知のCVEは82%減少しました!

その他の改善

  • クライアント登録のアクセストークンのローテーションを無効化するオプション。 Réda Housni Alaoui に感謝します。

Keycloak 20.0.0

WildFlyディストリビューションが削除されました

Keycloak 17.0.0では、Quarkusベースの新しいKeycloakディストリビューションが導入され、WildFlyベースのディストリビューションは非推奨となりました。このリリースでは、WildFlyディストリビューションは削除され、サポートされなくなりました。

WildFlyディストリビューションを使用している場合は、できるだけ早くQuarkusディストリビューションに移行することを強くお勧めします。詳細については、 Migration Guide を参照してください。

新しいKeycloak Operatorのアップグレード

Quarkusベースのディストリビューション用の新しいKeycloak Operatorがプレビュー機能でなくなったことをお知らせします。新機能の追加や多くの改良を行いましたが、その結果、いくつかの変更点がありました。

レルムOperator

新しいOperatorは現在、CRの一部(ClientやUserなど)を欠いているため、レルムOperatorという形で一時的な回避策を導入しています。詳しくは、 GitHubリポジトリー を参照してください。また、 "The future of Keycloak Operator CRs" のブログ も参照してください。

サポートするOpenJDKのバージョン

Keycloakは、サーバーとアダプターの両方でOpenJDK 17をサポートするようになりました。

WildFlyベースのディストリビューションの削除に伴い、OpenJDK 8上でKeycloakサーバーを実行するためのサポートは終了しました。また、OpenJDK 8上でのKeycloakアダプターのサポートもKeycloak 21で削除する予定です。

Keycloak 22からは、最新のOpenJDK LTSリリースのみをサポートする予定であり、最新のOpenJDKリリースを迅速にサポートすることを目標としています。つまり、Keycloak 22では、KeycloakサーバーのOpenJDK 11サポートを削除する予定です。

Hostnameプロバイダーが完全なベースURLの設定に対応

このリリースでは、フロントエンドリクエストとAdmin Consoleのベース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サーバーから直接 keycloak.js をロードすることができます。この方法でJavaScriptライブラリをロードすることはベストプラクティスと考えられていないため、この機能を無効にすることができるフィーチャーガードがあります。

Keycloak 21ではこのオプションを非推奨とし、Keycloak 22ではKeycloakサーバーから keycloak.js をロードする機能を完全に削除する予定です。

OTPアプリケーション SPI

以前のリリースでは、ユーザーに表示されるOTPアプリケーションのリストは、Keycloakにハードコーディングされていました。OTPアプリケーションSPIの導入により、内蔵のOTPアプリケーションを無効にしたり、カスタムOTPアプリケーションを追加したりすることが可能になりました。

カスタム・アイデンティティー・プロバイダーは、プロバイダーのアイコンを設定できるようになりました

カスタム・アイデンティティー・プロバイダーが、ログインページで使用するアイコンを設定できるようになりました。 Klaus Betz に感謝します。彼は AppleIDでのログインをサポートするKeycloakの拡張 も保守しています。

FIPS 140-2の実験的サポート

FIPS 140-2対応環境にKeycloakをデプロイするための実験的サポートが開始されました。リリース後すぐに、試用方法の詳細をブログで紹介する予定です。フィードバックは歓迎します!

この機能の一部を提供してくれた David Anderson に感謝します。また、 Sudeep DasIsaac Jensen の最初のプロトタイプの努力に感謝します。これはインスピレーションとして使われました。

属性でのグループ検索

管理REST APIで属性によるグループ検索ができるようになりました。 Alice さんからのコントリビューションに感謝します。

アカウント・コンソールでのグループ・メンバーシップの表示

アカウント・コンソールで、ユーザーが自分のグループ・メンバーシップを確認できるようになりました。 cgeorgilakis さんのご寄稿に感謝します。

データ・プロバイダーやモデルから非推奨のメソッドが削除されました

いくつかの非推奨メソッドがデータ・プロバイダーとモデルから削除されました。まだ実行されていない場合、それらの使用法は、Keycloak 19リリースのJavadocで文書化されている対応の置換に置き換える必要があります。詳しくは Upgrading Guide を参照してください。

Keycloak 19.0.0

OpenID ConnectアダプターとSAMLアダプターのEnd-of-lifeについて

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年にEOLになりました。これらのバージョンをまだ使用している場合は、できるだけ早くJetty 9.4へのアップグレードを推奨します。

Spring Boot 1 (OpenID Connect)

Spring Boot 1.xは2019年にEOLになりました。まだ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 21で削除される予定です。

Keycloakストレージの変更点

Keycloakのストレージが変更され、現在のストレージはまだサポートされていますが、最終的には全く新しい実装に置き換えられます。この変更により、クラウド・ネイティブなストレージのサポート、ノーダウンタイム機能、ユーザーとは別の追加領域に対するカスタムストレージの実装のためのより良いサポートがもたらされます。

それは、現在のストアのサポートされている機能のいくつかの深い変更が legacy 機能になることを意味します。レガシーストアと新ストアは同時に使用することはできず、一度にアクティブにできるのは1つのストアのみです。

最も目に見える変化は、User Storage SPIが新しいストレージAPIであるMap Storage APIと互換性がないことです。したがって、User Storage SPIはレガシーストアとともに非推奨となり、 keycloak-model-legacy という別のモジュールに移行することになります。この変更はいくつかの領域、特にユーザー・フェデレーションとカスタム・ユーザー・プロバイダーに関連する領域に影響を与えます。

さらに、ストレージ層の詳細がRESTサービス層に対して透過的になるように、APIが統合されました。具体的には、サービスはキャッシュされたオブジェクトとキャッシュされていないオブジェクトを区別することができず、特に連携ストレージとローカルストレージにアクセスすることができません。

したがって、 KeycloakSession メソッドを通してローカル・ストレージやキャッシュのオブジェクトにアクセスするカスタム拡張機能は、レビューする必要があります。詳しくはUpgrading Guideを参照してください。

OIDCログアウトの変更

前回のリリースでは、OIDCログアウトのサポートを追加しました。このリリースでは、その他いくつかの修正と改善が含まれています。ハイライトは以下の通りです:

  • OIDC RP-Initiated Logoutの仕様の最近のドラフトで追加された client_id パラメーターに対応しました。これにより、ログアウト確認画面を表示する際に、クライアントの Consent Required フラグを使用する必要がなくなります。

  • OIDCクライアントに設定オプション Valid Post Logout Redirect URIs が追加されました。この変更はOIDCの仕様に沿ったもので、ログイン後とログアウト後のリダイレクトに異なるリダイレクトURIのセットを使用することができるようになっています。 Valid Post Logout Redirect URIs に使用される値 + は、ログアウト時に Valid Redirect URIs のオプションで指定したのと同じリダイレクトURIのセットを使用することを意味します。この変更は、後方互換性のため、以前のバージョンから移行する際のデフォルトの動作とも一致します。

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

電子メールのワークフローの更新

新しいプレビュー機能 UPDATE_EMAIL があります。この機能が有効になり、レルムで対応するフラグが有効になると、ユーザーはリンクをクリックすることでメールの更新を確認する必要があり、そのリンクは新しいメールアドレスに送信されます。詳しくは、 Server Administration Guide を参照してください。 Réda Housni Alaoui の貢献に感謝します。

レガシーなKeycloak Operatorで podDisruptionBudget が非推奨になりました。

このリリースでは、 レガシーKeycloak Operator のKeycloak CRの podDisruptionBudget フィールドを非推奨としました。このオプション・フィールドは、OperatorがKubernetesバージョン1.25以降にデプロイされる場合、無視されます。

回避策として、例えば、以下のようにクラスター内でPod Disruption Budgetを手動で作成できます。

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  labels:
    app: keycloak
  name: keycloak
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      component: keycloak

Kubernetes Documentation もご参照ください。

集中ロギングの初期サポート

バージョン19から、KeycloakはGELFを使用して、ELK、EFK、Graylogなどの集中型ロギング・ソリューションにログを送信できるようになりました。

logging guide に、すぐに使えるようにするためのドキュメントとサンプルが掲載されています。

Keycloak 18.0.0

新しいOperatorのプレビュー

このリリースでは、プレビューとして、まったく新しいKeycloak Operatorを導入します。ゼロから書き直された以外に、レガシーOperatorからのユーザー向けの主な変更点は、使用されるKeycloakディストリビューションです(新しいOperatorは、KeycloakのQuarkusディストリビューションを使用しています。これに伴い、API(カスタムリソース定義の形式)も変更されています。インストールと移行の手順を含む詳細については、 Operator関連ガイド を参照してください)。

レガシーOperator は、KeycloakWildFlyディストリビューションがEOLになるKeycloak 20までアップデートを受け取ることができます。

OperatorHubのバージョン管理方式

レガシーOperatorとのバージョンの競合を避けるため、新しいOperatorのバージョン18.0.0は、OperatorHubでバージョン 20.0.0-alpha.1 としてリリースします。レガシーOperatorのバージョニング・スキームは変わらず、すなわち18.0.0としてリリースされます。

今後のKeycloak 18、19のリリースでも、レガシーOperatorがEOLになるバージョン20までは、同じパターンが適用される予定です。

新しい管理コンソール・プレビュー

新しい管理コンソールは、現在プレビューを卒業しており、Keycloak 19ではデフォルトの管理コンソールになる予定です。

新しいコンソールで何か問題が見つかったり、改善のための提案があれば、 GitHub Discussions を通じてお知らせください。

ステップアップ認証

Keycloakがステップアップ認証に対応しました。この機能はKeycloak 17で追加されたもので、本バージョンではさらに磨きをかけました。

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

Cornelia LahnsteinerGeorg Romstorfer の貢献に感謝します。

クライアント・シークレットのローテーション

Keycloakが、顧客ポリシーによるクライアント・シークレットのローテーションに対応しました。この機能は現在プレビュー機能として提供されており、コンフィデンシャル・クライアントに対して、同時に2つまでのシークレットを使用できるレルムポリシーを提供することができます。

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

リカバリーコード

二要素認証のもう一つの方法として、リカバリーコードがプレビュー機能として利用できるようになりました。

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

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

WebAuthnの改良

KeycloakがWebAuthnのIDレス認証に対応しました。この機能により、セキュリティーキーがResident Keyをサポートしている限り、WebAuthnセキュリティーキーが認証時にユーザーを識別することができます。詳しくは、 Server Administration Guide を参照してください。 Joaquim Fellmann さんからの貢献に感謝します。

そのほかにも、WebAuthnの改善や修正があります。

非推奨の upload-script 機能の削除

upload-script 機能は非常に長い間、非推奨とされてきました。このリリースでは、完全に削除され、もはやサポートされていません。

以下の機能のいずれかを使用する場合、

  • OpenID Connectスクリプト・マッパー

  • スクリプト・オーセンティケーター(認証エグゼキューション)

  • JavaScriptポリシー

この ドキュメント を読むことを検討してください。管理インターフェイスで管理するのではなく、サーバーにスクリプトをデプロイしてこれらの機能を使用する方法を理解できます。

セッション・リミット

Keycloakは、ユーザーが持つことのできるセッション数の制限に対応しました。制限は、レルムレベルまたはクライアントレベルで行うことができます。

詳しくは、 Server Administration Guide を参照してください。 Mauro de Wit のコントリビューションに感謝します。

SAML ECP Profileはデフォルトで無効

SAML ECP Profileを悪用するリスクを軽減するために、Keycloakは、明示的に許可していないすべてのSAMLクライアントでこのフローをブロックするようになりました。このプロファイルは、クライアント設定内の Allow ECP Flow フラグを使用して有効にすることができます。 Server Administration Guide を参照してください。

Quarkusディストリビューション

起動時のレルムのインポート

Keycloak Quarkusディストリビューションでは、起動時にレルムを直接インポートできるようになりました。詳細については、対応する ガイド を確認してください。

JSONとファイルロギングの改善

Keycloak Quarkusディストリビューションは、ファイルへのロギングとJSONを使用した構造化データのロギングに対応しています。

改善点の詳細については、対応する ガイド を確認してください。

keycloak.confの値を環境変数で展開

KeycloakのQuarkusディストリビューションでは、環境変数からkeycloak.confの値をデプロイできるようになりました。

詳しくは、対応する ガイド を確認してください。

新オプションのdb-url-port

新しい設定オプション db-url-port を設定することで、JDBC接続文字列のポートを明示的に変更することができるようになりました。他の便利なオプションと同様に、このオプションは完全な db-url が設定されていれば、その値によって上書きされます。

メトリックス対応オプションをhealth-enabledとmetrics-enabledに分割

metrics-enabled オプションは、Keycloakのメトリクスのみを有効にするようになりました。ReadinessとLivenessプローブを有効にするために、新しいビルドオプション health-enabled が用意されています。これにより、これらのオプションをよりきめ細かく使用できるようになりました。

その他の改善

  • PatternFlyの最新リリースに伴うアカウントコンソールの調整。

  • 暗号化されたUserInfoエンドポイント・レスポンスに対応しました。 Giacomo Altiero に感謝します。

  • 暗号化キーに使用されるA256GCMを使用したアルゴリズムRSA-OAEPをサポート。 Filipe Bojikian Rissi に感謝します。

  • GitHub Enterpriseサーバーでのログインに対応しました。 Neon Ngo に感謝します。

Keycloak 17.0.0

ハイライト

Quarkusディストリビューションのフルサポート

KeycloakのデフォルトのディストリビューションはQuarkusをベースとするようになりました。新しいディストリビューションは、より速く、よりスリムで、より簡単に設定できます!

WildFlyディストリビューションからの移行は、Keycloakの起動と設定方法が根本的に変わっているため、すべての人にとって簡単なことではないことを理解しています。このことを念頭に置いて、私たちは2022年6月までWildFlyディストリビューションのサポートを継続します。

新しいディストリビューションへの移行方法については、 Quarkus Migration Guide を参照してください。

Quarkusディストリビューションのアップデート

Quarkusディストリビューションは、可能な限り良い体験となるよう、多くの努力によって磨き上げられ、改善されました。そのハイライトは以下の通りです。

  • Keycloakのインストールと設定を支援するServer Guideという形で、ドキュメントへの新しいアプローチを提供します。

  • Quarkusを2.7.0.Finalにアップグレードしました。

  • 設定ファイルはJavaに依存しなくなり、設定キーとCLIの引数は一致するようになりました。

  • build optionsruntime configuration をより明確に分離しました。

  • h2-memh2-file のデータベースは dev-memdev-file に名前を変更しました。

  • 機能の有効・無効化を簡素化しました。

  • サポートされないカスタムのQuarkus設定は、 conf/quarkus.properties を使用して行うようになりました。

  • JAVA_OPTS_APPENDによるカスタムJavaオプションの追加機能が追加されました( dasniko に感謝します)。

  • 初期ロギング機能が追加されました。

  • Cross-DCの初期サポートが追加されました。

  • ユーザー定義プロファイルはサポートされなくなりましたが、同じ目標を達成するために異なる設定ファイルを使用するようになりました。

  • クイックスタートが新しいディストリビューションを使用するように更新されました。 == その他の改善点

オフライン・セッションの遅延ロード

オフライン・セッションは、サーバー起動時にプリロードされるのではなく、デフォルトでデータベースから遅延フェッチされるようになりました。デフォルトの動作を変更するには、 Server Administration Guide を参照してください。

Keycloakは、管理コンソールでユーザーを一覧表示する際のユーザー検索で、Globのような構文に対応しました。これにより、プレフィックス( foo* 、これがデフォルトの検索)、インフィックス( *foo* )、および完全一致( "foo" )という3種類の検索を行うことができます。

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 リリースノート を参照してください。

Quarkus 2.5.3へのアップグレード

Keycloak.X Quarkusプレビュー・ディストリビューションはQuarkus 2.5.3にアップグレードされました。

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のいくつかの機能を非推奨および/またはサポート対象外としています。これは、バックアップCRDとOperator が管理するPostgresデータベースに関するものです。

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 MishchukAndrii MurashkinHryhorii HevorkianLeandro José de Bortoli にも感謝します。彼らは同様にFAPIのコンプライアンスについて多大な働きかけをしてくれたのです。最後に、 FAPI Special interest group のすべてのメンバーの支援とフィードバックに感謝します。

Keycloak 14.0.0

ハイライト

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

Keycloakサーバーは、クライアント・ポリシーとFinancial-grade API(FAPI)を公式にサポートするようになりました。この機能は以前のバージョンでプレビューされていましたが、現在はより洗練され、適切に文書化されています。これに関するほとんどの作業を行ってくれた Takashi Norimatsu に感謝します。また、 Dmytro MishchukAndrii MurashkinHryhorii 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)のサポートが利用可能になりました。

Takashi NorimatsuAndrii MurashkinChristophe 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 アイデンティティー・プロバイダーから追加のフィールドをフェッチ可能になりました。 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への変更が元に戻され、新しいLocaleUpdaterSPI が導入されました。

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認証のサポートも改善されました。最後に、認証フローに関連する欠陥についていくつかの作業を行いました。

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

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

その他の改善

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

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

Keycloak 8.0.2

ハイライト

バージョン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パスワード、およびアイデンティティー・プロバイダー・シークレットの値を直接入力する代わりに、ボールトから値を取得できます。

さらに、カスタム・ボールトからシークレットにアクセスするための拡張機能の開発を可能にする新しいボールト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がロールをアサーションに追加する前にマップする方法を提供しない状況のために設計されました。

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

Keycloak 7.0.1

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

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

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

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 からのコントリビュートに感謝します。