<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kahrer-oauth-client-challenge-protocol-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>OAuth Client Challenge Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-kahrer-oauth-client-challenge-protocol-00"/>
    <author fullname="Judith Kahrer">
      <organization>Curity</organization>
      <address>
        <email>judith.kahrer@curity.io</email>
      </address>
    </author>
    <date year="2026" month="May" day="19"/>
    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>oauth</keyword>
    <keyword>client</keyword>
    <keyword>client challenge</keyword>
    <keyword>additional input</keyword>
    <abstract>
      <?line 54?>

<t>This document extends the OAuth 2.0 token endpoint error response (RFC 6749) with a new error code that indicates to the client that it must provide additional input for the authorization server to authorize it and accept its request.</t>
      <t>This mechanism enables just-in-time authorization flows in which the authorization server dynamically challenges the client during a request and the client tries to satisfy it. For example, the authorization server can ask the client mid-flow to provide an assertion, a verifiable presentation, or other proof-of-possession material.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-kahrer-oauth-client-challenge-protocol/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/curityio/ietf-draft-oauth-client-challenge-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The OAuth 2.0 Authorization Framework <xref target="RFC6749"/> assumes that a single grant signaled through the <tt>grant_type</tt> parameter is sufficient for the authorization server to authorize the client. It does not define how the authorization server signals to the client to provide additional input for it to make a decision - like an additional grant from the Resource Owner or an attestation artifact to prove the client's provenance.</t>
      <t>Real-world deployments increasingly require the authorization server to apply dynamic, contextual authorization policies — for example:</t>
      <ul spacing="normal">
        <li>
          <t>Demanding a freshly signed client attestation when risk signals indicate an elevated threat level.</t>
        </li>
        <li>
          <t>Requiring the client to prove its mandate before a high-value token is issued.</t>
        </li>
      </ul>
      <t>This document introduces a way for the authorization server to start a challenge session where it defines requirements that it expects from the client. It extends the OAuth 2.0 Authorization Framework by introducing the following parameters:</t>
      <ol spacing="normal" type="1"><li>
          <t>A new error code <tt>insufficient_client_authorization</tt> for token error responses that the authorization server returns when it cannot proceed without additional client-supplied material.</t>
        </li>
        <li>
          <t>A companion response parameter <tt>authorization_requirement</tt> — a typed JSON object
that describes what the authorization server requires.</t>
        </li>
        <li>
          <t>Processing rules for both parties, including the requirement to return
<tt>unauthorized_client</tt> when subsequently provided input fails validation.</t>
        </li>
      </ol>
      <section anchor="motivation-and-use-cases">
        <name>Motivation and Use Cases</name>
        <section anchor="just-in-time-authorization">
          <name>Just-in-Time Authorization</name>
          <t>Whether and in which form an authorization server may return an access token to a client depends not only on the presented grant and requested access but also on the capabilities of the client, e.g., whether it is a public client or a confidential client, whether it is a first-party client or a third-party client. Just-in-time authorization means that the authorization server can, dynamically and on demand, evaluate necessary data from different sources to understand the context of a request and use that information to accept or deny a token request from a client.</t>
          <t>In a just-in-time flow, the authorization server defers its final authorization decision, challenges the client for supplemental proof material, and only then either grants or denies the request.</t>
        </section>
        <section anchor="client-authentication-step-up">
          <name>Client Authentication Step-Up</name>
          <t>An authorization server may accept client authentication for low-assurance tokens but require an attestation for tokens granting elevated privileges (see (<xref target="I-D.ietf-oauth-attestation-based-client-auth"/>)).
