| Internet-Draft | OAuth 2.0 RAR Metadata and Error Signali | June 2026 |
| Zehavi | Expires 16 December 2026 | [Page] |
OAuth 2.0 Rich Authorization Requests (RAR) [RFC9396] standardizes the exchange and processing of authorization details but does not define metadata for describing authorization details types.¶
This document addresses a practical interoperability challenge regarding authorization details type metadata, allowing clients to dynamically discover metadata instead of relying on out-of-band agreements. It also standardizes error signaling for cases where insufficient authorization details are provided, and offers structured remediation mechanisms.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://yaron-zehavi.github.io/oauth-rich-authorization-requests-metadata/draft-zehavi-oauth-rar-metadata.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-zehavi-oauth-rar-metadata/.¶
Discussion of this document takes place on the Web Authorization Protocol Working Group mailing list (mailto:oauth@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/oauth/. Subscribe at https://www.ietf.org/mailman/listinfo/oauth/.¶
Source for this draft and an issue tracker can be found at https://github.com/yaron-zehavi/oauth-rich-authorization-requests-metadata.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 16 December 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
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.¶
OAuth 2.0 Rich Authorization Requests (RAR) [RFC9396] allows OAuth clients to request detailed and structured authorization, enabling advanced authorization models across domains such as banking and healthcare.¶
However, RAR [RFC9396] does not specify how clients discover metadata describing valid authorization details objects. Such metadata and documentation are obtained out-of-band.¶
This document defines:¶
A new authorization server endpoint: authorization_details_types_metadata_endpoint, providing authorization details type metadata, including documentation and JSON Schema definitions [JSON.Schema].¶
A new normative OAuth 2.0 WWW-Authenticate Error Code, for resource servers to indicate insufficient_authorization_details as the cause of the error, as well as a RECOMMENDED response body specifying required authorization details types to satisfy the resource's requirements.¶
An OPTIONAL response body attribute that MAY accompany the insufficient_authorization_details error, providing an informative and actionable authorization details object. This object can be used directly in a follow-up OAuth request.¶
RECOMMENDED handling of large RAR [RFC9396] authorization details objects when issuing JWT access tokens, to avoid failures due to token sizes exceeding header size restrictions.¶
Providing actionable authorization details objects in the resource server's error response enables:¶
Simplification for clients who can directly remediate without learning to construct valid authorization details objects.¶
Support for ephemeral, interaction-specific attributes from the resource server, such as a risk profile or an internal interaction identifier, guiding authorization servers on required authentication strength and consent flows.¶
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.¶
There are two main proposed flows:¶
RAR [RFC9396] section 9 instructs that authorization servers MUST provide approved RAR objects to resource servers for enforcement. The authorization server MAY add the authorization_details attribute to access tokens in JSON Web Token (JWT) format or to token introspection responses.¶
Including large RAR objects in JWT access tokens may cause interoperability loss due to token sizes exceeding header size restrictions.¶
Authorization servers SHOULD support a configurable maximum approved RAR objects size threshold. The size calculation SHOULD be based on the UTF-8 encoded JSON serialization
of the approved authorization_details value before JWT signing or encryption. If the size exceeds this threshold, JWT access tokens SHOULD NOT include the authorization_details attribute; instead, the authorization server MUST ensure that the resource server can obtain the approved authorization details by another
means, such as token introspection [RFC7662].¶
When receiving an insufficient_authorization_details error, if the response body contains an authorization_hint attribute that matches a valid token in the client's possession, the client SHOULD retry the failing request using the matching token.¶
If the response body contains an authorization_details attribute, the client MAY include it in a subsequent OAuth request to obtain a token, which it MAY then use to retry the failing endpoint.¶
Otherwise, the client SHOULD use the authorization_details_types_required attribute, if provided in the response body:¶
Use the response body to understand which authorization details types satisfy the resource's requirements.¶
If the authorization server metadata contains authorization_details_types_supported, the client MAY use it to determine whether the authorization server supports one or more types referenced by authorization_details_types_required.¶
Fetch authorization server's authorization_details_types_metadata_endpoint to obtain authorization details types metadata and schemas.¶
Use the embedded schema value or retrieve the JSON Schema document from schema_uri.¶
Construct authorization details conforming to the schema and include them in a subsequent OAuth request to obtain an access token with which the client MAY retry calling the failing endpoint.¶
Verify access tokens against required authorization details.¶
When a resource server receives a JWT access token that does not contain an authorization_details claim, and authorization details are required for the requested resource, the resource server SHOULD attempt to obtain the authorization details using token introspection [RFC7662], if introspection is available.¶
If authorization details are missing or insufficient, the resource server SHALL return HTTP 403 with WWW-Authenticate: Bearer error="insufficient_authorization_details".¶
It is RECOMMENDED to also provide an HTTP body with the authorization_details_types_required attribute, specifying the required authorization details types to satisfy the resource's requirement. This attribute applies to ALL supported authorization servers.¶
Resource server MAY also provide in the HTTP body, OPTIONAL actionable authorization_details objects, intended to be submitted to the authorization server that issued the current access token, which MAY be used directly for remediation in a subsequent OAuth request.¶
HTTP 403 responses with response bodies may be cached or replayed in unexpected contexts.
Resource servers SHOULD mitigate by including the Cache-Control: no-store response header.¶
| Error Code | Error Usage Location | Change Controller | Specification Document |
|---|---|---|---|
| insufficient_authorization_details | Resource access error response | IETF | RFC XXXX, Section X |
This section provides non-normative examples of how this specification may be used to support specific use cases.¶
Client uses access token obtained at login to call payment initiation API¶
POST /payments HTTP/1.1
Host: resource.example.com
Content-Type: application/json
Authorization: Bearer eyj... (access token from login)
{
"type": "payment_initiation",
"locations": [
"https://resource.example.com/payments"
],
"instructed_amount": {
"currency": "EUR",
"amount": "123.50"
},
"creditor_name": "Merchant A",
"creditor_account": {
"bic": "ABCIDEFFXXX",
"iban": "DE02100100109307118603"
}
}
¶
POST /payments HTTP/1.1
Host: resource.example.com
Content-Type: application/json
Authorization: Bearer eyj... (payment approval access token)
{
"type": "payment_initiation",
"locations": [
"https://resource.example.com/payments"
],
"instructed_amount": {
"currency": "EUR",
"amount": "123.50"
},
"creditor_name": "Merchant A",
"creditor_account": {
"bic": "ABCIDEFFXXX",
"iban": "DE02100100109307118603"
}
}
¶
-04¶
Moved required authorization details types from resource metadata to resource server's response.¶
Adapted resource server processing rules to reflect error signaling and handling of large RAR payloads.¶
-03¶
Added authorization_hint to guide client on token selection and updated client processing rules accordingly¶
Added security consideration on confidentiality of RS-provided authorization_details¶
Added authorization server considerations for handling large RAR objects in JWT access tokens¶
-02¶
-01¶
Authorization details moved to HTTP body and made OPTIONAL¶
Metadata pointer from resource metadata url, full authorization details types metadata on authorization server new endpoint¶
-00¶
Document creation¶
The authors would like to thank the following individuals who contributed ideas, feedback, and wording that helped shape the final specification: Rune Grimstad.¶