Keycloak 21.1.0
モノレポ
過去のKeycloakは、複数のGitHubリポジトリーで管理されていました。
複数のリポジトリーを持つことで、多くの複雑さと手間が発生しました。たとえば、1つの変更に対して複数のプルリクエストを異なるリポジトリーに送らなければならないことが頻繁にありました。
物事を単純化するために、現在、すべてを main repository に移行しています。
実験的なアカウント・コンソールのバージョン3
Keycloakの実験的な機能として、アカウント・コンソールのバージョン3が利用できるようになりました。このバージョンでは「ユーザー・プロフィール」機能で作成されたカスタム・フィールドをサポートしています。もし、この機能を試してみたい、早い段階でフィードバックを提供したいとお考えでしたら、以下の手順で有効にすることができます。
bin/kc.sh start-dev --features=account3
KeycloakのJavaベースのアダプターにおけるKeycloak認可サービスのサポートに関する変更点
非推奨となった アダプターの削除の一環として、Keycloak Policy Enforcerはアダプターのコードベースから別の依存関係に抽出されました。
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-policy-enforcer</artifactId>
<version>${version.keycloak}</version>
</dependency>
この依存関係を提供することで、ポリシー・エンフォーサーをお好みのJavaスタックと統合することが可能になることを期待しています。
また、 Wildfly Elytron で保護されたJakartaアプリケーションに対してポリシー・エンフォーサーを有効にするためのビルトイン・サポートを提供します。
今のところ、クイックスタートとドキュメントの作成に取り組んでいるため、この依存関係はまだGAではありません。
この作業は、非推奨のアダプターを使用している既存のアプリケーションに影響を与えないようにします。 = デフォルトで使用できるJavaScriptエンジン
以前のバージョンでは、KeycloakをJava 17とJavaScriptプロバイダーで使用する場合、Nashorn JavaScriptエンジンを配布物に追加することが必要でした。NashornのJavaScriptエンジンはKeycloakのサーバーでデフォルトで利用可能なため、この必要はなくなりました。
Keycloak 21.0.0
旧管理コンソールが削除されました
Keycloak 19では、新しい管理コンソールは新しいデフォルトの管理コンソールとなり、古い管理コンソールは非推奨となりました。このリリースでは、古い管理コンソールは完全に削除されました。
メトリクスにマイクロメーターを採用
Keycloakは、Prometheusフォーマットでメトリクスをエクスポートするメトリクス・エンドポイントをオプションで提供します。このリリースでは、このデータを提供する実装がSmallRyeからMicrometerに変更されました。この変更に伴い、メトリックスの名称が変更されました。
詳しくはマイグレーション・ガイドを参照してください。
KeycloakサーバーのJava 11サポートは廃止されました
Java11でKeycloakサーバーを実行することは非推奨となり、Keycloak22で削除される予定です。
Java8、Java11、Java17は引き続きサポートしていますが、Java8は遠くない将来にサポートを終了する予定です。
SAML SPメタデータの変更
このリリース以前は、SAML SPメタデータには、署名と暗号化の両方の用途に使用する同じキーが含まれていました。このバージョンのKeycloakから、SPメタデータには暗号化を目的としたレルムキーだけを含めるようにしました。また、各暗号化キー記述子に対して、そのキーが使用されることを想定したアルゴリズムも指定しています。次の表は、サポートされているXML-EncアルゴリズムとKeycloakレルムキーへのマッピングを示したものです。詳細は、 Upgrading Guide を参照してください。
XML-Enc algorithm |
Keycloak realm key algorithm |
RSA-OAEP |
|
RSA1_5 |
ユーザー・セッション・プロバイダーの非推奨メソッドが削除されました
ユーザー・セッション・プロバイダーからいくつかの非推奨のメソッドが削除されました。まだ実行されていない場合、それらの使用法は、Keycloak 20リリースのJavadocで文書化されている対応の置換に置き換える必要があります。詳しくは Upgrading Guide を参照してください。
新しいストレージ: 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
ヘッダーのサポート
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
詳細は、 ホスト名の設定 を参照してください。
組み込み用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 Das と Isaac 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ストレージの変更点
Keycloakのストレージが変更され、現在のストレージはまだサポートされていますが、最終的には全く新しい実装に置き換えられます。この変更により、クラウド・ネイティブなストレージのサポート、ノーダウンタイム機能、ユーザーとは別の追加領域に対するカスタムストレージの実装のためのより良いサポートがもたらされます。
それは、現在のストアのサポートされている機能のいくつかの深い変更が レガシー 機能になることを意味します。レガシーストアと新ストアは同時に使用することはできず、一度にアクティブにできるのは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 は、Keycloak WildFlyディストリビューションがEOLになるKeycloak 20までアップデートを受け取ることができます。
新しい管理コンソール・プレビュー
新しい管理コンソールは、現在プレビューを卒業しており、Keycloak 19ではデフォルトの管理コンソールになる予定です。
新しいコンソールで何か問題が見つかったり、改善のための提案があれば、 GitHub Discussions を通じてお知らせください。
ステップアップ認証
Keycloakがステップアップ認証に対応しました。この機能はKeycloak 17で追加されたもので、本バージョンではさらに磨きをかけました。
詳しくは、 Server Administration Guide を参照してください。
Cornelia Lahnsteiner と Georg 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の値をデプロイできるようになりました。
詳しくは、対応する ガイド を確認してください。
その他の改善
-
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 options
とruntime configuration
をより明確に分離しました。 -
h2-mem
とh2-file
のデータベースはdev-mem
とdev-file
に名前を変更しました。 -
機能の有効・無効化を簡素化しました。
-
サポートされないカスタムのQuarkus設定は、
conf/quarkus.properties
を使用して行うようになりました。 -
JAVA_OPTS_APPENDによるカスタムJavaオプションの追加機能が追加されました( dasniko に感謝します)。
-
初期ロギング機能が追加されました。
-
Cross-DCの初期サポートが追加されました。
-
ユーザー定義プロファイルはサポートされなくなりましたが、同じ目標を達成するために異なる設定ファイルを使用するようになりました。
-
クイックスタートが新しいディストリビューションを使用するように更新されました。 == その他の改善点
オフライン・セッションの遅延ロード
オフライン・セッションは、サーバー起動時にプリロードされるのではなく、デフォルトでデータベースから遅延フェッチされるようになりました。デフォルトの動作を変更するには、 Server Administration Guide を参照してください。
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ディストリビューションはまもなく廃止される予定です。このことを念頭に置いて、できるだけ多くの人が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 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への変更が元に戻され、新しいLocaleUpdaterSPIが導入されました。
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によって処理されます。
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サポート
このリリースでは、W3C Web Authentication(WebAuthn)の初期サポートを追加しました。現在の実装にはいくつかの制限がありますが、この領域のさらなる改善に取り組んでいます。 tnorimat の貢献に感謝します。また、ynojimaのご協力とフィードバックにも感謝します。
パスワードレス認証、多要素認証、ユーザーごとの複数のクレデンシャルのサポート
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 からのコントリビュートに感謝します。