問題タブ [keycloak-rest-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jwt - クライアント設定でRS256が指定されている場合、キークロークがHS256アルゴリズムを使用してアクセストークンに署名するのはなぜですか?
キークローク認証サーバーとアプリケーションを使用して、次のセットアップを行いました。
- ユーザーはアプリケーションのクライアント側にログインし、un/pw をサーバーに送信します
- アプリケーションサーバーが un/pw をキークロークサーバーに送信してトークンを取得する
- keycloak サーバーはトークンをアプリケーションサーバーに送り返します
- アプリケーション サーバーが機密データを含む Web ページを出力する
RS256 を使用してトークンに署名したいと考えています。クライアント側でトークンを取得しようとすると、RS256 で正しく署名されていますが、アプリケーション サーバーでトークンを取得しようとするとすぐに HS256 が使用されます。両方のケースで RS256 を使用するようにキークロークを設定するにはどうすればよいですか?
/auth/realms/{REALM_NAME}/protocol/openid-connect/token エンドポイントとキークローク 10.0.1 を使用しています。
キークローク構成:
- キー
- レルムのデフォルトの署名アルゴリズムは RS256 に設定されています
- 最初の構成: レルム キーは HS256、AES、および RS256 (この順序でリスト) であり、優先度はすべて 100 です。
- 2 番目の構成: RS256 キーの優先度をより高い値に設定しましたが、HS256 が使用されます
- 最後の試みとして、レルム内の他のすべてのキーをパッシブにしました。トークンに署名するとき、keycloak はアクティブな rs256 の代わりに使用する「フォールバック hs256」キーを生成しました。
- クライアント
- クライアントのアクセストークン署名アルゴリズムとIDトークン署名アルゴリズムはRS256に設定されています
- クライアントはパブリックです
- 有効なリダイレクト URI には、アプリケーション サーバーが現在実行されているドメインが含まれます (これは localhost ですが、私のコンピューターにはドメイン名があります)。
- Webオリジンは「+」に設定されています(私が知る限り、有効なred.urisからエントリをコピーします)
リクエスト:
- Origin、Referer、および Content-Type ヘッダーがアプリ クライアントとアプリ サーバーの要求で一致する
- ブラウザと郵便配達員の両方が期待どおりにクライアントとして機能します
- アプリサーバーはphpで、curlを使用して投稿リクエストを作成します(クライアントも投稿リクエストを作成します)
- クライアントとアプリ サーバーの両方がローカル マシンで実行されます
Google は、私の問題に関連する結果を返していないようです。設定を変更した後にキークロークサーバーを再起動しても結果が得られないようなので、行った変更は自動的に使用されると思います。