[要約] RFC 9396 は、OAuth メッセージで細かい認可データを運ぶために使用される新しいパラメータ authorization_details を指定しています。この RFC の目的は、OAuth 2.0 でリッチな認可リクエストを可能にすることです。

Internet Engineering Task Force (IETF)                    T. Lodderstedt
Request for Comments: 9396                                       yes.com
Category: Standards Track                                      J. Richer
ISSN: 2070-1721                                      Bespoke Engineering
                                                             B. Campbell
                                                           Ping Identity
                                                                May 2023
        
OAuth 2.0 Rich Authorization Requests
OAUTH 2.0リッチ承認リクエスト
Abstract
概要

This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.

このドキュメントは、OAuthメッセージにきめ細かい承認データを伝達するために使用される新しいパラメーターAuthorization_Detailsを指定します。

Status of This Memo
本文書の位置付け

This is an Internet Standards Track document.

これは、インターネット標準トラックドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 7841のセクション2で入手できます。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9396.

このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、https://www.rfc-editor.org/info/rfc9396で取得できます。

著作権表示

Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(c)2023 IETF Trustおよび文書著者として特定された人。無断転載を禁じます。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

このドキュメントは、BCP 78およびIETFドキュメント(https://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、改訂されたBSDライセンスで説明されている保証なしで提供されるように、改訂されたBSDライセンステキストを含める必要があります。

Table of Contents
目次
   1.  Introduction
     1.1.  Conventions and Terminology
   2.  Request Parameter "authorization_details"
     2.1.  Authorization Details Types
     2.2.  Common Data Fields
   3.  Authorization Request
     3.1.  Relationship to the "scope" Parameter
     3.2.  Relationship to the "resource" Parameter
   4.  Authorization Response
   5.  Authorization Error Response
   6.  Token Request
     6.1.  Comparing Authorization Details
   7.  Token Response
     7.1.  Enriched Authorization Details in Token Response
   8.  Token Error Response
   9.  Resource Servers
     9.1.  JWT-Based Access Tokens
     9.2.  Token Introspection
   10. Metadata
   11. Implementation Considerations
     11.1.  Using Authorization Details in a Certain Deployment
     11.2.  Minimal Implementation Support
     11.3.  Use of Machine-Readable Type Schemas
     11.4.  Large Requests
   12. Security Considerations
   13. Privacy Considerations
   14. IANA Considerations
     14.1.  OAuth Parameters Registration
     14.2.  JSON Web Token Claims Registration
     14.3.  OAuth Token Introspection Response Registration
     14.4.  OAuth Authorization Server Metadata Registration
     14.5.  OAuth Dynamic Client Registration Metadata Registration
     14.6.  OAuth Extensions Error Registration
   15. References
     15.1.  Normative References
     15.2.  Informative References
   Appendix A.  Additional Examples
     A.1.  OpenID Connect
     A.2.  Remote Electronic Signing
     A.3.  Access to Tax Data
     A.4.  eHealth
   Acknowledgements
   Authors' Addresses
        
1. Introduction
1. はじめに

"The OAuth 2.0 Authorization Framework" [RFC6749] defines the scope parameter that allows OAuth clients to specify the requested scope, i.e., the limited capability, of an access token. This mechanism is sufficient to implement static scenarios and coarse-grained authorization requests, such as "give me read access to the resource owner's profile." However, it is not sufficient to specify fine-grained authorization requirements, such as "please let me transfer an amount of 45 Euros to Merchant A" or "please give me read access to directory A and write access to file X."

「OAuth 2.0 Authorization Framework」[RFC6749]は、OAUTHクライアントが要求されたスコープ、つまりアクセストークンの限られた機能を指定できるようにするスコープパラメーターを定義します。このメカニズムは、「リソース所有者のプロファイルへのアクセスを読む」など、静的シナリオと粗粒化承認要求を実装するのに十分です。ただし、「45ユーロの金額を商人に転送させてください」または「ディレクトリAへのアクセスを読み取り、ファイルXへの書き込みアクセスを確認してください」など、きめ細かい承認要件を指定するだけでは十分ではありません。

This specification introduces a new parameter authorization_details that allows clients to specify their fine-grained authorization requirements using the expressiveness of JSON [RFC8259] data structures.

この仕様では、JSON [RFC8259]データ構造の表現力を使用して、クライアントが微調整された承認要件を指定できる新しいパラメーターAuthorization_Detailsを導入します。

For example, an authorization request for a credit transfer (designated as "payment initiation" in several open banking initiatives) can be represented using a JSON object like this:

たとえば、このようなJSONオブジェクトを使用して、クレジット転送の承認要求(いくつかのオープンバンキングイニシアチブで「支払い開始」として指定)を表現できます。

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

Figure 1: Example of an Authorization Request for a Credit Transfer

図1:信用譲渡の承認要求の例

This object contains detailed information about the intended payment, such as amount, currency, and creditor, that is required to inform the user and obtain their consent. The authorization server (AS) and the respective resource server (RS) (providing the payment initiation API) will together enforce this consent.

このオブジェクトには、ユーザーに通知して同意を得るために必要な金額、通貨、債権者など、意図した支払いに関する詳細情報が含まれています。Authorization Server(AS)およびそれぞれのリソースサーバー(RS)(支払い開始APIの提供)は、この同意を実施します。

For a comprehensive discussion of the challenges arising from new use cases in the open banking and electronic signing spaces, see [Transaction-Auth].

オープンバンキングおよび電子署名スペースの新しいユースケースから生じる課題に関する包括的な議論については、[Transaction-Auth]を参照してください。

In addition to facilitating custom authorization requests, this specification also introduces a set of common data type fields for use across different APIs.

カスタム認証リクエストの促進に加えて、この仕様では、異なるAPIで使用するための共通データ型フィールドのセットも導入されます。

1.1. Conventions and Terminology
1.1. 慣習と用語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

この文書のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" はBCP 14 [RFC2119] [RFC8174]で説明されているように、すべて大文字の場合にのみ解釈されます。

This specification uses the terms "access token", "refresh token", "authorization server" (AS), "resource server" (RS), "authorization endpoint", "authorization request", "authorization response", "token endpoint", "grant type", "access token request", "access token response", and "client" defined by "The OAuth 2.0 Authorization Framework" [RFC6749].

この仕様では、「アクセストークン」、「リフレッシュトークン」、「認証サーバー」(AS)、「Resource Server」(RS)、「Authorization EndPoint」、「Authorization Request」、「Authorization Response」、「Token Endpoint」という用語を使用します。、「グラントタイプ」、「アクセストークンリクエスト」、「アクセストークン応答」、および「OAUTH 2.0認証フレームワーク」[RFC6749]で定義された「クライアント」。

2. Request Parameter "authorization_details"
2. リクエストパラメーター「Authorization_Details」

The request parameter authorization_details contains, in JSON notation, an array of objects. Each JSON object contains the data to specify the authorization requirements for a certain type of resource. The type of resource or access requirement is determined by the type field, which is defined as follows:

要求パラメーターauthorization_detailsには、JSON表記にはオブジェクトの配列が含まれています。各JSONオブジェクトには、特定のタイプのリソースの承認要件を指定するデータが含まれています。リソースまたはアクセス要件のタイプは、次のように定義されているタイプフィールドによって決定されます。

type:

タイプ:

An identifier for the authorization details type as a string. The value of the type field determines the allowable contents of the object that contains it. The value is unique for the described API in the context of the AS. This field is REQUIRED.

承認の詳細の識別子は、文字列としてタイプします。タイプフィールドの値は、それを含むオブジェクトの許容コンテンツを決定します。この値は、ASのコンテキストで説明されているAPIにとって一意です。この項目は必須です。

An authorization_details array MAY contain multiple entries of the same type.

Authorization_Details配列には、同じタイプの複数のエントリが含まれる場合があります。

Figure 2 shows an authorization_details of type payment_initiation using the example data shown above:

図2は、上記の例のデータを使用して、type payment_initiationのauthorization_detailsを示しています。

   [
      {
         "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"
      }
   ]
        

Figure 2: Example of "authorization_details" for a Credit Transfer

図2:クレジット転送のための「Authorization_Details」の例

Figure 3 shows a combined request asking for access to account information and permission to initiate a payment:

図3は、アカウント情報へのアクセスと支払いを開始する許可を求める結合リクエストを示しています。

   [
      {
         "type": "account_information",
         "actions": [
            "list_accounts",
            "read_balances",
            "read_transactions"
         ],
         "locations": [
            "https://example.com/accounts"
         ]
      },
      {
         "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"
      }
   ]
        

Figure 3: Example of "authorization_details" for a Combined Request

図3:合計リクエストの「authorization_details」の例

The JSON objects with type fields of account_information and payment_initiation represent the different authorization_details to be used by the AS to ask for consent.

Account_informationとPayment_initiationのタイプフィールドを持つJSONオブジェクトは、同意を求めるために使用されるさまざまなAuthorization_Detailsを表します。

Note: The AS will make this data subsequently available to the respective RSs (see Section 9).

注:ASは、このデータをその後それぞれのRSSで利用できるようにします(セクション9を参照)。

2.1. Authorization Details Types
2.1. 承認の詳細タイプ

The AS controls the interpretation of the value of the type parameter as well as the object fields that the type parameter allows. However, the value of the type parameter is also generally documented and intended to be used by developers. It is RECOMMENDED that API designers choose type values that are easily copied without ambiguity. For example, some glyphs have multiple Unicode code points for the same visual character, and a developer could potentially type a different character than what the AS has defined. Possible means of reducing potential confusion are limiting the value to ASCII [RFC0020] characters, providing a machine-readable listing of data type values, or instructing developers to copy and paste directly from the documentation.

asは、型パラメーターの値と型パラメーターが許可するオブジェクトフィールドの解釈を制御します。ただし、タイプパラメーターの値も一般に文書化され、開発者が使用することを目的としています。APIデザイナーは、あいまいさなく簡単にコピーされるタイプの値を選択することをお勧めします。たとえば、一部のグリフには同じ視覚文字の複数のユニコードコードポイントがあり、開発者はASが定義したものとは異なる文字を入力する可能性があります。潜在的な混乱を減らす可能性のある手段は、値をASCII [RFC0020]文字に制限し、データ型値の機械読み取り可能なリストを提供するか、開発者にドキュメントから直接コピーして貼り付けるように指示することです。

If an application or API is expected to be deployed across different servers, such as the case in an open standard, the API designer is RECOMMENDED to use a collision-resistant namespace under their control, such as a URI that the API designer controls.

アプリケーションまたはAPIがオープン標準のケースなど、さまざまなサーバーに展開されると予想される場合、APIデザイナーは、APIデザイナーが制御するURIなど、制御下にある衝突耐性の名前空間を使用することをお勧めします。

The following example shows how an implementation could utilize the namespace https://scheme.example.org/ to ensure collision-resistant type values.

次の例は、実装が名前空間https://scheme.example.org/をどのように利用して衝突耐性の型値を確保できるかを示しています。

   {
      "type": "https://scheme.example.org/files",
      "locations": [
         "https://example.com/files"
      ],
      "permissions": [
         {
            "path": "/myfiles/A",
            "access": [
               "read"
            ]
         },
         {
            "path": "/myfiles/A/X",
            "access": [
               "read",
               "write"
            ]
         }
      ]
   }
        

Figure 4: Example of "authorization_details" with a URL as Type Identifier

図4:型識別子としてURLを使用した「authorization_details」の例

2.2. Common Data Fields
2.2. 一般的なデータフィールド

This specification defines a set of common data fields that are designed to be usable across different types of APIs. This specification does not require the use of these common fields by an API definition but, instead, provides them as reusable generic components for API designers to make use of. The allowable values of all fields are determined by the API being protected, as defined by a particular "type" value.

この仕様は、さまざまなタイプのAPIで使用できるように設計された共通データフィールドのセットを定義します。この仕様では、API定義でこれらの一般的なフィールドを使用する必要はありませんが、代わりに、APIデザイナーが使用するための再利用可能なジェネリックコンポーネントとして提供されます。すべてのフィールドの許容値は、特定の「タイプ」値で定義されるように、保護されているAPIによって決定されます。

locations:

場所:

An array of strings representing the location of the resource or RS. These strings are typically URIs identifying the location of the RS. This field can allow a client to specify a particular RS, as discussed in Section 12.

リソースまたはRsの場所を表す文字列の配列。これらの文字列は通常、Rsの位置を識別しています。このフィールドは、セクション12で説明したように、クライアントが特定のRSを指定できるようにすることができます。

actions:

行動:

An array of strings representing the kinds of actions to be taken at the resource.

リソースで実行されるアクションの種類を表す文字列の配列。

datatypes:

データタイプ:

An array of strings representing the kinds of data being requested from the resource.

リソースから要求されるデータの種類を表す文字列の配列。

identifier:

識別子:

A string identifier indicating a specific resource available at the API.

APIで利用可能な特定のリソースを示す文字列識別子。

privileges:

特権:

An array of strings representing the types or levels of privilege being requested at the resource.

リソースで要求される特権の種類またはレベルを表す文字列の配列。

When different common data fields are used in combination, the permissions the client requests are the product of all the values. The object represents a request for all actions values listed within the object to be used at all locations values listed within the object for all datatypes values listed within the object. In the following example, the client is requesting read and write access to both the contacts and photos belonging to customers in a customer_information API. If this request is granted, the client would assume it would be able to use any combination of rights defined by the API, such as read access to the photos and write access to the contacts.

異なる一般的なデータフィールドが組み合わせて使用される場合、クライアント要求が要求する権限はすべての値の積です。オブジェクトは、オブジェクト内にリストされているすべてのデータ型値に対してオブジェクト内にリストされているすべての場所で使用されるオブジェクト内にリストされているすべてのアクション値のリクエストを表します。次の例では、クライアントは、customer_information APIの顧客に属する連絡先と写真の両方への読み取りおよび書き込みアクセスを要求しています。このリクエストが許可された場合、クライアントは、写真への読み取りアクセスや連絡先への書き込みアクセスなど、APIで定義された権利の任意の組み合わせを使用できると想定します。

   [
      {
         "type": "customer_information",
         "locations": [
            "https://example.com/customers"
         ],
         "actions": [
            "read",
            "write"
         ],
         "datatypes": [
            "contacts",
            "photos"
         ]
      }
   ]
        

Figure 5: Example of "authorization_details" with Common Data Fields

図5:一般的なデータフィールドを使用した「authorization_details」の例

If the client wishes to have finer control over its access, it can send multiple objects. In this example, the client is asking for read access to the contacts and write access to the photos in the same API endpoint. If this request is granted, the client would not be able to write to the contacts.

クライアントがアクセスをより細かく制御したい場合、複数のオブジェクトを送信できます。この例では、クライアントは連絡先への読み取りアクセスを求めており、同じAPIエンドポイントの写真へのアクセスを書き込みます。このリクエストが許可された場合、クライアントは連絡先に書き込むことができません。

   [
      {
         "type": "customer_information",
         "locations": [
            "https://example.com/customers"
         ],
         "actions": [
            "read"
         ],
         "datatypes": [
            "contacts"
         ]
      },
      {
         "type": "customer_information",
         "locations": [
            "https://example.com/customers"
         ],
         "actions": [
            "write"
         ],
         "datatypes": [
            "photos"
         ]
      }
   ]
        

Figure 6: Example of "authorization_details" with Common Data Fields in Multiple Objects

図6:複数のオブジェクトの一般的なデータフィールドを使用した「authorization_details」の例

An API MAY define its own extensions, subject to the type of the respective authorization object. It is anticipated that API designers will use a combination of common data fields defined in this specification as well as fields specific to the API itself. The following non-normative example shows the use of both common and API-specific fields as part of two different fictitious API type values. The first access request includes the actions, locations, and datatypes fields specified here as well as the API-specific geolocation field, indicating access to photos taken at the given coordinates. The second access request includes the actions and identifier fields specified here as well as the API-specific currency fields.

APIは、それぞれの承認オブジェクトのタイプを条件として、独自の拡張機能を定義できます。APIデザイナーは、この仕様で定義された共通のデータフィールドと、API自体に固有のフィールドの組み合わせを使用することが予想されます。次の非規範的な例は、2つの異なる架空のAPIタイプ値の一部として、一般的なフィールドとAPI固有のフィールドの両方の使用を示しています。最初のアクセス要求には、ここで指定されたアクション、場所、およびデータ型フィールドと、特定の座標で撮影した写真へのアクセスを示すAPI固有のジオロケーションフィールドが含まれます。2番目のアクセス要求には、ここで指定されたアクションと識別子フィールド、およびAPI固有の通貨フィールドが含まれます。

   [
      {
         "type":"photo-api",
         "actions":[
            "read",
            "write"
         ],
         "locations":[
            "https://server.example.net/",
            "https://resource.local/other"
         ],
         "datatypes":[
            "metadata",
            "images"
         ],
         "geolocation":[
            {
               "lat":-32.364,
               "lng":153.207
            },
            {
               "lat":-35.364,
               "lng":158.207
            }
         ]
      },
      {
         "type":"financial-transaction",
         "actions":[
            "withdraw"
         ],
         "identifier":"account-14-32-32-3",
         "currency":"USD"
      }
   ]
        

Figure 7: Example of "authorization_details" Using Common and Extension Data Fields

図7:一般的なデータフィールドと拡張データフィールドを使用した「authorization_details」の例

If this request is approved, the resulting access token's access rights will be the union of the requested types of access for each of the two APIs, just as above.

このリクエストが承認された場合、結果のアクセストークンのアクセス権は、上記のように、2つのAPIのそれぞれの要求されたタイプのアクセスの連合となります。

3. Authorization Request
3. 承認リクエスト

The authorization_details authorization request parameter can be used to specify authorization requirements in all places where the scope parameter is used for the same purpose, examples include:

authorization_details承認要求パラメーターを使用して、スコープパラメーターが同じ目的で使用されるすべての場所で承認要件を指定できます。例には次のものが含まれます。

* authorization requests as specified in [RFC6749]

* [RFC6749]で指定されている認定要求

* device authorization requests as specified in [RFC8628]

* [RFC8628]で指定されているデバイス認証リクエスト

* backchannel authentication requests as defined in [OID-CIBA]

* [oid-ciba]で定義されているバックチャネル認証要求

In case of authorization requests as defined in [RFC6749], implementers MAY consider using pushed authorization requests [RFC9126] to improve the security, privacy, and reliability of the flow. See Sections 12, 13, and 11.4 for details.

[RFC6749]で定義されている承認要求の場合、実装者は、フローのセキュリティ、プライバシー、および信頼性を改善するために、プッシュされた承認要求[RFC9126]を使用することを検討することができます。詳細については、セクション12、13、および11.4を参照してください。

Parameter encoding is determined by the respective context. In the context of an authorization request according to [RFC6749], the parameter is encoded using the application/x-www-form-urlencoded format of the serialized JSON as shown in Figure 8, using the example from Section 2 (line breaks for display purposes only):

パラメーターエンコーディングは、それぞれのコンテキストによって決定されます。[RFC6749]に従って許可リクエストのコンテキストでは、パラメーターは、図8に示すように、シリアル化されたJSONのアプリケーション/X-WWW-Form-Urlencoded形式を使用してエンコードされます。目的のみ):

   GET /authorize?response_type=code
      &client_id=s6BhdRkqt3
      &state=af0ifjsldkj
      &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
      &code_challenge_method=S256
      &code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bwc-uCHaoeK1t8U
      &authorization_details=%5B%7B%22type%22%3A%22account%5Finfo
      rmation%22%2C%22actions%22%3A%5B%22list%5Faccounts%22%2C%22
      read%5Fbalances%22%2C%22read%5Ftransactions%22%5D%2C%22loca
      tions%22%3A%5B%22https%3A%2F%2Fexample%2Ecom%2Faccounts%22%
      5D%7D%2C%7B%22type%22%3A%22payment%5Finitiation%22%2C%22act
      ions%22%3A%5B%22initiate%22%2C%22status%22%2C%22cancel%22%5
      D%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample%2Ecom%2Fp
      ayments%22%5D%2C%22instructedAmount%22%3A%7B%22currency%22%
      3A%22EUR%22%2C%22amount%22%3A%22123%2E50%22%7D%2C%22credito
      rName%22%3A%22Merchant%20A%22%2C%22creditorAccount%22%3A%7B
      %22iban%22%3A%22DE02100100109307118603%22%7D%2C%22remittanc
      eInformationUnstructured%22%3A%22Ref%20Number%20Merchant%22
      %7D%5D HTTP/1.1
   Host: server.example.com
        

