メインコンテンツまでスキップ

附録 A. 追加の例 (Additional Examples)

A.1. OpenID Connect

OpenID Connect [OpenID.Core]は、エンドユーザーに関するアイデンティティクレームを要求するためのclaimsパラメータを定義しています。このパラメータは、[OpenID.Core]のセクション5.5で定義されている認可リクエスト、または[OpenID.Core]のセクション6.1で定義されているリクエストオブジェクトで使用できます。

RARを使用すると、クライアントは代わりにopenid_credentialタイプの認可詳細オブジェクトを使用して、特定のクレームを含むOpenID Connect ID Tokenの発行を要求できます。次の例は、クライアントがemailemail_verifiedクレームを含むID Tokenの発行を要求する方法を示しています:

[
{
"type": "openid_credential",
"credential_type": "id_token",
"locations": ["https://example.com"],
"claims": {
"email": null,
"email_verified": null
}
}
]

credential_typeid_tokenであるopenid_credentialタイプの認可詳細オブジェクトには、次の要素を含めることができます(MAY):

  • type: 必須(REQUIRED)。認可詳細タイプを決定する文字列。OpenID Connect ID Tokenの発行の場合、この値はopenid_credentialでなければなりません(MUST)。
  • credential_type: 必須(REQUIRED)。発行される資格情報のタイプを決定する文字列。OpenID Connect ID Tokenの場合、これはid_tokenでなければなりません(MUST)。
  • locations: オプション(OPTIONAL)。文字列の配列で、それぞれが資格情報が使用されるリソースサーバーのURIを表します。
  • claims: オプション(OPTIONAL)。資格情報に埋め込まれるクレームを記述するオブジェクト。値は、要求されたクレームの名前をメンバー名として、nullまたはJSONオブジェクトをメンバー値として持つJSONオブジェクトで、特定のクレーム要件を表現します。

A.2. トランザクション固有の認可 (Transaction-Specific Authorization)

この例は、RARを使用して支払いトランザクションの認可を表現する方法を示しています。この例では、アカウント間のクレジット転送を想定しています。

使用されるtype値はpayment_initiationで、これは支払い開始のための(架空の)認可詳細タイプの識別子です。

認可リクエストの例は次のようになります:

GET /authorize?response_type=code
&client_id=s6BhdRkqt3
&state=af0ifjsldkj
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bww-uCHaoeK1t8U
&code_challenge_method=S256
&authorization_details=%5B%7B%22type%22%3A%22payment_initiation%22%2C%0A%20%20%20%20%20%20%22actions%22%3A%5B%22initiate%22%2C%22status%22%2C%22cancel%22%5D%2C%0A%20%20%20%20%20%20%22locations%22%3A%5B%22https%3A%2F%2Fexample%2Ecom%2Fpayments%22%5D%2C%0A%20%20%20%20%20%20%22instructedAmount%22%3A%7B%0A%20%20%20%20%20%20%20%20%20%22currency%22%3A%22EUR%22%2C%0A%20%20%20%20%20%20%20%20%20%22amount%22%3A%22123%2E50%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22creditorName%22%3A%22Merchant%20A%22%2C%0A%20%20%20%20%20%20%22creditorAccount%22%3A%7B%0A%20%20%20%20%20%20%20%20%20%22iban%22%3A%22DE02100100109307118603%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22remittanceInformationUnstructured%22%3A%22Ref%20Number%20Merchant%22%0A%20%20%20%7D%5D HTTP/1.1
Host: as.example.com

読みやすさのためにURLデコードされたauthorization_detailsパラメータには、次のJSONドキュメントが含まれています:

[
{
"type": "payment_initiation",
"actions": ["initiate", "status", "cancel"],
"locations": ["https://example.com/payments"],
"instructedAmount": {
"currency": "EUR",
"amount": "123.50"
},
"creditorName": "Merchant A",
"creditorAccount": {
"iban": "DE02100100109307118603"
},
"remittanceInformationUnstructured": "Ref Number Merchant"
}
]

支払い開始の認可詳細オブジェクトには、次の要素が含まれます:

  • type: 必須(REQUIRED)。認可詳細のタイプで、この例ではpayment_initiationです。
  • actions: オプション(OPTIONAL)。クライアントが実行する認可を要求しているアクションを表す文字列の配列。この例では、initiateは新しい支払いの作成を意味し、statusは支払いのステータスの読み取りを意味し、cancelは支払いのキャンセルを意味します。
  • locations: オプション(OPTIONAL)。クライアントがアクセストークンを使用する予定の場所を表す文字列の配列。
  • instructedAmount: 必須(REQUIRED)。currencyamountの2つの要素を持つオブジェクトで、転送される金額を表します。
  • creditorName: 必須(REQUIRED)。商人の名前を表す文字列。
  • creditorAccount: 必須(REQUIRED)。商人の口座番号を含むオブジェクト。この例では、口座はIBAN(国際銀行口座番号)として表されていますが、他の表現も可能です。
  • remittanceInformationUnstructured: オプション(OPTIONAL)。支払いの送金情報を表す文字列。

A.3. 複数のアクセストークン (Multiple Access Tokens)

この例は、クライアントが2つの異なるアクセストークンの発行を要求する認可を要求する方法を示しています。1つはpayment_apiリソースで使用され、もう1つはaccount_apiリソースで使用されます。

[
{
"type": "payment_initiation",
"locations": ["https://example.com/payment_api"],
"instructedAmount": {
"currency": "EUR",
"amount": "123.50"
},
"creditorName": "Merchant A",
"creditorAccount": {
"iban": "DE02100100103307118603"
}
},
{
"type": "account_information",
"locations": ["https://example.com/account_api"],
"accounts": [
{
"iban": "DE40100100103307118608"
},
{
"iban": "DE40100100103307118888"
}
]
}
]

この例では、クライアントは2つの異なる認可詳細オブジェクトの認可を要求しています:

  1. https://example.com/payment_apiで使用されるpayment_initiation認可
  2. https://example.com/account_apiで使用されるaccount_information認可

ASが各リソースに対して個別のアクセストークンを発行することを決定した場合、クライアントは2つの個別のトークンリクエストを行うことができます:

トークンリクエスト1(payment_api用):

POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&code_verifier=3641c0461d016ba09c5796b3e7cc5...
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&authorization_details=%5B%7B%22type%22%3A%22payment_initiation%22%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample.com%2Fpayment_api%22%5D%7D%5D

トークンリクエスト2(account_api用):

POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&code_verifier=3641c0461d016ba09c5796b3e7cc5...
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
&authorization_details=%5B%7B%22type%22%3A%22account_information%22%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample.com%2Faccount_api%22%5D%7D%5D

A.4. トークンレスポンスでの充実した認可詳細 (Enriched Authorization Details in Token Response)

この例は、トークンレスポンスでASによって認可のdateなどの追加データで充実されたpayment_initiationタイプの認可詳細オブジェクトを示しています:

{
"type": "payment_initiation",
"actions": ["initiate", "status", "cancel"],
"locations": ["https://example.com/payments"],
"instructedAmount": {
"currency": "EUR",
"amount": "123.50"
},
"creditorName": "Merchant A",
"creditorAccount": {
"iban": "DE02100100109307118603"
},
"remittanceInformationUnstructured": "Ref Number Merchant",
"date": "2021-08-12"
}

dateフィールドは、認可が付与された日時を示すためにASによって追加されました。