リクエストオブジェクトの利用

はじめに


本記事では、認可リクエストにリクエストオブジェクトを利用するための手順を説明します。

設定


リクエストオブジェクトを含む認可リクエストを処理するために、Authlete サービスはリクエストオブジェクトの署名検証を行います。そのためには以下の 2 つの設定が必要です。

  1. リクエストオブジェクトの署名アルゴリズムの指定
  2. 指定した署名アルゴリズムに対応する公開鍵の登録

これらの設定は、Authlete のクライアントアプリ開発者コンソールにアクセスし、クライアントごとに行います。

リクエストオブジェクトの処理



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


「認可」タブの「リクエストオブジェクトの署名アルゴリズム」に、署名アルゴリズムを指定します。以下は “ES256” を指定した例です。
「認可」タブの「リクエストオブジェクトの署名アルゴリズム」


2. 公開鍵の登録


「JWK セット」タブの「JWK セットの内容」に、指定した署名アルゴリズムに対応する、JWK 形式の公開鍵を登録します。以下は ES256 の公開鍵を登録した例です。
「JWK セット」タブの「JWK セットの内容」

以上により Authlete サービスは、クライアントからの認可リクエストにリクエストオブジェクトが含まれている場合、設定された署名アルゴリズムによって決定される公開鍵に基づき、署名検証を行い、その後の処理に引き継ぐようになります。

実行例


以下に API リクエスト・レスポンスの例を示します。(見やすさのために折り返しています)

リクエスト


認可サーバーは Authlete の /auth/authorization API に対してリクエストを送信します。この API リクエストには、クライアントからの認可リクエストが "parameters" の値として含まれています。さらにこの認可リクエストには、クライアントが生成した署名つき JWT が、request の値として含まれています。

curl -s -X POST https://api.authlete.com/api/auth/authorization \
-u '...:...' \
-H 'Content-Type: application/json' \
-d '{"parameters": 
  "redirect_uri=https://client.example.org/cb/example.com
   &scope=openid+payment
   &response_type=code+id_token
   &client_id=...
   &nonce=n-0S6_WzA2Mj
   &request=eyJhbGciOiJFUzI1NiIsImtpZCI6IjEifQ.
    ewoicmVkaXJlY3RfdXJpIjoiaHR0cHM6Ly9jbGllbnQ
    uZXhhbXBsZS5vcmcvY2IvZXhhbXBsZS5jb20iLAoicm
    VzcG9uc2VfdHlwZSI6ImNvZGUgaWRfdG9rZW4iLAoiY
    2xpZW50X2lkIjoiNTkxMjA1OTg3ODE2NDkwIiwKInNj
    b3BlIjoib3BlbmlkIHBheW1lbnQiLAoiZXhwIjoxNTU
    0OTczMDAwMCwKImF1ZCI6Imh0dHBzOi8vYXMuZXhhbX
    BsZS5jb20iLAoiY2xhaW1zIjp7CiAgImlkX3Rva2VuI
    jp7CiAgICAiYWNyIjp7CiAgICAgICJlc3NlbnRpYWwi
    OnRydWUsCiAgICAgICJ2YWx1ZXMiOlsidXJuOmV4YW1
    wbGU6cHNkMjpzY2EiXQogICAgfQogIH0KfSwKIm5vbm
    NlIjoibi0wUzZfV3pBMk1qIgp9Cg.b5rDSqaI3dh8n4
    A8hK4B5zSpnZNO_8--W-kTU03CNbCq1I_Vuf3w33ZVU
    hD0A-rla8cTPlZ25keQBncGWafzOA"}' | jq

レスポンス


適切に設定されている場合、Authlete は以下のようなレスポンスを返却します。

{
  "type": "authorizationResponse",
  "resultCode": "A004001",
  "resultMessage": 
    "[A004001] Authlete has successfully issued a ticket to the service
   (API Key = 174...020) for the authorization request from the client
   (ID = 591...490). [response_type=code id_token, openid=true]",
[...]
  "ticket": "rja...GiE"
[...]
How did we do with this article?