The <tt>insufficient_client_authorization</tt> mechanism allows the authorization server to escalate the authentication requirement without the client needing to speculatively include high-assurance credentials on every request. It allows, for example, public clients to increase their trust profile.</t>
        </section>
        <section anchor="continuos-authorization">
          <name>Continuos Authorization</name>
          <t>The security state of a system can change at any time. Systems may communicate via signals about certain security-relevant events that they observed for other systems to adopt. In such an environment the authorization server may receive signals that constitute the need for additional input for authorization to e.g., mitigate attacks and prevent misuse.</t>
        </section>
      </section>
      <section anchor="comparison-with-oauth-20-first-party-applications">
        <name>Comparison with OAuth 2.0 First-Party Applications</name>
        <t>OAuth 2.0 First-Party Applications <xref target="I-D.ietf-oauth-first-party-apps"/> defines an API for user authentication where the authorization server challenges the OAuth 2.0 client to provide data from the user. The proposed API is similar to the mechanism defined in this document. However, there is a subtle difference: OAuth 2.0 First-Party Applications defines a new error code for the client to provide more data from the end-user (Resource Owner). Its main purpose is to enable clients to control the user experience. For that it makes two important assumptions:</t>
        <ul spacing="normal">
          <li>
            <t>The client can interact with an end-user.</t>
          </li>
          <li>
            <t>The client is trusted to handle sensitive data like the end-user's credentials, i.e., the client is a first-party application.</t>
          </li>
        </ul>
        <t>The extension in this document is different because it assumes that the client can satisfy the challenge from the Authorization Requirement itself. It is applicable for both first- and third-party use cases where the authorization server challenges the client to provide additional input for the authorization grant. The client does not have to handle end-user credentials. What's more, it does not require an additional endpoint but extends the token response.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the terms "access token", "authorization server", "client", "client authentication", "token response", "token request" and "token endpoint" as defined by the OAuth 2.0 Authorization Framework <xref target="RFC6749"/>, unless otherwise specified by this document.</t>
      <t>In addition, the document uses the following terms:</t>
      <dl>
        <dt><strong>Insufficient Client Authorization Response</strong>:</dt>
        <dd>
          <t>A token error response from the OAuth 2.0 token endpoint that indicates to the client that the authorization server requires additional input for it to authorize the client.</t>
        </dd>
        <dt><strong>Authorization Requirement</strong>:</dt>
        <dd>
          <t>A typed JSON object returned by the authorization server in an Insufficient Client Authorization Response that specifies the additional material the client must supply.</t>
        </dd>
        <dt><strong>Challenge Session</strong>:</dt>
        <dd>
          <t>A string managed by the authorization server that serves as the nonce in the challenge-response pattern. It associates an Insufficient Client Authorization Response with the subsequent request that satisfies it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="error-response">
      <name>Insufficient Client Authorization Response</name>
      <t>This document registers the error code <tt>insufficient_client_authorization</tt> for use in OAuth 2.0 token endpoint error responses as defined in Section 5.2 of <xref target="RFC6749"/>.</t>
      <t>The following content applies to the Insufficient Client Authorization Response.</t>
      <dl>
        <dt><tt>error</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The <tt>error</tt> parameter <bcp14>MUST</bcp14> be <tt>insufficient_client_authorization</tt>.</t>
        </dd>
        <dt><tt>authorization_requirement</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. The <tt>authorization_requirement</tt> parameter is a typed JSON object as defined in <xref target="authorization-requirement"/>.</t>
        </dd>
        <dt><tt>challenge_session</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. An opaque identifier generated by the authorization server that binds this authorization challenge to the follow-up request.
</t>
          <t>The client <bcp14>MUST</bcp14> include this value in the subsequent request to the authorization server if it receives one along with the <tt>insufficient_client_authorization</tt> error response.</t>
        </dd>
        <dt><tt>expires_in</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. A JSON number that defines the number of seconds from the time of the Insufficient Client Authorization Response until the <tt>challenge_session</tt> expires.
</t>
          <t>The client <bcp14>MUST NOT</bcp14> submit a response after this time.</t>
        </dd>
      </dl>
      <t>The authorization server <bcp14>MUST</bcp14> comply with Section 5.2 of <xref target="RFC6749"/>. The authorization server <bcp14>SHOULD</bcp14> respond with HTTP status code <tt>403 (Forbidden)</tt>. It <bcp14>MAY</bcp14> include other parameters in the response. The client <bcp14>MUST</bcp14> ignore any parameters it does not understand.</t>
      <t>If the client does not understand or cannot satisfy the Authorization Requirement, it <bcp14>MUST</bcp14> treat the Insufficient Client Authorization Response as if the authorization server returned an <tt>unauthorized_client</tt> error.</t>
      <t>The Insufficient Client Authorization Response indicates the following:</t>
      <ol spacing="normal" type="1"><li>
          <t>The authorization server has determined that it cannot yet authorize the client or issue an access token.</t>
        </li>
        <li>
          <t>The condition is resolvable: the authorization server knows what additional input would allow it to proceed.</t>
        </li>
        <li>
          <t>The authorization server wishes to challenge the client to supply that input.</t>
        </li>
      </ol>
      <t>The following represents a non-normative example of an Insufficient Client Authorization Response.</t>
      <artwork><![CDATA[
HTTP/1.1 403 Forbidden
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_client_authorization",
  "authorization_requirement": {
    "type": "verifiable_presentation",
    "challenge_session": "7f3d9e2a-4c1b-4f8e-b5a0-1e6c8d2f0a9b",
    "presentation_definition": { ... }
  }
}
]]></artwork>
    </section>
    <section anchor="authorization-requirement">
      <name>The <tt>authorization_requirement</tt> Object</name>
      <t>The <tt>authorization_requirement</tt> parameter holds a JSON object that indicates what type of input the authorization server requires for the client to satisfy the insufficient client authorization.</t>
      <t>The following member is defined for all <tt>authorization_requirement</tt> types:</t>
      <dl>
        <dt><tt>type</tt>:</dt>
        <dd>
          <t><bcp14>REQUIRED</bcp14>. An absolute URI or a string identifying the authorization requirement type.