Figure 8: Example of Authorization Request with "authorization_details"

図8:「authorization_details」を使用した承認要求の例

Based on the data provided in the authorization_details parameter, the AS will ask the user for consent to the requested access permissions.

Authorization_Detailsパラメーターで提供されるデータに基づいて、ASは、要求されたアクセス許可に同意を求めるようになります。

Note: The user may also grant a subset of the requested authorization details.

注:ユーザーは、要求された承認の詳細のサブセットを付与することもできます。

In Figure 9, the client wants to get access to account information and initiate a payment:

図9では、クライアントはアカウント情報にアクセスし、支払いを開始したいと考えています。

   [
      {
         "type": "account_information",
         "actions": [
            "list_accounts",
            "read_balances",
            "read_transactions"
         ],
         "locations": [
            "https://example.com/accounts"
         ]
      },
      {
         "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"
      }
   ]
        

Figure 9: URL Decoded "authorization_details"

図9:URLデコード「承認の詳細」

3.1. Relationship to the "scope" Parameter
3.1. 「スコープ」パラメーターとの関係

authorization_details and scope can be used in the same authorization request for carrying independent authorization requirements.

Authorization_DetailsおよびScopeは、独立した承認要件を搭載するための同じ承認要求で使用できます。

Combined use of authorization_details and scope is supported by this specification in part to allow existing OAuth-based applications to incrementally migrate towards using authorization_details exclusively. It is RECOMMENDED that a given API use only one form of requirement specification.

