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のコントリビューションに感謝します。
認可サービス
UMA 2.0のサポート
UMA 2.0が認可サービスでサポートされるようになりました。以前のバージョンのKeycloakからアップグレードしている場合は、ドキュメントの詳細を確認してください。
Keycloakアカウント・サービスによるUser-Managed Access
これで、エンドユーザーはKeycloakアカウント・サービスを通じて、リソースとそのリソースに関連付けられたパーミッションを管理することができます。そこから、リソースオーナーは自分のリソースを確認し、他のユーザーとリソースを共有したり、他のユーザーからの要求を承認することができます。
クレームのプッシュ
クライアント・アプリケーションは、任意のクレームに基づいてパーミッションを評価するために、認可リクエストとともにKeycloakにそれらのクレームを送信できるようになりました。これは、特定のトランザクションの範囲内で、またはランタイムに関する情報に基づいてアクセスを許可(または拒否)する必要がある場合に、非常に便利です。
ポリシー・エンフォーサーは、通常のアクセストークンを受け入れるようになりました
場合によっては、通常のアクセストークンをリソースサーバーに送信するだけで、これらのリソースに対してポリシーを適用することができます。
このリリースで導入された主な変更の1つは、(UMAを使用しない場合)リソースサーバーによって保護されたリソースにアクセスするために、アクセストークンをRPTと交換する必要がなくなったことです。ポリシー・エンフォーサーがリソースサーバー側でどのように設定されているかに応じて、通常のアクセストークンをベアラートークンとして送信するだけで、パーミッションは引き続き適用されます。
ポリシー・エンフォーサーは、オンデマンドでサーバーからリソースをロードできるようになりました
今のところ、 policy-enforcer
で設定されたアプリケーションをデプロイするときに、ポリシー・エンフォーサーはサーバーからすべてのプロテクトされたパスをロードするか、またはアダプター設定から取得したこれらのパスをマップするだけです。ユーザーは、サーバーからオンデマンドでパスをロードし、アダプター設定でこれらのリソースをマップすることを避けることができます。保護されたリソースの数に応じて、この機能を使用すると、アプリケーションのデプロイメント時間を短縮することもできます。
ポリシー・エンフォーサーは、リソース・キャッシュの設定をサポートするようになりました
サーバーへの不必要なヒットを避けるために、ポリシー・エンフォーサーは、保護されたリソースとアプリケーション内の対応するパスとの間のマッピングをキャッシュします。ユーザーはキャッシュの動作を設定したり、完全に無効にすることもできます。
認可サービス
テーマとテーマのリソース
通常のプロバイダー配備で、テーマをKeycloakにホットデプロイできるようになりました。テーマリソースのサポートも追加しました。テーマを作成せずにテンプレートとリソースを追加することができます。これは、認証フローに追加されるページを必要とするカスタム・オーセンティケーターにとって便利です。
特定のクライアントのテーマを無効にするサポートも追加しました。それがニーズに合っていない場合は、カスタムロジックを実装してテーマを選択できる新しいテーマセレクターSPIもあります。
Instagramアイデンティティー・プロバイダー
Instagramでログインするためのサポートが追加されました。 hguerrero からのコントリビュートに感謝します。
アダプター
JavaScript - ネイティブPromiseのサポート
JavaScriptアダプターは、ネイティブのPromiseをサポートするようになりました。古いスタイルのPromiseも、今までどおりサポートしています。どちらも区別せずに使用できます。
JavaScript - Cordovaオプション
JavaScriptアダプターのログインやその他のメソッドにCordova固有のオプションを渡すことができるようになりました。 loorent からのコントリビュートに感謝します。