検索

2.9. Keycloak JS

download PDF

このリリースには、Keycloak JS ライブラリーに対するいくつかの変更が含まれています。これらの変更の主な動機は、Red Hat build of Keycloak サーバーからライブラリーを切り離し、個別にリファクタリングできるようにすることです。これにより、コードを意味し、将来的に維持を容易にします。変更内容は以下のとおりです。

2.9.1. ライブラリーがサーバーから静的で提供されることはなくなりました。

Keycloak JS ライブラリーは、Red Hat build of Keycloak サーバーから静的で提供されることはなくなりました。これは、以下の URL が利用できなくなったことを意味します。

  • /js/keycloak-authz.js
  • /js/keycloak-authz.min.js
  • /js/keycloak.js
  • /js/keycloak.min.js
  • /js/{version}/keycloak-authz.js
  • /js/{version}/keycloak-authz.min.js
  • /js/{version}/keycloak.js
  • /js/{version}/keycloak.min.js

さらに、これらの URL のライブラリーにリンクした keycloakJsUrl プロパティーが管理コンソールテーマから削除されました。カスタムテーマがこのプロパティーを使用してライブラリーを含めていた場合は、別の方法を使用してテーマを更新し、ライブラリーを組み込む必要があります。

NPM などのパッケージマネージャーを使用して、プロジェクトにライブラリーを追加する必要があります。ライブラリーは、NPM レジストリー では keycloak-js として利用できます。これは、以下のコマンドを使用してインストールできます。

npm install keycloak-js

または、サーバーの配布に、keycloak-js-26.0.0.tgz アーカイブにライブラリーのコピーが含まれます。そこからプロジェクトにライブラリーをコピーできます。ビルドせずにブラウザーでライブラリーを直接使用する場合は、ライブラリーを独自にホストする必要があります。パッケージマネージャーは、今後もライブラリーの更新を容易にするため、プロジェクトにライブラリーを含めるための推奨される方法です。

2.9.2. Keycloak インスタンス設定が必要になりました。

以前は、設定を渡さずに Keycloak インスタンスを作成することができました。設定は、含まれている keycloak.js スクリプトのパスに基づいて、keycloak.json ファイルからサーバーから自動的にロードされます。ライブラリーはサーバーから静的に提供されなくなったため、この機能は削除されました。Keycloak インスタンスを構築する場合は、設定を明示的に渡す必要があります。

// Before
const keycloak = new Keycloak();

// After
const keycloak = new Keycloak({
    url: "http://keycloak-server",
    realm: "my-realm",
    clientId: "my-app"
});

// Alternatively, you can pass a URL to a `keycloak.json` file.
// Note this is not reccomended as it creates additional network requests, and is prone to change in the future.
const keycloak = new Keycloak('http://keycloak-server/path/to/keycloak.json');

2.9.3. ログインのメソッドが 非同期になりました

Keycloak JS は、Web Crypto API を使用して、PKCE をサポートするために必要な SHA-256 ダイジェストを計算するようになりました。この API の非同期性質により、以下のパブリックメソッドが常に Promise を返すようになりました。

  • ログイン
  • createLoginUrl()
  • createRegisterUrl()

これらのメソッドを待機するようにコードを更新する ようにして ください。

// Before
keycloak.login();
const loginUrl = keycloak.createLoginUrl();
const registerUrl = keycloak.createRegisterUrl();

// After
await keycloak.login();
const loginUrl = await keycloak.createLoginUrl();
const registerUrl = await keycloak.createRegisterUrl();

これらのメソッドを待つために、必ずコード 更新してください。

2.9.4. ビルド時のオプションのより厳密な起動動作

提供されたビルド時のオプションが、最後に最適化された Red Hat build of Keycloak ビルド中にサーバーイメージに永続化された値とは異なる場合、Red Hat build of Keycloak は起動に失敗します。以前は、このような場合、警告メッセージが表示されていました。

2.9.5. 新しいデフォルトのクライアントスコープの 基本