Authorization_DetailsとScopeの使用の組み合わせは、既存のOAUTHベースのアプリケーションがAuthorization_Detailsのみの使用に向けて徐々に移行できるようにするために、この仕様によってサポートされています。特定のAPIは、要件仕様の1つの形式のみを使用することをお勧めします。

The AS MUST process both sets of requirements in combination with each other for the given authorization request. The details of how the AS combines these parameters are specific to the APIs being protected and outside the scope of this specification.

ASは、指定された承認要求のために両方の要件を互いに組み合わせて処理する必要があります。これらのパラメーターがどのように組み合わされているかの詳細は、APIが保護されており、この仕様の範囲外であることに固有のものです。

When gathering user consent, the AS MUST present the merged set of requirements represented by the authorization request.

ユーザーの同意を収集するとき、ASは、承認要求に応じて表されるマージされた一連の要件を提示する必要があります。

If the resource owner grants the client the requested access, the AS will issue tokens to the client that are associated with the respective authorization_details (and scope values, if applicable).

リソース所有者がクライアントに要求されたアクセスを付与する場合、ASは、それぞれのAuthorization_Details(および該当する場合はスコープ値)に関連付けられているクライアントにトークンを発行します。

3.2. Relationship to the "resource" Parameter
3.2. 「リソース」パラメーターとの関係

The resource authorization request parameter, as defined in [RFC8707], can be used to further determine the resources where the requested scope can be applied. The resource parameter does not have any impact on the way the AS processes the authorization_details authorization request parameter.

[RFC8707]で定義されているリソース認証要求パラメーターを使用して、要求されたスコープを適用できるリソースをさらに決定することができます。リソースパラメーターは、AS AS Authorization_Details承認要求パラメーターを処理する方法に影響を与えません。

4. Authorization Response
4. 承認応答

This specification does not define extensions to the authorization response.

この仕様では、承認応答への拡張機能を定義しません。

5. Authorization Error Response
5. 承認エラー応答

The AS MUST refuse to process any unknown authorization details type or authorization details not conforming to the respective type definition. The AS MUST abort processing and respond with an error invalid_authorization_details to the client if any of the following are true of the objects in the authorization_details structure:

ASは、それぞれのタイプ定義に準拠していない未知の承認の詳細タイプまたは承認の詳細を処理することを拒否しなければなりません。ASは処理を中止し、エラーINVALID_AUTHORIZATION_DETAILSで応答する必要があります。

* contains an unknown authorization details type value,

* 未知の承認の詳細タイプ値が含まれています、

* is an object of known type but containing unknown fields,

* 既知のタイプのオブジェクトですが、未知のフィールドが含まれています、

* contains fields of the wrong type for the authorization details type,

* 承認の詳細タイプのために間違ったタイプのフィールドが含まれています、

* contains fields with invalid values for the authorization details type, or

* 承認の詳細タイプの無効な値を持つフィールドが含まれます。

* is missing required fields for the authorization details type.

* 承認の詳細タイプに必要なフィールドがありません。

6. Token Request
6. トークンリクエスト

The authorization_details token request parameter can be used to specify the authorization details that a client wants the AS to assign to an access token. The AS checks whether the underlying grant (in case of grant types authorization_code, refresh_token, etc.) or the client's policy (in case of grant type client_credentials) allows the issuance of an access token with the requested authorization details. Otherwise, the AS refuses the request with the error code invalid_authorization_details (similar to invalid_scope).

authorization_detailsトークン要求パラメーターを使用して、クライアントがアクセストークンに割り当てるために希望する承認の詳細を指定できます。ASは、基礎となる助成金(助成金タイプ承認_code、refresh_tokenなどの場合)またはクライアントのポリシー(助成金タイプの場合)が、要求された承認の詳細を使用してアクセストークンを発行できるかどうかを確認します。それ以外の場合、ASはエラーコードInvalid_authorization_details(Invalid_scopeに似ています)でリクエストを拒否します。

6.1. Comparing Authorization Details
6.1. 承認の詳細を比較します

Many actions in the OAuth protocol allow the AS and RS to make security decisions based on whether the request is asking for "more" or "less" than a previous, existing request. For example, upon refreshing a token, the client can ask for a new access token with "fewer permissions" than had been previously authorized by the resource owner. The requested access token will convey the reduced permissions, but the resource owner's previous authorization is unchanged by such requests. Since the semantics of the fields in the authorization_details will be implementation specific to a given API or set of APIs, there is no standardized mechanism to compare two arbitrary authorization detail requests. An AS should not rely on simple object comparison in most cases, as the intersection of some fields within a request could have side effects on the access rights granted, depending on how the API has been designed and deployed. This is a similar effect to the scope values used with some APIs.

OAUTHプロトコルの多くのアクションにより、ASとRSは、リクエストが以前の既存のリクエストよりも「より多く」または「少ない」を求めているかどうかに基づいてセキュリティ決定を行うことができます。たとえば、トークンをリフレッシュすると、クライアントは、リソースの所有者によって以前に承認されていたよりも、「より少ないアクセス許可」を備えた新しいアクセストークンを要求できます。要求されたアクセストークンは、削減された許可を伝えますが、リソース所有者の以前の許可はそのような要求によって変更されません。Authorization_Detailsのフィールドのセマンティクスは、特定のAPIまたはAPIのセットに固有の実装であるため、2つの任意の承認の詳細リクエストを比較する標準化されたメカニズムはありません。ASは、APIの設計方法と展開方法に応じて、リクエスト内の一部のフィールドの交差点が付与されたアクセス権に副作用がある可能性があるため、ほとんどの場合、ほとんどの場合、単純なオブジェクトの比較に依存すべきではありません。これは、一部のAPIで使用されるスコープ値と同様の効果です。

When comparing a new request to an existing request, an AS can use the same processing techniques as used in granting the request in the first place to determine if a resource owner needs to authorize the request. The details of this comparison are dependent on the definition of the type of authorization request and outside the scope of this specification, but common patterns can be applied.

新しいリクエストを既存のリクエストと比較する場合、ASは最初にリクエストを許可する際に使用されるのと同じ処理手法を使用して、リソース所有者がリクエストを承認する必要があるかどうかを判断できます。この比較の詳細は、承認要求のタイプの定義とこの仕様の範囲外に依存しますが、一般的なパターンを適用できます。

This shall be illustrated using our running example. The example authorization request in Section 3, if approved by the user, resulted in the issuance of an authorization code associated with the privileges to:

これは、実行中の例を使用して説明するものとします。セクション3の承認要求の例は、ユーザーによって承認された場合、特権に関連付けられた承認コードの発行が次のとおりです。

* list accounts,

* リストアカウント、

* access the balance of one or more accounts,

* 1つ以上のアカウントの残高にアクセスし、

* access the transactions of one or more accounts, and

* 1つ以上のアカウントのトランザクションにアクセスし、

* initiate, check the status of, and cancel a payment.

* 開始、ステータスを確認し、支払いをキャンセルします。

The client could now request the AS to issue an access token assigned with the privilege to just access a list of accounts as follows:

クライアントは、次のように、アカウントのリストにアクセスするために特権に割り当てられたアクセストークンを発行するように要求することができます。

   [
      {
         "type": "account_information",
         "actions": [
            "list_accounts"
         ],
         "locations": [
            "https://example.com/accounts"
         ]
      }
   ]
        

Figure 10: Example of "authorization_details" Reduced Privileges

図10:「Authorization_Details」の例の削減特権

The example API is designed such that each field used by the account_information type contains additive rights, with each value within the actions and locations arrays specifying a different element of access. To make a comparison in this instance, the AS would perform the following steps:

例のAPIは、Account_Informationタイプで使用される各フィールドに追加権を含むように設計されており、各値はアクションの異なる要素を指定するアクションおよび場所配列内にあります。この例で比較するには、次の手順を実行するとおりです。

* verify that the authorization code issued in the previous step contains an authorization details object of type account_information,

* 前のステップで発行された承認コードには、タイプaccount_informationの承認詳細オブジェクトが含まれていることを確認します。

* verify whether the approved list of actions contains list_accounts, and

* 承認されたアクションのリストにlist_accountsが含まれているかどうかを確認し、

* verify whether the locations value includes only previously approved locations.

* 場所の値に以前に承認された場所のみが含まれているかどうかを確認します。

If all checks succeed, the AS would issue the requested access token with the reduced set of access.

すべてのチェックが成功した場合、ASは、アクセスのセットを減らして要求されたアクセストークンを発行します。

Note that this comparison is relevant to this specific API type definition. A different API type definition could have different processing rules. For example, an actions value could subsume the rights associated with another actions value. For example, if a client initially asks for a token with write access, this implies both read and write access to this API:

