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 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 のコントリビューションに感謝します。
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パスワード、および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がロールをアサーションに追加する前にマップする方法を提供しない状況のために設計されました。
パスワードレス認証、多要素認証、ユーザーごとの複数のクレデンシャルのサポート
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 リリースノート を参照してください。
Keycloak 7.0.1
サーバーへのスクリプトのデプロイ
これまで、管理者はKeycloak管理コンソールとRESTful Admin APIを使用して、サーバーにスクリプトをアップロードできました。
現時点では、この機能はデフォルトで 無効 であり、ユーザーはスクリプトをサーバーに直接デプロイすることを選択する必要があります。詳細については、JavaScriptプロバイダーを参照してください。
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 からのコントリビュートに感謝します。