はじめに
リクエストオブジェクト とは、認可リクエストにおけるリクエストパラメーターの組を「クレーム 」として含む JWT のことです。 リクエストオブジェクトに対しては署名の付加や暗号化が可能であり、改ざんや意図しない露見の防止に有用です。またリクエストオブジェクトを「値渡し」ではなく「参照渡し」にして、Web ブラウザーのリダイレクションを介して送信される認可リクエストのサイズを小さくすることも可能です。 本記事では、Authlete がリクエストオブジェクトに対応するための手順を説明します。設定
リクエストオブジェクトを含む認可リクエストを処理するために、Authlete サービスはリクエストオブジェクトの署名検証を行います。そのためには以下の 2 つの設定が必要です。- リクエストオブジェクトの署名アルゴリズム
- 指定した署名アルゴリズムに対応する公開鍵
- リクエストオブジェクトの暗号化
- “request_uri” の使用
1. 署名アルゴリズムの指定
「認可」タブの「リクエストオブジェクトの署名アルゴリズム」に、署名アルゴリズムを指定します。以下は “ES256” を指定した例です。
2. 公開鍵の登録
「JWK セット」タブにて、「JWK セットの内容」に JWK 形式の公開鍵を登録するか、もしくは「JWK セット URI」に URL を指定します。以下は ES256 の公開鍵を登録した例です。
「JWK セット」タブの「JWK セットの内容」
以上により Authlete サービスは、クライアントからの認可リクエストにリクエストオブジェクトが含まれている場合、設定された署名アルゴリズムによって決定される公開鍵に基づき、署名検証を行い、その後の処理に引き継ぐようになります。
オプション: 暗号化アルゴリズムの指定
暗号化されたリクエストオブジェクトを利用する場合には、「認可」タブの「リクエストオブジェクトのキー暗号化アルゴリズム」と「リクエストオブジェクトの本文暗号化アルゴリズム」に適切な値を指定します。\
オプション: request_uri の値の登録
クライアントが request (値渡し) ではなく request_uri (参照渡し) を含む認可リクエストを送信する場合には、「認可」タブの「リクエスト URI」に、適切な値を登録します。\
実行例
以下に API リクエスト・レスポンスの例を示します。(見やすさのために折り返しています)リクエスト
クライアントがリクエストオブジェクトを作成
例として、クライアントが以下のペイロードを含む署名付き JWT (リクエストオブジェクト) を作成したとします。クライアントが認可リクエストを送信
次にクライアントが認可リクエストを作成します。このリクエストには、上記のリクエストオブジェクトの、値 (request パラメーター) もしくは参照 (request_uri) が含まれます。- 値として渡す場合
- 参照として渡す場合