basic という名前の新しいクライアントスコープはレルムのデフォルトクライアントスコープとして追加されるため、新規に作成されるすべてのクライアントに追加されます。クライアントスコープは、移行時に既存のすべてのクライアントにも自動的に追加されます。

このスコープには、次の要求の事前設定されたプロトコルマッパーが含まれます。

  • sub (専用セクションで詳細を参照してください)
  • auth_time

これにより、軽量アクセストークンの要求数を減らすためにさらに役立ちますが、常に自動的に追加された要求を設定することができます。

2.9.5.1. サブ 要求はプロトコルマッパー経由でアクセストークンに追加されます。

アクセストークンに常に追加された sub 要求は、デフォルトで追加されるようになりましたが、新しい Subject (sub) プロトコルマッパーが使用されます。

Subject (sub) マッパーは、基本 クライアントスコープでデフォルトで設定されます。したがって、このバージョンにアップグレードした後に追加の設定は必要ありません。

Pairwise サブジェクト識別子 マッパーを使用してアクセストークンのサブ要求をマップする場合は、Subject ( sub ) マッパーを無効にするか削除することを検討できます。ただし、Pairwise サブジェクト識別子マッパーの前に サブジェクト(サブ) プロトコルマッパーが実行されるため、pairwise 値は Subject (sub) マッパーによって追加された値をオーバーライドします。これは、現在 Subject (sub) マッパーが最初のプロトコルマッパーとして実行されているため、sub 要求をオーバーライドする他のカスタムプロトコルマッパーの実装にも適用されます。

Subject (sub) マッパーを使用して、アクセストークン、軽量アクセストークン、およびイントロスペクション応答に対してのみ サブ 要求を設定できます。idToken および Userinfo には、常に サブ 要求が含まれます。

ユーザーセッションが存在しないため、マッパーはサービスアカウントに影響を与えません。また、sub 要求はアクセストークンに常に追加されます。

2.9.5.2. nonce 要求は ID トークンにのみ追加されます。

nonce 要求は、OpenID Connect Core 1.0 仕様に厳密に続いて ID トークンにのみ追加されるようになりました。仕様で示されているように、同じパラメーターが認可要求で送信された場合、要求は ID トークン 内に必須になります。また、この仕様では、リフレッシュ要求後に nonce を追加しないようにすることを推奨します。以前のバージョンでは、要求はすべての応答(更新に含まれる)のすべてのトークン(アクセス、リフレッシュ、および ID)に設定されていました。

新しい Nonce 後方互換性 マッパーは、クライアントスコープに割り当てて古い動作に戻すことができるソフトウェアにも含まれています。たとえば、JS アダプターは、バージョン 2.0.0 で #26651 を発行する前に、すべてのトークンで返された nonce 要求をチェックしました。したがって、古いバージョンの JS アダプターが使用される場合、クライアントスコープを使用してマッパーを必要なクライアントに追加する必要があります。

2.9.5.3. 古い javascript アダプターの使用

アプリケーションで古いバージョンの javascript アダプターで最新の Red Hat build of Keycloak サーバーを使用する場合は、以前のバージョンの javascript アダプターが Red Hat build of Keycloak によって追加された要求に依存するが、OIDC 仕様ではサポートされていない要求に依存するため、上記のトークンの変更の影響を受ける場合があります。ここでは、以下の点を説明します。

  • Red Hat build of Keycloak Javascript アダプター 24.0.3 以前を使用している場合の セッション状態(session_state) マッパーの追加
  • Red Hat build of Keycloak 24 より古い Red Hat build of Keycloak Javascript アダプターを使用する場合の Nonce 後方互換性 マッパーの追加

プロトコルマッパーは、対応するクライアントまたは一部のクライアントスコープに直接追加できます。これは、古いバージョンの Red Hat build of Keycloak Javascript アダプターに依存するクライアントアプリケーションで使用できます。詳細は、前項の session_state および nonce 要求専用のものです。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.