この比較は、この特定のAPIタイプ定義に関連していることに注意してください。異なるAPIタイプ定義には、処理ルールが異なる場合があります。たとえば、アクション値は、別のアクション値に関連する権利を覆す可能性があります。たとえば、クライアントが最初に書き込みアクセスを備えたトークンを要求する場合、これはこのAPIへの読み取りと書き込みアクセスの両方を意味します。

   [
       {
           "type": "example_api",
           "actions": [
               "write"
           ]
       }
   ]
        

Figure 11: Example of "authorization_details" Requesting "write" Access to an API

図11:「authorization_details」の例「書き込み」アクセスをAPIに要求する

Later, that same client makes a refresh request for read access:

その後、その同じクライアントが読み取りアクセスのリフレッシュリクエストを行います:

   [
       {
           "type": "example_api",
           "actions": [
               "read"
           ]
       }
   ]
        

Figure 12: Example of "authorization_details" Requesting "read" Access to an API

図12:「authorization_details」の例は、「読み取り」アクセスをAPIに読み取ります

The AS would compare the type value and the actions value to determine that the read access is already covered by the write access previously granted to the client.

ASは、タイプ値とアクション値を比較して、読み取りアクセスが以前にクライアントに付与された書き込みアクセスによってすでにカバーされていると判断します。

This same API could be designed with a possible value for privileges of admin, used in this example to denote that the resulting token is allowed to perform any of the functions on the resources. If that client is then granted such admin privileges to the API, the authorization_details would be as follows:

この同じAPIは、この例で使用される管理者の特権に対して可能な価値で設計できます。この例では、結果のトークンがリソース上の機能のいずれかを実行できることを示します。そのクライアントがAPIにそのような管理権を付与された場合、authorization_detailsは次のとおりです。

   [
       {
           "type": "example_api",
           "privileges": [
               "admin"
           ]
       }
   ]
        

Figure 13: Example of "authorization_details" with "admin" Access to an API

図13:APIへの「管理者」アクセスを使用した「authorization_details」の例

The AS would compare the type value and find that the privileges value subsumes any aspects of read or write access that had been granted to the client previously. Note that other API definitions can use privileges such that values do not subsume one another.

タイプ値を比較し、特権値が以前にクライアントに付与されていた読み取りまたは書き込みアクセスの任意の側面を包含することを発見します。他のAPI定義では、値が互いに潜入しないように特権を使用できることに注意してください。

The next example shows how the client can use the common data element locations (see Section 2.2) to request the issuance of an access token restricted to a certain RS. In our running example, the client may ask for all permissions of the approved grant of type payment_initiation applicable to the RS residing at https://example.com/payments as follows:

次の例は、クライアントが共通のデータ要素の位置を使用して(セクション2.2を参照)、特定のRsに制限されたアクセストークンの発行を要求する方法を示しています。実行中の例では、クライアントは、次のようにhttps://example.com/paymentsに居住するRSに適用されるタイプ支払い_initiationの承認された助成金のすべての許可を求めることができます。

   [
      {
         "type": "payment_initiation",
         "locations": [
            "https://example.com/payments"
         ]
      }
   ]
        

Figure 14: Example of "authorization_details" Requesting an Audience-Restricted Access Token

図14:「authorization_details」の例は、視聴者制限アクセストークンを要求する

7. Token Response
7. トークン応答

In addition to the token response parameters as defined in [RFC6749], the AS MUST also return the authorization_details as granted by the resource owner and assigned to the respective access token.

[RFC6749]で定義されているトークン応答パラメーターに加えて、ASはリソース所有者によって付与され、それぞれのアクセストークンに割り当てられたAuthorization_Detailsも返す必要があります。

The authorization details assigned to the access token issued in a token response are determined by the authorization_details parameter of the corresponding token request. If the client does not specify the authorization_details token request parameters, the AS determines the resulting authorization_details at its discretion.

トークン応答で発行されたアクセストークンに割り当てられた承認の詳細は、対応するトークン要求のauthorization_detailsパラメーターによって決定されます。クライアントがAuthorization_Detailsトークン要求パラメーターを指定していない場合、ASはその裁量で結果のAuthorization_Detailsを決定します。

The AS MAY omit values in the authorization_details to the client.

ASは、authorization_detailsの値をクライアントに省略します。

For our running example, it would look like this:

実行中の例では、次のようになります。

   HTTP/1.1 200 OK
   Content-Type: application/json
   Cache-Control: no-store

   {
      "access_token": "2YotnFZFEjr1zCsicMWpAA",
      "token_type": "example",
      "expires_in": 3600,
      "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA",
      "authorization_details": [
         {
            "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"
         }
      ]
   }
        

Figure 15: Example Token Response

図15:トークンの応答の例

7.1. Enriched Authorization Details in Token Response
7.1. トークン応答の充実した承認の詳細

The authorization details attached to the access token MAY differ from what the client requests. In addition to the user authorizing less than what the client requested, there are some use cases where the AS enriches the data in an authorization details object. Whether enrichment is allowed and specifics of how it works are necessarily part of the definition of the respective authorization details type.

アクセストークンに添付された承認の詳細は、クライアントが要求するものとは異なる場合があります。クライアントが要求したものよりも少ないユーザーが認可することに加えて、ASが認証詳細オブジェクトでデータを濃縮するいくつかのユースケースがあります。濃縮が許可されているかどうか、およびそれがどのように機能するかの詳細は、必然的にそれぞれの承認の詳細タイプの定義の一部です。

As one example, a client may ask for access to account information but leave the decision about the specific accounts it will be able to access to the user. During the course of the authorization process, the user would select the subset of their accounts that they want to allow the client to access. As one design option to convey the selected accounts, the AS could add this information to the respective authorization details object.

一例として、クライアントはアカウント情報へのアクセスを要求するが、ユーザーにアクセスできる特定のアカウントに関する決定を任せる場合があります。承認プロセスの過程で、ユーザーは、クライアントがアクセスできるようにするアカウントのサブセットを選択します。選択したアカウントを伝達する1つの設計オプションとして、この情報をそれぞれの承認の詳細オブジェクトに追加できるように。

In that example, the requested authorization_details parameter might look like the following. In this example, the empty arrays serve as placeholders for where data will be added during enrichment by the AS. This example is illustrative only and is not intended to suggest a preference for designing the specifics of any authorization details type this way.

その例では、要求されたAuthorization_Detailsパラメーターは次のように見える場合があります。この例では、空の配列は、ASによる濃縮中にデータが追加される場所のプレースホルダーとして機能します。この例は実例のみであり、承認の詳細の詳細をこの方法で設計することを好むことを提案することを意図していません。

   "authorization_details": [
      {
         "type": "account_information",
         "access": {
            "accounts": [],
            "balances": [],
            "transactions": []
         },
         "recurringIndicator":true
      }
   ]
        

Figure 16: Example of Requested "authorization_details"

図16:要求された「authorization_details」の例

The AS then would expand the authorization details object and add the respective account identifiers.

AS ASは、承認の詳細オブジェクトを拡張し、それぞれのアカウント識別子を追加します。

   HTTP/1.1 200 OK
   Content-Type: application/json
   Cache-Control: no-store

   {
      "access_token":"2YotnFZFEjr1zCsicMWpAA",
      "token_type":"example",
      "expires_in":3600,
      "refresh_token":"tGzv3JokF0XG5Qx2TlKWIA",
      "authorization_details":[
         {
            "type":"account_information",
            "access":{
               "accounts":[
                  {
                     "iban":"DE2310010010123456789"
                  },
                  {
                     "maskedPan":"123456xxxxxx1234"
                  }
               ],
               "balances":[
                  {
                     "iban":"DE2310010010123456789"
                  }
               ],
               "transactions":[
                  {
                     "iban":"DE2310010010123456789"
                  },
                  {
                     "maskedPan":"123456xxxxxx1234"
                  }
               ]
            },
            "recurringIndicator":true
         }
      ]
   }
        

Figure 17: Example of Enriched "authorization_details"

図17:濃縮された「authorization_details」の例

For another example, the client is asking for access to a medical record but does not know the record number at request time. In this example, the client specifies the type of access it wants but doesn't specify the location or identifier of that access.

別の例として、クライアントは医療記録へのアクセスを求めていますが、リクエスト時に記録番号を知りません。この例では、クライアントは必要なアクセスのタイプを指定しますが、そのアクセスの場所または識別子を指定しません。

   {
   "authorization_details": [
      {
         "type": "medical_record",
         "sens": [ "HIV", "ETH", "MART" ],
         "actions": [ "read" ],
         "datatypes": [ "Patient", "Observation", "Appointment" ]
      }
   ]}
        

Figure 18: Example of Requested "authorization_details"

図18:要求された「authorization_details」の例

When the user interacts with the AS, they select which of the medical records they are responsible for giving to the client. This information gets returned with the access token.

ユーザーがASと対話すると、クライアントに提供する責任がある医療記録のどれを選択します。この情報は、アクセストークンで返されます。

   {
      "access_token":"2YotnFZFEjr1zCsicMWpAA",
      "token_type":"example",
      "expires_in":3600,
      "refresh_token":"tGzv3JokF0XG5Qx2TlKWIA",
      "authorization_details":[
       {
         "type": "medical_record",
         "sens": [ "HIV", "ETH", "MART" ],
         "actions": [ "read" ],
         "datatypes": [ "Patient", "Observation", "Appointment" ],
         "identifier": "patient-541235",
         "locations": [ "https://records.example.com/" ]
        }
     ]
   }
        

Figure 19: Example of Enriched "authorization_details"

図19:濃縮された「authorization_details」の例

Note: The client needs to be aware upfront of the possibility that a certain authorization details object can be enriched. It is assumed that this property is part of the definition of the respective authorization details type.

注:クライアントは、特定の承認の詳細オブジェクトを充実させる可能性を前もって認識する必要があります。このプロパティは、それぞれの承認の詳細タイプの定義の一部であると想定されています。

8. Token Error Response
8. トークンエラー応答

The Token Error Response MUST conform to the rules given in Section 5.

トークンエラー応答は、セクション5に記載されているルールに準拠する必要があります。

9. Resource Servers
9. リソースサーバー

In order to enable the RS to enforce the authorization details as approved in the authorization process, the AS MUST make this data available to the RS. The AS MAY add the authorization_details field to access tokens in JSON Web Token (JWT) format or to token introspection responses.

RSが承認プロセスで承認された許可の詳細を実施できるようにするために、ASはこのデータをRSで利用できるようにする必要があります。ASは、authorization_detailsフィールドを追加して、JSON Webトークン(JWT)形式のトークンにアクセスするか、内省的応答をトークンします。