The value determines the semantics of other members in the object.</t>
        </dd>
      </dl>
    </section>
    <section anchor="providing-authorization-requirement">
      <name>Providing Authorization Requirement</name>
      <t>Each profile of this document that specifies a type of Authorization Requirement also <bcp14>MUST</bcp14> define how the client can fulfill the challenge and provide the required input to the authorization server.</t>
      <t>If the client does not understand the <tt>type</tt> of the <tt>authorization_requirement</tt> of an Insufficient Client Authorization Response or if it cannot satisfy the requirement, the client <bcp14>MUST</bcp14> treat the Insufficient Client Authorization Response as if the authorization server returned an <tt>unauthorized_client</tt> error as defined in Section 5.2 in <xref target="RFC6749"/>, see also <xref target="error-response"/>.</t>
      <t>The client <bcp14>MUST</bcp14> include the <tt>challenge_session</tt> parameter with the same value as it received in the Insufficient Client Authorization Response in its subsequent request and attempt to resolve the challenge.</t>
      <t>Some extensions to OAuth 2.0, notably Pushed Authorization Requests <xref target="RFC9126"/>, make use of the token endpoint response outside a token endpoint request. A profile that defines an Authorization Requirement type <bcp14>SHOULD</bcp14> define mechanisms to fulfill the requirements that are applicable to authorization and token requests alike.</t>
      <t>If the authorization server deems the supplied input from the client in response to an Authorization Requirement challenge as invalid and if there is no other way for the client to resolve the <tt>insufficient_authorization</tt> error, the authorization server <bcp14>MUST</bcp14> respond with an <tt>unauthorized_client</tt> error.</t>
    </section>
    <section anchor="client-metadata">
      <name>Client Metadata</name>
      <t>Clients that communicate their client metadata, for example via dynamic client registration <xref target="RFC7591"/> or client ID metadata document <xref target="I-D.ietf-oauth-client-id-metadata-document"/> can signal support for this specification. To do so, they <bcp14>MUST</bcp14> include the following property in their client metadata:</t>
      <dl>
        <dt><tt>insufficient_client_authorization_supported</tt>:</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON boolean value specifying whether the client supports this specification.</t>
        </dd>
      </dl>
      <t>This enables authorization servers to apply this specification without breaking integrations.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="sender-constrained-tokens">
        <name>Sender-Constrained Tokens</name>
        <t>The authorization server <bcp14>SHOULD</bcp14> issue sender-constrained tokens as a result of a successfully resolved client authorization challenge. In this way, the authorization server can mitigate the risk of token theft and replay. The idea is that the authorization server binds the token to a public key that the client controls. For the token to be valid, the client <bcp14>MUST</bcp14> provide a proof-of-possession that satisfies that key binding. The exact methods on how the authorization server binds the token to the client's key and how the client provides a proof-of-possession are out of scope of this document. Demonstrating Proof-of-Possession (DPoP) <xref target="RFC9449"/> and certificate-bound access tokens <xref target="RFC8705"/> are two examples, and there may be others.</t>
      </section>
      <section anchor="challenge-session">
        <name>Challenge Session</name>
        <t>The <tt>challenge_session</tt> parameter associates a Insufficient Client Authorization Response with follow-up resolution attempts. To mitigate session hijacking and replay, the authorization server <bcp14>SHOULD</bcp14> bind the <tt>challenge_session</tt> to the device requesting tokens, for example via DPoP. Similar to sender-constrained tokens, the binding prevents other devices from replaying a captured <tt>challenge_session</tt> and thus prevents other devices from taking over sessions (session hijacking).</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-parameters-registration">
        <name>OAuth Parameters Registration</name>
        <t>This document defines the following values for the IANA "OAuth Parameters" registry of <xref target="IANA.oauth-parameters"/> established by <xref target="RFC6749"/>.</t>
        <t><strong>Parameter Name</strong>: <tt>challenge_session</tt></t>
        <t><strong>Parameter Usage Location</strong>: token response, token request</t>
        <t><strong>Change Controller</strong>: IETF</t>
        <t><strong>Specification Document</strong>: <xref target="error-response"/> of [draft-kahrer-oauth-client-challenge-protocol-00]</t>
      </section>
      <section anchor="oauth-error-codes">
        <name>OAuth Error Codes</name>
        <t>This document defines the following values for the IANA "OAuth Extensions Error" registry of <xref target="IANA.oauth-parameters"/>.</t>
        <t><strong>Error Name</strong>: <tt>insufficient_client_authorization</tt></t>
        <t><strong>Error Usage Location</strong>: token endpoint</t>
        <t><strong>Related Protocol Extension</strong>: n/a</t>
        <t><strong>Change Controller</strong>: IETF</t>
        <t><strong>Specification Document</strong>: <xref target="error-response"/> of [draft-kahrer-oauth-client-challenge-protocol-00]</t>
      </section>
      <section anchor="oauth-client-metadata-registration">
        <name>OAuth Client Metadata Registration</name>
        <t>This document defines the following values for the IANA "OAuth Dynamic Client Registration Metadata" registry of <xref target="IANA.oauth-parameters"/> established by <xref target="RFC7591"/>.</t>
        <t><strong>Client Metadata Name</strong>: <tt>insufficient_client_authorization_supported</tt></t>
        <t><strong>Client Metadata Description</strong>: JSON boolean value that specifies whether the OAuth client supports insufficient client authorization error in token error responses.</t>
        <t><strong>Change Controller</strong>: IESG</t>
        <t><strong>Specification Document</strong>: <xref target="client-metadata"/> of [draft-kahrer-oauth-client-challenge-protocol-00]</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="IANA.oauth-parameters" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="Mastercard.VI" target="https://verifiableintent.dev/spec/">
          <front>
            <title>Verifiable Intent (VI) — Specification Overview</title>
            <author initials="V. I. W." surname="Group" fullname="Verifiable Intent Working Group">
              <organization/>
            </author>
            <date year="2026" month="February"/>
          </front>
        </reference>
        <reference anchor="OpenID.Native-SSO" target="https://openid.net/specs/openid-connect-native-sso-1_0.html">
          <front>
            <title>OpenID Connect Native SSO for Mobile Apps</title>
            <author initials="G." surname="Fletcher">
              <organization/>
            </author>
            <date year="2022" month="November"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-oauth-attestation-based-client-auth">
          <front>
            <title>OAuth 2.0 Attestation-Based Client Authentication</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2.0 protocol
   [RFC6749] that enables a client instance to include a key-bound
   attestation when interacting with an Authorization Server or Resource
   Server.  This mechanism allows a client instance to prove its
   authenticity verified by a client attester without revealing its
   target audience to that attester.  It may also serve as a mechanism
   for client authentication as per OAuth 2.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-08"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-first-party-apps">
          <front>
            <title>OAuth 2.0 for First-Party Applications</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="George Fletcher" initials="G." surname="Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <date day="27" month="February" year="2026"/>
            <abstract>
              <t>   This document defines the Authorization Challenge Endpoint, which
   supports clients that want to control the process of obtaining
   authorization from the user using a native experience.

   In many cases, this can provide an entirely browserless OAuth 2.0
   experience suited for native applications, only delegating to the
   browser in unexpected, high risk, or error conditions.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-first-party-apps-03"/>
        </reference>
        <reference anchor="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-01"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
      </references>
    </references>
    <?line 271?>

