Skip to main content
For Authlete 2.x documentation, see 2.x version.

はじめに

リクエストオブジェクト は、一連のリクエストパラメーターを Claims として含む JWT です。 リクエストオブジェクトは、改ざんや意図しないデータ漏洩を防ぐために、署名を付けたり暗号化したりすることができます。また、値ではなく参照によって渡すこともでき、これにより(ブラウザーのリダイレクトを介した)認可リクエストのサイズを小さくできます。 本記事では、リクエストオブジェクトを用いた認可リクエストに Authlete が対応するための設定手順を説明します。

設定

Authlete サービスがリクエストオブジェクトを用いた認可リクエストを処理できるようにするには、サービスがオブジェクトの署名を検証できるよう、次の 2 つのプロパティを設定する必要があります。
  1. リクエストオブジェクトに使用される署名アルゴリズム
  2. 指定した署名アルゴリズムに対応する公開鍵
必要に応じて、クライアントに対して次のことを許可するように Authlete を設定することもできます。
  • リクエストオブジェクトの暗号化
  • 「request_uri」の利用
これらの設定は、 クライアントごとに指定します。 リクエストオブジェクト リクエストオブジェクトの処理

1. 署名アルゴリズムの指定

クライアント設定において、左ペインの「エンドポイント」→「認可」を選択し、次に右ペインの「リクエストオブジェクト」タブを選択します。そして「リクエストオブジェクト」セクションにおいて、「署名アルゴリズムを選択」をクリックします。次の例は「ES256」を選択した場合の結果を示しています。リクエストオブジェクト_1 「リクエストオブジェクト」の署名アルゴリズム

2. 公開鍵の登録

クライアント設定において、左ペインの「キーマネジメント」→「JWK セット」を選択します。そして、「JWKセットの内容」セクションに JWK 形式の公開鍵を登録するか、「JWKセットエンドポイントURI」に URI を指定します。次の例は ES256 の公開鍵を登録した場合の結果を示しています。リクエストオブジェクト_2 JWKセットの内容 上記の設定により、設定済みのクライアントがリクエストオブジェクトを含む認可リクエストを送信すると、Authlete サービスは署名アルゴリズムによって決定される公開鍵を使用してオブジェクトの署名を検証し、後続の処理を進めます。

オプション: 暗号化アルゴリズムの指定

暗号化されたリクエストオブジェクトを利用したい場合は、「リクエストオブジェクト」タブの「リクエストオブジェクト」セクションにある「Encryption Algorithm」と「Encryption Encoding Algorithm」に、適切な値を指定します。\ リクエストオブジェクト_3

オプション: request_uri の値の登録

クライアントが request(値渡し)ではなく request_uri(参照渡し)で認可リクエストを送信できるように、「リクエストオブジェクト」タブの「リクエストURI」セクションに適切な値を追加します。リクエストオブジェクト_4

API のリクエスト / レスポンスの例は次のとおりです。(読みやすくするために折り返しています)

リクエスト

クライアント: リクエストオブジェクトの作成

クライアントが、次のペイロードを含む署名付き JWT(リクエストオブジェクト)を作成するものとします。
生成される JWT は次のようになります。

クライアント: 認可リクエストの送信

次に、クライアントは上記のリクエストオブジェクトを用いて認可リクエストを組み立てます。リクエストには、値(request)または参照(request_uri)のいずれかとしてオブジェクトが含まれます。
  • オブジェクトを値で渡す場合
  • オブジェクトを参照で渡す場合
クライアントは、リクエストオブジェクトを request_uri の場所(例: https://client.example.org/request.jwt)に配置し、Authlete からアクセスできるようにする必要があります。

認可サーバー: Authlete API へのリクエスト送信

認可リクエストを受け取ると、認可サーバーは Authlete の /auth/authorization API にリクエストを送信します。このリクエストには、クライアントからの認可リクエストが “parameters” の値として含まれます。

レスポンス

Authlete が適切に設定されていれば、次のようなレスポンスが返されます。
ペイロードの内容を含む “requestObjectPayload” というキーがある点に注目してください。認可サーバーはこれを後続の認可処理に活用できます。