9.1. JWT-Based Access Tokens
9.1. JWTベースのアクセストークン

If the access token is a JWT [RFC7519], the AS is RECOMMENDED to add the authorization details object, filtered to the specific audience, as a top-level claim.

アクセストークンがJWT [RFC7519]の場合、トップレベルの主張として、特定の視聴者にフィルタリングされた承認詳細オブジェクトを追加することをお勧めします。

The AS will typically also add further claims to the JWT that the RS requires request processing, e.g., user ID, roles, and transaction-specific data. What claims the particular RS requires is defined by the RS-specific policy with the AS.

ASは、通常、RSがリクエスト処理、例えばユーザーID、ロール、およびトランザクション固有のデータを必要とするというJWTにさらにクレームを追加します。特定のRSが必要とする主張は、ASを使用したRS固有のポリシーによって定義されます。

The following shows the contents of an example JWT for the payment initiation example above:

以下は、上記の支払い開始例の例の例の内容を示しています。

   {
      "iss": "https://as.example.com",
      "sub": "24400320",
      "aud": "a7AfcPcsl2",
      "exp": 1311281970,
      "acr": "psd2_sca",
      "txn": "8b4729cc-32e4-4370-8cf0-5796154d1296",
      "authorization_details": [
         {
            "type": "https://scheme.example.com/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"
         }
      ],
      "debtorAccount": {
         "iban": "DE40100100103307118608",
         "user_role": "owner"
      }
   }
        

Figure 20: Example of "authorization_details" in JWT-Based Access Token

図20:JWTベースのアクセストークンの「authorization_details」の例

In this case, the AS added the following example claims to the JWT-based access token:

この場合、次の例を追加したAsは、JWTベースのアクセストークンに対する主張を主張しています。

sub:

サブ:

indicates the user for which the client is asking for payment initiation.

クライアントが支払いの開始を求めているユーザーを示します。

txn:

TXN:

transaction id used to trace the transaction across the services of provider example.com

プロバイダーのサービス全体のトランザクションをトレースするために使用されるトランザクションID example.com

debtorAccount:

債務 - カウント:

API-specific field containing the debtor account. In the example, this account was not passed in the authorization_details but was selected by the user during the authorization process. The field user_role conveys the role the user has with respect to this particular account. In this case, they are the owner. This data is used for access control at the payment API (the RS).

債務者口座を含むAPI固有のフィールド。この例では、このアカウントはAuthorization_Detailsで渡されるのではなく、承認プロセス中にユーザーによって選択されました。Field user_roleは、この特定のアカウントに対してユーザーが持つ役割を伝えます。この場合、彼らは所有者です。このデータは、支払いAPI(RS)でのアクセス制御に使用されます。

9.2. Token Introspection
9.2. トークン内省

Token introspection [RFC7662] provides a means for an RS to query the AS to determine information about an access token. If the AS includes authorization detail information for the token in its response, the information MUST be conveyed with authorization_details as a top-level member of the introspection response JSON object. The authorization_details member MUST contain the same structure defined in Section 2, potentially filtered and extended for the RS making the introspection request.

トークン内省[RFC7662]は、RSがアクセストークンに関する情報を決定するためのASを照会する手段を提供します。ASがトークンの応答に承認の詳細情報を含む場合、情報は、内省応答JSONオブジェクトのトップレベルメンバーとしてauthorization_detailsで伝えなければなりません。Authorization_Detailsメンバーは、セクション2で定義された同じ構造を含める必要があります。これは、RSのために潜在的にフィルター処理され、内省要求を行うために拡張されている必要があります。

Here is an example introspection response for the payment initiation example:

支払い開始の例の例は次のとおりです。

   {
      "active": true,
      "sub": "24400320",
      "aud": "s6BhdRkqt3",
      "exp": 1311281970,
      "acr": "psd2_sca",
      "txn": "8b4729cc-32e4-4370-8cf0-5796154d1296",
      "authorization_details": [
         {
            "type": "https://scheme.example.com/payment_initiation",
            "actions": [
               "initiate",
               "status",
               "cancel"
            ],
            "locations": [
               "https://example.com/payments"
            ],
            "instructedAmount": {
               "currency": "EUR",
               "amount": "123.50"
            },
            "creditorName": "Merchant123",
            "creditorAccount": {
               "iban": "DE02100100109307118603"
            },
            "remittanceInformationUnstructured": "Ref Number Merchant"
         }
      ],
      "debtorAccount": {
         "iban": "DE40100100103307118608",
         "user_role": "owner"
      }
   }
        

Figure 21: Example of "authorization_details" in Introspection Response

図21:内省的応答における「Authorization_Details」の例

10. Metadata
10. メタデータ

To advertise its support for this feature, the supported list of authorization details types is included in the AS metadata response [RFC8414] using the metadata parameter authorization_details_types_supported, which is a JSON array.

この機能のサポートを宣伝するために、認証詳細タイプのサポートされているリストは、JSONアレイであるMetadata Parameter Autherization_Details_Types_Supportedを使用して、ASメタデータ応答[RFC8414]に含まれています。

This is illustrated by the following example:

これは、次の例で説明されています。

   {
      ...
      "authorization_details_types_supported":[
         "payment_initiation",
         "account_information"
      ]
   }
        

Figure 22: Example of Server Metadata about the Supported Authorization Details

図22:サポートされている承認の詳細に関するサーバーメタデータの例

Clients MAY indicate the authorization details types they will use when requesting authorization with the client registration metadata parameter authorization_details_types, which is a JSON array.

クライアントは、JSONアレイであるクライアント登録Metadata Parameter authorization_details_typesで承認を要求するときに使用する承認の詳細タイプを示す場合があります。

This is illustrated by the following example:

これは、次の例で説明されています。

   {
      ...
      "authorization_details_types":[
         "payment_initiation"
      ]
   }
        

Figure 23: Example of Server Metadata about Authorization Details

図23:承認の詳細に関するサーバーメタデータの例

The registration of authorization details types with the AS is outside the scope of this specification.

この仕様の範囲外であるASを使用した承認の詳細タイプの登録。

11. Implementation Considerations
11. 実装の考慮事項
11.1. Using Authorization Details in a Certain Deployment
11.1. 特定の展開で承認の詳細を使用します

Using authorization details in a certain deployment will require the following steps:

特定の展開で承認の詳細を使用するには、次の手順が必要です。

* Define authorization details types.

* 承認の詳細タイプを定義します。

* Publish authorization details types in the OAuth server metadata.

* OAUTHサーバーメタデータに承認の詳細タイプを公開します。

* Determine how authorization details are shown to the user in the user consent prompt.

* ユーザーの同意プロンプトで、ユーザーに承認の詳細がどのように表示されるかを決定します。

* If needed, enrich authorization details in the user consent process (e.g., add selected accounts or set expirations).

* 必要に応じて、ユーザーの同意プロセスで承認の詳細を強化します(たとえば、選択したアカウントを追加したり、有効期限を設定したりします)。

* If needed, determine how authorization details are reflected in access token content or introspection responses.

* 必要に応じて、アクセストークンコンテンツまたは内省的応答に承認の詳細がどのように反映されるかを判断します。

* Determine how the RSs process the authorization details or token data derived from authorization details.

* RSSが承認の詳細または承認の詳細から派生したトークンデータをどのように処理するかを決定します。

* If needed, entitle clients to use certain authorization details types.

* 必要に応じて、クライアントが特定の承認の詳細タイプを使用できるようにします。

11.2. Minimal Implementation Support
11.2. 最小限の実装サポート

General AS implementations supporting this specification should provide the following basic functions:

この仕様をサポートする実装としての一般的なものは、次の基本機能を提供する必要があります。

* Support advertisement of supported authorization details types in OAuth server metadata

* サポートされている承認の詳細タイプのサポートOAUTHサーバーメタデータの種類

* Accept the authorization_details parameter in authorization requests in conformance with this specification

* 承認要求でauthorization_detailsパラメーターをこの仕様に準拠して受け入れる

* Support storage of consented authorization details as part of a grant

* 助成金の一部として同意された承認の詳細のサポート

* Implement default behavior for adding authorization details to access tokens and token introspection responses in order to make them available to RSs (similar to scope values). This should work with any grant type, especially authorization_code and refresh_token.

* RSS(スコープ値と同様)で利用可能にするために、トークンおよびトークン内省応答にアクセスするための認証詳細を追加するためのデフォルトの動作を実装します。これは、助成金の種類、特にauthorization_codeとrefresh_tokenで動作するはずです。

Processing and presentation of authorization details will vary significantly among different authorization details types. Implementations should therefore support customization of the respective behavior. In particular, implementations should allow deployments to:

許可の詳細の処理と提示は、承認の詳細タイプによって大きく異なります。したがって、実装はそれぞれの動作のカスタマイズをサポートする必要があります。特に、実装では、展開を次のように許可する必要があります。

* determine presentation of the authorization details;

* 承認の詳細の表示を決定します。

* modify requested authorization details in the user consent process, e.g., adding fields; and

* ユーザー同意プロセスの要求された承認の詳細を変更します。たとえば、フィールドの追加。そして

* merge requested and preexisting authorization details.

* 要求された既存の承認の詳細をマージします。

One approach to supporting such customization would be to have a mechanism allowing the registration of extension modules, each of them responsible for rendering the respective user consent and any transformation needed to provide the data needed to the RS by way of structured access tokens or token introspection responses.

このようなカスタマイズをサポートする1つのアプローチは、拡張モジュールの登録を許可するメカニズムを持つことです。それぞれが、それぞれがそれぞれのユーザーの同意を提供し、構造化されたアクセストークンまたはトークンの内省によってRSに必要なデータを提供するために必要な変換を提供することです。反応。

11.3. Use of Machine-Readable Type Schemas
11.3. マシン読み取り可能なタイプスキーマの使用

Implementations might allow deployments to use machine-readable schema languages for defining authorization details types to facilitate creating and validating authorization details objects against such schemas. For example, if an authorization details type were defined using JSON Schemas [JSON.Schema], the JSON Schema identifier could be used as type value in the respective authorization details objects.