<section anchor="example-with-authorization-details">
      <name>Example with Authorization Details</name>
      <t>The following is an example that illustrates a token request using <tt>authorization_details</tt> as defined in <xref target="RFC9396"/>.
The authorization details indicate that the client aims to operate in an open banking ecosystem that has certain requirements.</t>
      <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: eyJ0eXAiOiJvYX...
DPoP: eyJ0eXAiOiJkcG9...

grant_type=client_credentials&
resource=https://api.openbanking.example&
authorization_details=%5B%7B%22type%22%3A%22payment_initiation%22%2C%22actions%22%3A%5B%22initiate%22%2C%22status%22%2C%22cancel%22%5D%2C%22locations%22%3A%5B%22https%3A%2F%2Fapi.openbanking.example%2Fpayments%22%5D%2C%22instructedAmount%22%3A%7B%22currency%22%3A%22EUR%22%2C%22amount%22%3A%22123.50%22%7D%2C%22creditorName%22%3A%22Merchant%20A%22%2C%22creditorAccount%22%3A%7B%22iban%22%3A%22DE02100100109307118603%22%7D%2C%22remittanceInformationUnstructured%22%3A%22Ref%20Number%20Merchant%22%7D%5D

]]></artwork>
      <t>While the client authentication already provides some information about the provenance of the running software, the client also needs to prove that it complies with the requirements. Therefore, the authorization server challenges the client and responds with a Insufficient Client Authorization Response. The authorization server requests from the client the presentation of a verifiable credentials, e.g., a verifiable intent <xref target="Mastercard.VI"/>.</t>
      <artwork><![CDATA[
HTTP/1.1 403 Forbidden
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_client_authorization",
  "authorization_requirement": {
    "type": "verifiable_presentation",
    "challenge_session": "7f3d9e2a-4c1b-4f8e-b5a0-1e6c8d2f0a9b",
    "presentation_definition": { ... }
  }
}
]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author wants to thank the following people for their feedback, input and contributions to this document:</t>
      <t>Jacob Ideskog, Michał Trojanowski</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
OLSjnXNGAAA=

-->

</rfc>