実装により、展開が機械読み取り可能なスキーマ言語を使用して、承認の詳細タイプを定義して、そのようなスキーマに対してオブジェクトの作成を作成および検証することを容易にすることができます。たとえば、JSONスキーマ[json.schema]を使用して承認の詳細タイプが定義されている場合、JSONスキーマ識別子は、それぞれの承認詳細オブジェクトのタイプ値として使用できます。

Note, however, that type values are identifiers understood by the AS and, to the extent necessary, the client and RS. This specification makes no assumption that a type value would point to a machine-readable schema format or that any party in the system (such as the client, AS, or RS) would dereference or process the contents of the type field in any specific way.

ただし、そのタイプの値は、ASおよび必要な範囲でクライアントとRsによって理解される識別子であることに注意してください。この仕様は、タイプ値がマシン読み取り可能なスキーマ形式を指していること、またはシステム内のすべてのパーティ(クライアントなど)が特定の方法でタイプフィールドのコンテンツを繰り返し回避または処理することを仮定しません。。

11.4. Large Requests
11.4. 大規模なリクエスト

Authorization request URIs containing authorization_details in a request parameter or a request object can become very long. Therefore, implementers should consider using the request_uri parameter as defined in [RFC9101] in combination with the pushed request object mechanism as defined in [RFC9126] to pass authorization_details in a reliable and secure manner. Here is an example of such a pushed authorization request that sends the authorization request data directly to the AS via an HTTPS-protected connection:

承認要求authorization_detailsを要求パラメーターに含むurisまたはリクエストオブジェクトは非常に長くなる可能性があります。したがって、実装者は、[rfc9126]で定義されているプッシュされたリクエストオブジェクトメカニズムと組み合わせて[rfc9101]で定義されているrequest_uriパラメーターを、信頼できる安全な方法で承認_detailsに合格することを検討する必要があります。HTTPSで保護された接続を介してASに直接ASに直接送信するこのようなプッシュされた承認要求の例を次に示します。

     POST /as/par HTTP/1.1
     Host: as.example.com
     Content-Type: application/x-www-form-urlencoded
     Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3

     response_type=code&
     client_id=s6BhdRkqt3
     &state=af0ifjsldkj
     &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
     &code_challenge_method=S256
     &code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bwc-uCHaoeK1t8U
     &authorization_details=%5B%7B%22type%22%3A%22account_information%22
     %2C%22actions%22%3A%5B%22list_accounts%22%2C%22read_balances%22%2C%
     22read_transactions%22%5D%2C%22locations%22%3A%5B%22https%3A%2F%2Fe
     xample.com%2Faccounts%22%5D%7D%2C%7B%22type%22%3A%22payment_initiat
     ion%22%2C%22actions%22%3A%5B%22initiate%22%2C%22status%22%2C%22canc
     el%22%5D%2C%22locations%22%3A%5B%22https%3A%2F%2Fexample.com%2Fpaym
     ents%22%5D%2C%22instructedAmount%22%3A%7B%22currency%22%3A%22EUR%22
     %2C%22amount%22%3A%22123.50%22%7D%2C%22creditorName%22%3A%22Merchan
     t123%22%2C%22creditorAccount%22%3A%7B%22iban%22%3A%22DE021001001093
     07118603%22%7D%2C%22remittanceInformationUnstructured%22%3A%22Ref%2
     0Number%20Merchant%22%7D%5D
        

Figure 24: Example of Large Request including "authorization_details"

図24:「Authorization_Details」を含む大規模なリクエストの例

12. Security Considerations
12. セキュリティに関する考慮事項

The authorization_details parameter is sent through the user agent in case of an OAuth authorization request, which makes them vulnerable to modifications by the user. If the integrity of the authorization_details is a concern, clients MUST protect authorization_details against tampering and swapping. This can be achieved by signing the request using signed request objects as defined in [RFC9101] or using the request_uri authorization request parameter as defined in [RFC9101] in conjunction with [RFC9126] to pass the URI of the request object to the AS.

authorization_detailsパラメーターは、OAuth Authorizationリクエストの場合にユーザーエージェントを介して送信され、ユーザーによる変更に対して脆弱になります。Authorization_Detailsの整合性が懸念事項である場合、クライアントは承認_Detailsを改ざんやスワッピングから保護する必要があります。これは、[RFC9101]で定義されている署名されたリクエストオブジェクトを使用してリクエストに署名するか、[RFC9126]と併せて[RFC9101]で定義されているRequest_uri承認要求パラメーターを使用して、リクエストオブジェクトのURIをASに渡すことで実現できます。

All string comparisons in an authorization_details parameter are to be done as defined by [RFC8259]. No additional transformation or normalization is to be done in evaluating equivalence of string values.

Authorization_Detailsパラメーターのすべての文字列比較は、[RFC8259]で定義されているように実行されます。文字列値の等価性を評価する際に、追加の変換または正規化は行われません。

The common data field locations allows a client to specify where it intends to use a certain authorization, i.e., it is possible to unambiguously assign permissions to RSs. In situations with multiple RSs, this prevents unintended client authorizations (e.g., a read scope value potentially applicable for an email as well as a cloud service) through audience restriction.

一般的なデータフィールドの場所により、クライアントは特定の承認を使用する場所を指定できます。つまり、RSSに許可を明確に割り当てることができます。複数のRSSを使用した状況では、これにより、意図しないクライアントの承認(たとえば、電子メールやクラウドサービスに適用される可能性のある読み取りスコープ値)を視聴者の制限を介して防止します。

The AS MUST properly sanitize and handle the data passed in the authorization_details in order to prevent injection attacks.

ASは、噴射攻撃を防ぐために、Authorization_Detailsで渡されたデータを適切に消毒および処理する必要があります。

The Security Considerations of [RFC6749], [RFC7662], and [RFC8414] also apply.

[RFC6749]、[RFC7662]、および[RFC8414]のセキュリティ上の考慮事項も適用されます。

13. Privacy Considerations
13. プライバシーに関する考慮事項

It is especially important for implementers to design and use authorization details in a privacy-preserving manner.

実装者にとって、プライバシーを提供する方法で承認の詳細を設計および使用することが特に重要です。

Any sensitive personal data included in authorization_details must be prevented from leaking, e.g., through referrer headers. Implementation options include encrypted request objects as defined in [RFC9101] or transmission of authorization_details via end-to-end encrypted connections between client and AS by utilizing [RFC9126] and the request_uri authorization request parameter as defined in [RFC9101]. The latter does not require application-level encryption, but it requires another message exchange between the client and the AS.

Authorization_Detailsに含まれる機密の個人データは、リファラーヘッダーを介して、たとえば漏れを防ぐ必要があります。実装オプションには、[RFC9101]で定義されている暗号化されたリクエストオブジェクトまたはクライアント間のエンドツーエンドの暗号化された接続を介した[RFC9126]と[RFC9126]と[RFC9101]で定義されているRequest_URI承認リクエストパラメーターを使用して、[rfc9101]で承認_detailsの送信が含まれます。後者はアプリケーションレベルの暗号化を必要としませんが、クライアントとASの間の別のメッセージ交換が必要です。

Even if the request data is encrypted, an attacker could use the AS to learn the user's data by injecting the encrypted request data into an authorization request on a device under their control and use the AS's user consent screens to show the (decrypted) user data in the clear. Implementations need to consider this attack vector and implement appropriate countermeasures, e.g., by only showing portions of the data or, if possible, determining whether the assumed user context is still the same (after user authentication).

要求データが暗号化されている場合でも、攻撃者は、暗号化された要求データを制御下のデバイスに承認要求に挿入することにより、ユーザーのデータを学習し、ASのユーザー同意画面を使用して(復号化された)ユーザーデータを表示することができます。クリアで。実装は、この攻撃ベクトルを考慮し、適切な対策を実装する必要があります。たとえば、データの一部のみを表示するか、可能であれば、想定されるユーザーコンテキストがまだ同じであるかどうかを判断する必要があります(ユーザー認証後)。

The AS needs to take into consideration the privacy implications when sharing authorization_details with the client or RSs. The AS should share this data with those parties on a "need to know" basis as determined by local policy.

クライアントまたはRSSとauthorization_detailsを共有する際のプライバシーへの影響を考慮する必要があります。ASは、現地のポリシーで決定された「知る必要がある」ベースで、このデータをそれらの当事者と共有する必要があります。

14. IANA Considerations
14. IANAの考慮事項
14.1. OAuth Parameters Registration
14.1. OAuthパラメーター登録

The following parameter has been registered in the "OAuth Parameters" registry [IANA.OAuth.Parameters] established by [RFC6749].

次のパラメーターは、[RFC6749]によって確立された「OAUTHパラメーター」レジストリ[IANA.OAUTH.PARAMETERS]に登録されています。

Name:

名前:

authorization_details

authorization_details

Parameter Usage Location:

パラメーターの使用場所:

authorization request, token request, token response

承認リクエスト、トークンリクエスト、トークン応答

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

RFC 9396

RFC 9396

14.2. JSON Web Token Claims Registration
14.2. JSON Webトークンは登録を主張します

The following value has been registered in the IANA "JSON Web Token Claims" registry established by [RFC7519].

次の値は、[RFC7519]によって確立されたIANA「JSON Webトークンクレーム」レジストリに登録されています。

Claim Name:

クレーム名:

authorization_details

authorization_details

Claim Description:

クレームの説明:

The claim authorization_details contains a JSON array of JSON objects representing the rights of the access token. Each JSON object contains the data to specify the authorization requirements for a certain type of resource.

請求承認_Detailsには、アクセストークンの権利を表すJSONオブジェクトのJSON配列が含まれています。各JSONオブジェクトには、特定のタイプのリソースの承認要件を指定するデータが含まれています。

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

Section 9.1 of RFC 9396

RFC 9396のセクション9.1

14.3. OAuth Token Introspection Response Registration
14.3. OAUTHトークン内注文応答登録

The following value has been registered in the IANA "OAuth Token Introspection Response" registry established by [RFC7662].

次の値は、[RFC7662]によって確立されたIANA「Oauth Token Introspection Response」レジストリに登録されています。

Name:

名前:

authorization_details

authorization_details

Description:

説明:

The member authorization_details contains a JSON array of JSON objects representing the rights of the access token. Each JSON object contains the data to specify the authorization requirements for a certain type of resource.

メンバーAuthorization_Detailsには、アクセストークンの権利を表すJSONオブジェクトのJSON配列が含まれています。各JSONオブジェクトには、特定のタイプのリソースの承認要件を指定するデータが含まれています。

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

Section 9.2 of RFC 9396

RFC 9396のセクション9.2

14.4. OAuth Authorization Server Metadata Registration
14.4. OAuth Authorization Serverメタデータ登録

The following values have been registered in the IANA "OAuth Authorization Server Metadata" registry of [IANA.OAuth.Parameters] established by [RFC8414].

次の値は、[RFC8414]によって確立された[IANA.OAUTH.PARAMETERS]のIANA「OAuth Authorization Server Metadata」レジストリに登録されています。

Metadata Name:

メタデータ名:

authorization_details_types_supported

authorization_details_types_supported

Metadata Description:

メタデータの説明:

JSON array containing the authorization details types the AS supports

承認の詳細を含むJSONアレイASサポートのタイプ

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

Section 10 of RFC 9396

RFC 9396のセクション10

14.5. OAuth Dynamic Client Registration Metadata Registration
14.5. OAuth Dynamic Client登録メタデータ登録

The following value has been registered in the IANA "OAuth Dynamic Client Registration Metadata" registry of [IANA.OAuth.Parameters] established by [RFC7591].

次の値は、[RFC7591]によって確立された[iana.oauth.parameters]のiana "oauth dynamic client登録メタデータ]レジストリに登録されています。

Client Metadata Name:

クライアントメタデータ名:

authorization_details_types

authorization_details_types

Client Metadata Description:

クライアントメタデータの説明:

Indicates what authorization details types the client uses.

クライアントが使用する承認の詳細タイプを示します。

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

Section 10 of RFC 9396

RFC 9396のセクション10

14.6. OAuth Extensions Error Registration
14.6. OAUTH拡張エラー登録

The following value has been registered in the IANA "OAuth Extensions Error Registry" of [IANA.OAuth.Parameters] established by [RFC6749].

次の値は、[RFC6749]によって確立された[IANA.OAUTH.PARAMETERS]のIANA「OAuth拡張エラーレジストリ」に登録されています。

Name:

名前:

invalid_authorization_details

Invalid_authorization_details

Usage Location:

使用場所:

token endpoint, authorization endpoint

トークンエンドポイント、認証エンドポイント

Protocol Extension:

プロトコル拡張:

OAuth 2.0 Rich Authorization Requests

OAUTH 2.0リッチ承認リクエスト

Change Controller:

Change Controller:

IETF

IETF

Reference:

参照:

Section 5 of RFC 9396

RFC 9396のセクション5

15. References
15. 参考文献
15.1. Normative References
15.1. 引用文献
   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.
        
   [RFC7519]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
              (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
              <https://www.rfc-editor.org/info/rfc7519>.
        
   [RFC7662]  Richer, J., Ed., "OAuth 2.0 Token Introspection",
              RFC 7662, DOI 10.17487/RFC7662, October 2015,
              <https://www.rfc-editor.org/info/rfc7662>.
        
   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.
        
   [RFC8414]  Jones, M., Sakimura, N., and J. Bradley, "OAuth 2.0
              Authorization Server Metadata", RFC 8414,
              DOI 10.17487/RFC8414, June 2018,
              <https://www.rfc-editor.org/info/rfc8414>.
        
   [RFC8628]  Denniss, W., Bradley, J., Jones, M., and H. Tschofenig,
              "OAuth 2.0 Device Authorization Grant", RFC 8628,
              DOI 10.17487/RFC8628, August 2019,
              <https://www.rfc-editor.org/info/rfc8628>.
        
   [RFC8707]  Campbell, B., Bradley, J., and H. Tschofenig, "Resource
              Indicators for OAuth 2.0", RFC 8707, DOI 10.17487/RFC8707,
              February 2020, <https://www.rfc-editor.org/info/rfc8707>.
        
15.2. Informative References
15.2. 参考引用
   [CSC]      Cloud Signature Consortium, "Architectures and protocols
              for remote signature applications", Version 1.0.4.0, June
              2019, <https://cloudsignatureconsortium.org/wp-
              content/uploads/2020/01/CSC_API_V1_1.0.4.0.pdf>.
        
   [ETSI]     ETSI, "Electronic Signatures and Infrastructures (ESI);
              Protocols for remote digital signature creation", V1.1.1,
              ETSI TS 119 432, March 2019,
              <https://www.etsi.org/deliver/
              etsi_ts/119400_119499/119432/01.01.01_60/
              ts_119432v010101p.pdf>.
        
   [IANA.OAuth.Parameters]
              IANA, "OAuth Parameters",
              <https://www.iana.org/assignments/oauth-parameters>.
        
   [JSON.Schema]
              OpenJS Foundation, "JSON Schema",
              <https://json-schema.org/>.
        
   [OID-CIBA] Fernandez, G., Walter, F., Nennker, A., Tonge, D., and B.
              Campbell, "OpenID Connect Client-Initiated Backchannel
              Authentication Flow - Core 1.0", 1 September 2021,
              <https://openid.net/specs/openid-client-initiated-
              backchannel-authentication-core-1_0.html>.
        
   [OIDC]     Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., and
              C. Mortimore, "OpenID Connect Core 1.0 incorporating
              errata set 1", 8 November 2014,
              <https://openid.net/specs/openid-connect-core-1_0.html>.
        
   [RFC0020]  Cerf, V., "ASCII format for network interchange", STD 80,
              RFC 20, DOI 10.17487/RFC0020, October 1969,
              <https://www.rfc-editor.org/info/rfc20>.
        
   [RFC6749]  Hardt, D., Ed., "The OAuth 2.0 Authorization Framework",
              RFC 6749, DOI 10.17487/RFC6749, October 2012,
              <https://www.rfc-editor.org/info/rfc6749>.
        
   [RFC7591]  Richer, J., Ed., Jones, M., Bradley, J., Machulak, M., and
              P. Hunt, "OAuth 2.0 Dynamic Client Registration Protocol",
              RFC 7591, DOI 10.17487/RFC7591, July 2015,
              <https://www.rfc-editor.org/info/rfc7591>.
        
   [RFC8259]  Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
              Interchange Format", STD 90, RFC 8259,
              DOI 10.17487/RFC8259, December 2017,
              <https://www.rfc-editor.org/info/rfc8259>.
        
   [RFC9101]  Sakimura, N., Bradley, J., and M. Jones, "The OAuth 2.0
              Authorization Framework: JWT-Secured Authorization Request
              (JAR)", RFC 9101, DOI 10.17487/RFC9101, August 2021,
              <https://www.rfc-editor.org/info/rfc9101>.
        
   [RFC9126]  Lodderstedt, T., Campbell, B., Sakimura, N., Tonge, D.,
              and F. Skokan, "OAuth 2.0 Pushed Authorization Requests",
              RFC 9126, DOI 10.17487/RFC9126, September 2021,
              <https://www.rfc-editor.org/info/rfc9126>.
        
   [Transaction-Auth]
              Lodderstedt, T., "Transaction Authorization or why we need
              to re-think OAuth scopes", 20 April 2019,
              <https://medium.com/oauth-2/transaction-authorization-or-
              why-we-need-to-re-think-oauth-scopes-2326e2038948>.
        
Appendix A. Additional Examples
付録A. 追加の例
A.1. OpenID Connect
A.1. OpenID Connect

OpenID Connect [OIDC] specifies the JSON-based claims request parameter that can be used to specify the claims a client (acting as an OpenID Connect Relying Party) wishes to receive in a fine-grained and privacy-preserving way as well as assign those claims to certain delivery mechanisms, i.e., ID Token or userinfo response.

OpenID Connect [OIDC] JSONベースのクレームリクエストパラメーターを指定します。これは、クライアント(OpenID Connectに依存している当事者として機能する)を指定するために使用できます。特定の配信メカニズム、つまりIDトークンまたはuserInfo応答に対する主張。

The combination of the scope value openid and the additional parameter claims can be used beside authorization_details in the same way as every non-OIDC scope value.

Scope値OpenIDと追加のパラメータークレームの組み合わせは、すべての非ODCスコープ値と同じ方法でauthorization_detailsの横で使用できます。

Alternatively, there could be an authorization details type for OpenID Connect. This section gives an example of what such an authorization details type could look like, but defining this authorization details type is outside the scope of this specification.

または、OpenID Connectの承認の詳細タイプがある場合があります。このセクションでは、そのような承認の詳細タイプがどのように見えるかの例を示しますが、この承認の詳細タイプを定義するタイプは、この仕様の範囲外です。

These hypothetical examples try to encapsulate all details specific to the OpenID Connect part of an authorization process into an authorization JSON object.

これらの仮説的な例は、承認プロセスのOpenID接続部分に固有のすべての詳細を認証JSONオブジェクトにカプセル化しようとします。

The top-level fields are based on the definitions given in [OIDC]:

トップレベルのフィールドは、[oidc]に与えられた定義に基づいています。

claim_sets:

請求_セット:

the names of predefined claim sets, replacement for respective scope values, such as profile

事前定義されたクレームセットの名前、プロファイルなどのそれぞれのスコープ値の代替

max_age:

max_age:

Maximum Authentication Age

最大認証年齢

acr_values:

ACR_VALUES:

requested Authentication Context Class Reference (ACR) values

要求された認証コンテキストクラス参照(ACR)値

claims:

請求:

the claims JSON structure as defined in [OIDC]

[OIDC]で定義されているJSON構造の主張

This is a simple request for some claim sets.

これは、一部の請求セットの簡単な要求です。

   [
      {
         "type": "openid",
         "locations": [
            "https://op.example.com/userinfo"
         ],
         "claim_sets": [
            "email",
            "profile"
         ]
      }
   ]
        

Figure 25: Example of OpenID Connect Request Utilizing "authorization_details"

図25:「authorization_details」を使用したOpenID Connectリクエストの例

Note: locations specifies the location of the userinfo endpoint since this is the only place where an access token is used by a client (Relying Party) in OpenID Connect to obtain claims.

注:場所は、UserInfoエンドポイントの場所を指定しています。これは、クライアント(依存)がOpenID Connectのクライアント(依存)がクレームを取得する唯一の場所であるためです。

A more sophisticated example is shown in Figure 26.

より洗練された例を図26に示します。

   [
      {
         "type": "openid",
         "locations": [
            "https://op.example.com/userinfo"
         ],
         "max_age": 86400,
         "acr_values": "urn:mace:incommon:iap:silver",
         "claims": {
            "userinfo": {
               "given_name": {
                  "essential": true
               },
               "nickname": null,
               "email": {
                  "essential": true
               },
               "email_verified": {
                  "essential": true
               },
               "picture": null,
               "http://example.com/claims/groups": null
            },
            "id_token": {
               "auth_time": {
                  "essential": true
               }
            }
         }
      }
   ]
        

Figure 26: Advanced Example of OpenID Connect Request Utilizing "authorization_details"

図26:「authorization_details」を使用するOpenID Connectリクエストの高度な例

A.2. Remote Electronic Signing
A.2. リモート電子署名

The following example is based on the concept laid out for remote electronic signing in ETSI TS 119 432 [ETSI] and the Cloud Signature Consortium (CSC) API for remote signature creation [CSC].

次の例は、ETSI TS 119 432 [ETSI]およびCloud Signature Consortium(CSC)APIのリモート署名作成[CSC]のリモート電子署名のためにレイアウトされた概念に基づいています。

   [
      {
         "type": "sign",
         "locations": [
            "https://signing.example.com/signdoc"
         ],
         "credentialID": "60916d31-932e-4820-ba82-1fcead1c9ea3",
         "documentDigests": [
            {
               "hash": "sTOgwOm+474gFj0q0x1iSNspKqbcse4IeiqlDg/HWuI=",
               "label": "Credit Contract"
            },
            {
               "hash": "HZQzZmMAIWekfGH0/ZKW1nsdt0xg3H6bZYztgsMTLw0=",
               "label": "Contract Payment Protection Insurance"
            }
         ],
         "hashAlgorithmOID": "2.16.840.1.101.3.4.2.1"
      }
   ]
        

Figure 27: Example of Electronic Signing

図27:電子署名の例

The top-level fields have the following meaning:

トップレベルのフィールドには次の意味があります。

credentialID:

recentialId:

identifier of the certificate to be used for signing

署名に使用される証明書の識別子

documentDigests:

DocumentDigests:

array containing the hash of every document to be signed (hash fields). Additionally, the corresponding label field identifies the respective document to the user, e.g., to be used in user consent.

署名するすべてのドキュメントのハッシュを含む配列(ハッシュフィールド)。さらに、対応するラベルフィールドは、ユーザーの同意で使用されるたとえば、ユーザーにそれぞれのドキュメントを識別します。

hashAlgorithm:

ハサルゴリズム:

algorithm that was used to calculate the hash values

ハッシュ値の計算に使用されたアルゴリズム

The AS is supposed to ask the user for consent for the creation of signatures for the documents listed in the structure. The client uses the access token issued as a result of the process to call the document signature API at the respective signing service to actually create the signature. This access token is bound to the client, the user ID and the hashes (and signature algorithm) as consented by the user.

Asは、構造にリストされているドキュメントの署名の作成について、ユーザーに同意を求めることになっています。クライアントは、プロセスの結果として発行されたアクセストークンを使用して、それぞれの署名サービスでドキュメント署名APIを呼び出して実際に署名を作成します。このアクセストークンは、ユーザーが同意したクライアント、ユーザーID、およびハッシュ(および署名アルゴリズム)にバインドされています。

A.3. Access to Tax Data
A.3. 税データへのアクセス

This example is inspired by an API allowing third parties to access citizen's tax declarations and income statements, for example, to determine their creditworthiness.

この例は、APIに触発され、サードパーティが市民の税務上の宣言や所得声明にアクセスできるように、たとえば信用力を判断します。

   [
       {
           "type": "tax_data",
           "locations": [
               "https://taxservice.govehub.no.example.com"
           ],
           "actions":"read_tax_declaration",
           "periods": ["2018"],
           "duration_of_access": 30,
           "tax_payer_id": "23674185438934"
       }
   ]
        

Figure 28: Example of Tax Data Access

図28:税データアクセスの例

The top-level fields have the following meaning:

トップレベルのフィールドには次の意味があります。

periods:

期間:

the periods the client wants to access

クライアントがアクセスしたい期間

duration_of_access:

duration_of_access:

how long the clients intend to access the data in days

クライアントは数日でデータにアクセスする期間

tax_payer_id:

tax_payer_id:

identifier of the taxpayer (if known to the client)

納税者の識別子(クライアントに知られている場合)

A.4. eHealth
A.4. ehealth

These two examples are inspired by requirements for APIs used in the Norwegian eHealth system.

これらの2つの例は、ノルウェーのeHealthシステムで使用されるAPIの要件に触発されています。

In this use case, the physical therapist sits in front of their computer using a local Electronic Health Records (EHR) system. They want to look at the electronic patient records of a certain patient, and they also want to fetch the patient's journal entries in another system, perhaps at another institution or a national service. Access to this data is provided by an API.

このユースケースでは、理学療法士はローカル電子ヘルスレコード(EHR)システムを使用してコンピューターの前に座っています。彼らは特定の患者の電子患者記録を見たいと思っており、また、おそらく別の機関や国家サービスで、別のシステムで患者のジャーナルエントリを取得したいと考えています。このデータへのアクセスは、APIによって提供されます。

The information necessary to authorize the request at the API is only known by the EHR system and must be presented to the API.

APIでリクエストを承認するために必要な情報は、EHRシステムのみで既知であり、APIに提示する必要があります。

In the first example, the authorization details object contains the identifier of an organization. In this case, the API needs to know if the given organization has the lawful basis for processing personal health information to give access to sensitive data.

最初の例では、承認の詳細オブジェクトには、組織の識別子が含まれています。この場合、APIは、与えられた組織が、機密データへのアクセスを提供するために個人の健康情報を処理するための合法的な根拠を持っているかどうかを知る必要があります。

   "authorization_details": {
       "type": "patient_record",
       "requesting_entity": {
           "type": "Practitioner",
           "identifier": [
           {
               "system": "urn:oid:2.16.578.1.12.4.1.4.4",
               "value": "1234567"
           }],
           "practitioner_role": {
               "organization": {
                   "identifier": {
                       "system": "urn:oid:2.16.578.1.12.4.1.2.101",
                       "type": "ENH",
                       "value": "[organizational number]"
                   }
               }
           }
       }
   }
        

Figure 29: eHealth Example

図29:eHealthの例

In the second example, the API requires more information to authorize the request. In this case, the authorization details object contains additional information about the health institution and the current profession the user has at the time of the request. The additional level of detail could be used for both authorization and data minimization.

2番目の例では、APIでは、リクエストを承認するために、より多くの情報が必要です。この場合、承認の詳細オブジェクトには、リクエストの時点でユーザーが持っている保健機関と現在の職業に関する追加情報が含まれています。追加の詳細レベルは、承認とデータの最小化の両方に使用できます。

   [
      {
         "type": "patient_record",
         "location": "https://fhir.example.com/patient",
         "actions": [
            "read"
         ],
         "patient_identifier": [
            {
               "system": "urn:oid:2.16.578.1.12.4.1.4.1",
               "value": "12345678901"
            }
         ],
         "reason_for_request": "Clinical treatment",
         "requesting_entity": {
            "type": "Practitioner",
            "identifier": [
               {
                  "system": "urn:oid:2.16.578.1.12.4.1.4.4",
                  "value": "1234567"
               }
            ],
            "practitioner_role": {
               "organization": {
                  "identifier": [
                     {
                        "system": "urn:oid:2.16.578.1.12.4.1.2.101",
                        "type": "ENH",
                        "value": "<organizational number>"
                     }
                  ],
                  "type": {
                     "coding": [
                        {
                           "system":
                              "http://hl7.example.org/fhir/org-type",
                           "code": "dept",
                           "display": "Hospital Department"
                        }
                     ]
                  },
                  "name": "Akuttmottak"
               },
               "profession": {
                  "coding": [
                     {
                        "system": "http://snomed.example.org/sct",
                        "code": "36682004",
                        "display": "Physical therapist"
                     }
                  ]
               }
            }
         }
      }
   ]
        

Figure 30: Advanced eHealth Example

図30:高度なeHealthの例

Description of the fields:

フィールドの説明:

patient_identifier:

patient_identifier:

the identifier of the patient composed of a system identifier in OID format (namespace) and the actual value within this namespace.

OID形式のシステム識別子(名前空間)で構成される患者の識別子と、この名前空間内の実際の値。

reason_for_request:

リクエストの理由:

the reason why the user wants to access a certain API.

ユーザーが特定のAPIにアクセスしたい理由。

requesting_entity:

request_entity:

specification of the requester by means of identity, role and organizational context. This data is provided to facilitate authorization and for auditing purposes.

アイデンティティ、役割、組織のコンテキストによる要求者の仕様。このデータは、承認を促進し、監査目的で提供されます。

In this use case, the AS authenticates the requester, who is not the patient, and approves access based on policies.

このユースケースでは、ASは患者ではない要求者を認証し、ポリシーに基づいてアクセスを承認します。

Acknowledgements
謝辞

We would like to thank Daniel Fett, Sebastian Ebling, Dave Tonge, Mike Jones, Nat Sakimura, and Rob Otto for their valuable feedback during the preparation of this specification.

ダニエル・フェット、セバスチャン・エブリング、デイブ・トンゲ、マイク・ジョーンズ、ナット・サキムラ、ロブ・オットーに、この仕様の準備中の貴重なフィードバックをしてくれたことに感謝します。

We would also like to thank Vladimir Dzhuvinov, Takahiko Kawasaki, Daniel Fett, Dave Tonge, Travis Spencer, Joergen Binningsboe, Aamund Bremer, Steinar Noem, Francis Pouatcha, Jacob Ideskog, Hannes Tschofenig, and Aaron Parecki for their valuable feedback to this specification.

また、ウラジミール・ズビノフ、川崎高橋、ダニエル・フェット、デイブ・トンジ、トラビス・スペンサー、ジョーゲン・ビニンズボー、アーマンド・ブレマー、シュタイナー・ノエム、フランシス・パウチャ、ジェイコブ・イドスコグ、ハネス・ツチョフェニグ、そしてaaron parabecificabe for aaron parable forに感謝します。

Authors' Addresses
著者のアドレス
   Torsten Lodderstedt
   yes.com
   Email: torsten@lodderstedt.net
        
   Justin Richer
   Bespoke Engineering
   Email: ietf@justin.richer.org
        
   Brian Campbell
   Ping Identity
   Email: bcampbell@pingidentity.com