<?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-rosomakho-oauth-txn-challenge-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Txn Challenge">OAuth Transaction Authorization Challenge</title>
    <seriesInfo name="Internet-Draft" value="draft-rosomakho-oauth-txn-challenge-00"/>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Pieter Kasselman">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <date year="2026" month="June" day="25"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>Transaction</keyword>
    <keyword>Authorization</keyword>
    <keyword>Human-in-the-loop</keyword>
    <abstract>
      <?line 63?>

<t>This document defines an OAuth mechanism for transaction-specific authorization challenges.
A protected resource can require additional authorization for a particular operation by
returning a transaction authorization challenge. This is useful when requests are mediated by
agents, automated workflows, or delegated services and the protected resource requires
confirmation from a human user, resource owner, or organizational authority. The client
presents the challenge to an authorization server, which validates the challenge, obtains
any required approval, and issues an OAuth 2.0 access token whose granted authorization details, expressed
using Rich Authorization Requests, describe the approved operation. The access token is then
presented to the protected resource as evidence that the challenged operation was authorized.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://yaroslavros.github.io/oauth-txn-challenge/draft-rosomakho-oauth-txn-challenge.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rosomakho-oauth-txn-challenge/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/yaroslavros/oauth-txn-challenge"/>.</t>
    </note>
  </front>
  <middle>
    <?line 75?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 (<xref target="OAUTH-FRAMEWORK"/>) access tokens authorize access to protected
resources. In many deployments, however, a protected resource cannot determine whether a
requested operation is acceptable based only on the access token that accompanies the request.
The access token might establish that the caller is authorized to interact with the protected
resource, but a particular operation can still require additional, transaction-specific
authorization.</t>
      <t>This situation arises when the protected resource needs confirmation that a concrete transaction
has been approved by an appropriate party. The approving party might be the human user on whose
behalf the request is made, a different resource owner, or an organizational authority such as
an administrator, manager, data owner, or policy decision point.</t>
      <t>This document defines a transaction authorization challenge. A protected resource uses this
challenge to request additional authorization for a specific operation. The challenge is
relayed to a client, which presents it to an authorization server. The authorization server
validates the challenge, obtains any required approval, and issues an OAuth 2.0 access token
whose granted authorization details, expressed using Rich Authorization Requests
(<xref target="OAUTH-RAR"/>), describe the approved operation and bind the access token to the
challenged transaction. The access token is then presented to the protected resource as
evidence that the challenged operation was authorized. Reusing the OAuth 2.0 access token
abstraction avoids defining a new bearer artifact and allows existing access-token validation
and protection mechanisms, including sender-constrained access tokens, to apply unchanged.</t>
      <t>This mechanism is complementary to OAuth step-up authentication defined in <xref target="OAUTH-STEP-UP"/>.
Step-up authentication enables a protected resource to require stronger or fresher authentication
of a user. A transaction authorization challenge instead requests authorization for a specific
transaction. The approving party can be different from the subject associated with the access token
used for the original request.</t>
      <section anchor="human-approval-for-agent-mediated-actions">
        <name>Human Approval for Agent-Mediated Actions</name>
        <t>Software agents, automated workflows, and delegated services can perform operations on behalf of
users. Some operations are sufficiently sensitive that a protected resource might require explicit
approval before processing them. Examples include sending a payment, publishing content, deleting
data, modifying access policy, or disclosing sensitive information.</t>
        <t>Local confirmation mechanisms within an agent framework can reduce risk, but they are not always
visible to the protected resource and do not necessarily produce authorization evidence that the
protected resource can validate. A transaction authorization challenge allows the protected resource
to require explicit authorization for the concrete operation and to receive an access token
representing that authorization.</t>
      </section>
      <section anchor="authorization-by-a-different-resource-owner">
        <name>Authorization by a Different Resource Owner</name>
        <t>The party that initiated an operation is not always the party authorized to approve it. For example,
an agent acting on behalf of one user might request access to a resource owned or controlled by
another user. The protected resource can determine that approval from the resource owner, or
from another party authorized to act for that resource owner, is required before the operation
can proceed.</t>
        <t>In this case, the transaction authorization challenge allows the protected resource to describe the
requested operation and the authorization server to determine the appropriate approving party. The
resulting access token represents authorization of the challenged operation by the party
selected according to authorization server policy.</t>
      </section>
      <section anchor="organizational-approval">
        <name>Organizational Approval</name>
        <t>Some operations require approval by an organizational authority rather than by an individual end
user. Examples include approving access to regulated data, authorizing a production deployment,
granting elevated administrative access, or permitting data transfer to an external party.</t>
        <t>A transaction authorization challenge allows the protected resource to request authorization evidence from
an authorization server or associated policy infrastructure. The authorization server validates the challenge,
applies organizational policy, obtains any required approval, and issues an access token only when the
required authorization has been obtained.</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?>

<t>This document uses the terms "client", "authorization server", "access token", "refresh token", and "protected
resource" as defined by <xref target="OAUTH-FRAMEWORK"/>.</t>
      <t>This document uses the term "authorization details" as defined by <xref target="OAUTH-RAR"/>.</t>
      <t>This document defines the following additional terms:</t>
      <dl>
        <dt>Approving Party:</dt>
        <dd>
          <t>The human user, resource owner, organizational authority, or policy authority whose approval is required
before the challenged transaction can proceed.</t>
        </dd>
        <dt>Agent:</dt>
        <dd>
          <t>A software component, automated workflow, delegated service, or other intermediary that attempts an operation
at a protected resource and relays a transaction authorization challenge to a client.</t>
        </dd>
        <dt>Transaction Authorization Challenge:</dt>
        <dd>
          <t>A challenge returned by a protected resource to indicate that a specific requested operation requires
transaction-specific authorization before it can proceed.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>A transaction authorization challenge involves a protected resource, an agent, a client, an authorization
server, and an approving party.</t>
      <t>The protected resource receives a request and determines whether the authorization currently presented
with the request is sufficient. If the protected resource determines that the requested operation requires
transaction-specific authorization, it returns a transaction authorization challenge.</t>
      <t>The agent is the component that attempted the operation at the protected resource. The agent relays
the transaction authorization challenge to the client and later presents the resulting access token
to the protected resource. The agent is not trusted to modify the contents of the challenge or the resulting
access token.</t>
      <t>The client receives the transaction authorization challenge from the agent and presents it to the authorization
server. The client is responsible for mediating the interaction between the agent-facing environment and the
authorization server. The client does not need to interpret all application-specific details of the challenged
transaction, but it <bcp14>MUST</bcp14> preserve the integrity of the challenge when presenting it to the authorization server.</t>
      <t>The authorization server validates the transaction authorization challenge, determines the approving party,
obtains any required approval, and issues an access token whose granted authorization details describe the
approved operation. The authorization server can use local policy, resource metadata, resource-owner
information, organizational policy, or other authorization context to determine whether the requested operation
can be approved.</t>
      <t>The approving party is the human user, resource owner, organizational authority, or policy authority whose
approval is required. The approving party can be the same subject on whose behalf the agent is acting, but
this is not required.</t>
      <t>The following figure shows the basic protocol flow:</t>
      <figure anchor="fig-architecture">
        <name>Overall architecture of Transaction Authorization Challenge</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="480" viewBox="0 0 480 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,128 L 8,160" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
              <path d="M 48,72 L 48,120" fill="none" stroke="black"/>
              <path d="M 48,168 L 48,216" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
              <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
              <path d="M 192,128 L 192,160" fill="none" stroke="black"/>
              <path d="M 232,32 L 232,64" fill="none" stroke="black"/>
              <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
              <path d="M 472,32 L 472,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 168,32 L 232,32" fill="none" stroke="black"/>
              <path d="M 304,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 104,48 L 160,48" fill="none" stroke="black"/>
              <path d="M 240,48 L 296,48" fill="none" stroke="black"/>
              <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 168,64 L 232,64" fill="none" stroke="black"/>
              <path d="M 304,64 L 472,64" fill="none" stroke="black"/>
              <path d="M 8,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 192,160" fill="none" stroke="black"/>
              <path d="M 8,224 L 152,224" fill="none" stroke="black"/>
              <path d="M 8,256 L 152,256" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="304,48 292,42.4 292,53.6" fill="black" transform="rotate(0,296,48)"/>
              <polygon class="arrowhead" points="248,48 236,42.4 236,53.6" fill="black" transform="rotate(180,240,48)"/>
              <polygon class="arrowhead" points="168,48 156,42.4 156,53.6" fill="black" transform="rotate(0,160,48)"/>
              <polygon class="arrowhead" points="112,48 100,42.4 100,53.6" fill="black" transform="rotate(180,104,48)"/>
              <polygon class="arrowhead" points="56,216 44,210.4 44,221.6" fill="black" transform="rotate(90,48,216)"/>
              <polygon class="arrowhead" points="56,120 44,114.4 44,125.6" fill="black" transform="rotate(90,48,120)"/>
              <g class="text">
                <text x="52" y="52">Client</text>
                <text x="200" y="52">Agent</text>
                <text x="352" y="52">Protected</text>
                <text x="428" y="52">Resource</text>
                <text x="104" y="100">transaction</text>
                <text x="208" y="100">authorization</text>
                <text x="304" y="100">challenge</text>
                <text x="72" y="148">Authorization</text>
                <text x="156" y="148">Server</text>
                <text x="92" y="196">approval</text>
                <text x="176" y="196">interaction</text>
                <text x="56" y="244">Approving</text>
                <text x="120" y="244">Party</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+----------+        +-------+        +--------------------+
|  Client  |<------>| Agent |<------>| Protected Resource |
+----------+        +-------+        +--------------------+
     |
     | transaction authorization challenge
     v
+----------------------+
| Authorization Server |
+----------------------+
     |
     | approval interaction
     v
+-----------------+
| Approving Party |
+-----------------+
]]></artwork>
        </artset>
      </figure>
      <t>The flow is as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>The agent sends a request to the protected resource using its existing authorization context.</t>
        </li>
        <li>
          <t>The protected resource determines that the request requires transaction-specific authorization.</t>
        </li>
        <li>
          <t>The protected resource returns a transaction authorization challenge to the agent.</t>
        </li>
        <li>
          <t>The agent relays the transaction authorization challenge to the client.</t>
        </li>
        <li>
          <t>The client presents the transaction authorization challenge to the authorization server.</t>
        </li>
        <li>
          <t>The authorization server validates the challenge, determines the approving party, and obtains any required approval.</t>
        </li>
        <li>
          <t>The authorization server issues an access token to the client. The access token's granted authorization
details describe the approved operation, and the access token is bound to the challenged transaction.</t>
        </li>
        <li>
          <t>The client provides the access token to the agent.</t>
        </li>
        <li>
          <t>The agent retries or continues the request and presents the access token to the protected resource.</t>
        </li>
        <li>
          <t>The protected resource validates the access token, including its authorization details, and processes the
request if the token authorizes the challenged operation.</t>
        </li>
      </ol>
    </section>
    <section anchor="transaction-authorization-challenge">
      <name>Transaction Authorization Challenge</name>
      <t>A transaction authorization challenge is a signed JWT (<xref target="JWT"/>) generated by a protected resource to
request transaction-specific authorization for a particular operation. The challenge describes the operation to be
authorized, identifies the authorization server expected to process the challenge, identifies the intended
audience of the resulting access token, and contains freshness and integrity protection.</t>
      <t>The challenge is consumed by the authorization server and can also be validated by the client before the client
presents it to the authorization server. The agent relays the challenge, but it is not trusted to modify the challenge
or to describe the challenged transaction.</t>
      <section anchor="challenge-capability-signal">
        <name>Challenge Capability Signal</name>
        <t>An agent indicates that it supports the transaction authorization challenge mechanism by sending the
<tt>Accept-Txn-Challenge</tt> header field with a true value in requests to a protected resource.</t>
        <t>The <tt>Accept-Txn-Challenge</tt> header field is an Item Structured Field; see <xref section="3.3" sectionFormat="of" target="STRUCTURED-FIELDS"/>.
Its value <bcp14>MUST</bcp14> be a Boolean. Any other value type <bcp14>MUST</bcp14> be handled by recipients as if the field were not present.
For example, if this field is included multiple times, its type will become a List and the field will be ignored.</t>
        <t>This document does not define any parameters for the <tt>Accept-Txn-Challenge</tt> header field value, but future
documents might define parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
        <t>The following example indicates support for transaction authorization challenges:</t>
        <figure anchor="fig-challenge-capability">
          <name>Agent indicating support for transaction authorization</name>
          <artwork><![CDATA[
Accept-Txn-Challenge: ?1
]]></artwork>
        </figure>
        <t>An <tt>Accept-Txn-Challenge</tt> header field with a false value has the same semantics as when the header field is not present.</t>
        <t>An agent <bcp14>MUST NOT</bcp14> include the <tt>Accept-Txn-Challenge</tt> header field unless it has a client interaction path capable
of relaying the challenge to a client that can validate the challenge and present it to an authorization
server.</t>
        <t>A protected resource <bcp14>MUST NOT</bcp14> return a transaction authorization challenge unless the request includes an
<tt>Accept-Txn-Challenge</tt> header field with a true value, or the protected resource has out-of-band knowledge that
the client supports this specification.</t>
      </section>
      <section anchor="challenge-response">
        <name>Challenge Response</name>
        <t>When a protected resource requires transaction-specific authorization, it returns an HTTP error response
indicating that transaction authorization is required. This document defines the OAuth error code
<tt>transaction_authorization_required</tt> for this purpose.</t>
        <t>For example:</t>
        <figure anchor="fig-challenge-response">
          <name>Protected resource requesting transaction authorization</name>
          <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="transaction_authorization_required",
  error_description="Transaction-specific authorization is required",
  transaction_challenge="eyJhbGciOiJFUzI1NiIsInR5cCI6InR4bi1hdXRoei1jaGFsbGVuZ2Urand0..."
]]></artwork>
        </figure>
        <t>The <tt>transaction_challenge</tt> parameter contains a transaction authorization challenge encoded as a JWS Compact
Serialization object as specified in <xref target="JWS"/>. The challenge <bcp14>MUST</bcp14> be signed by the protected resource.</t>
        <t>The <tt>error_description</tt> parameter <bcp14>MAY</bcp14> be included to provide a human-readable diagnostic description. The
<tt>error_description</tt> parameter <bcp14>MUST NOT</bcp14> be used as the basis for an authorization decision.</t>
        <t>A protected resource <bcp14>SHOULD</bcp14> use status code 401 when the request was understood but requires additional
transaction-specific authorization. Other status codes <bcp14>MAY</bcp14> be used when appropriate for the application
protocol.</t>
        <section anchor="challenge-representation">
          <name>Challenge Representation</name>
          <t>A transaction authorization challenge is a JWT secured using JWS. The JOSE header <tt>typ</tt> value <bcp14>MUST</bcp14> be
<tt>txn-authz-challenge+jwt</tt>. The <tt>alg</tt> value <bcp14>MUST</bcp14> identify an asymmetric digital signature algorithm.
The <tt>alg</tt> value <bcp14>MUST NOT</bcp14> be <tt>none</tt>.</t>
          <t>The <tt>kid</tt> value in the JOSE header is used to identify the signing key in the protected resource's JWK Set.</t>
          <t>The challenge claims identify the protected resource, the authorization server expected to process the
challenge, the transaction being authorized, and the intended audience of the resulting access token.</t>
        </section>
        <section anchor="challenge-claims">
          <name>Challenge Claims</name>
          <t>A transaction authorization challenge <bcp14>MUST</bcp14> contain the following claims:</t>
          <dl>
            <dt><tt>iss</tt>:</dt>
            <dd>
              <t>Issuer claim defined in <xref target="JWT"/>. Identifier of the protected resource that generated the challenge. The
access token issued in response to the challenge <bcp14>MUST</bcp14> use this value as its audience unless an
application profile defines a different audience binding.</t>
            </dd>
            <dt><tt>aud</tt>:</dt>
            <dd>
              <t>Audience claim defined in <xref target="JWT"/>. Identifier of the authorization server expected to validate the challenge
and issue an access token for the challenged operation. The value is selected by the protected resource
and need not be the issuer of the access token presented with the original request. The protected resource
<bcp14>MUST</bcp14> select an authorization server that it trusts to evaluate the challenge and issue access tokens
for the requested operation.</t>
            </dd>
            <dt><tt>iat</tt>:</dt>
            <dd>
              <t>Issued At claim defined in <xref target="JWT"/>. Time at which the challenge was issued.</t>
            </dd>
            <dt><tt>exp</tt>:</dt>
            <dd>
              <t>Expiration Time claim defined in <xref target="JWT"/>. Time at which the challenge expires.</t>
            </dd>
            <dt><tt>jti</tt>:</dt>
            <dd>
              <t>JWT ID claim defined in <xref target="JWT"/>. Unique identifier for the challenge object.</t>
            </dd>
            <dt><tt>txn</tt>:</dt>
            <dd>
              <t>Transaction Identifier claim defined in <xref target="SET"/>. Transaction identifier for the challenged operation.
 in response to the challenge <bcp14>MUST</bcp14> contain the same transaction identifier. The
transaction identifier <bcp14>MUST</bcp14> be unique within the context of the protected resource for the lifetime of the
challenge and any access token issued in response to it.</t>
            </dd>
            <dt><tt>authorization_details</tt>:</dt>
            <dd>
              <t>Claim containing Authorization Details as defined in <xref target="OAUTH-RAR"/>. Structured description of the operation
for which transaction-specific authorization is requested. The granted authorization details carried by the
access token issued in response to the challenge are derived from this value.</t>
            </dd>
            <dt><tt>reason</tt>:</dt>
            <dd>
              <t>Human-readable explanation of why transaction-specific authorization is required. This value is intended for
display to the client, the user, or the approving party. The value is integrity protected as part of the
challenge.</t>
            </dd>
          </dl>
          <t>A transaction authorization challenge <bcp14>MAY</bcp14> contain the following claims:</t>
          <dl>
            <dt><tt>reason_uri</tt>:</dt>
            <dd>
              <t>URI identifying additional information about the transaction authorization request. The URI <bcp14>MUST</bcp14> be controlled by
the protected resource or by a party trusted by the protected resource. The client and authorization server <bcp14>MAY</bcp14>
dereference this URI to obtain additional information for display or policy evaluation.</t>
            </dd>
            <dt><tt>act</tt>:</dt>
            <dd>
              <t>Actor claim defined in <xref target="OAUTH-TOKEN-EXCHANGE"/>. Information about the actor or delegation context
associated with the request that caused the challenge. The value identifies the party that attempted the
challenged operation, or the delegated actor acting on behalf of another party.</t>
            </dd>
          </dl>
          <t>The challenge <bcp14>MAY</bcp14> contain additional claims. The authorization server <bcp14>MUST</bcp14> ignore claims it does not understand
unless local policy requires otherwise.</t>
          <t>Information obtained from <tt>reason_uri</tt> <bcp14>MUST NOT</bcp14> override the security-relevant contents of the signed challenge
unless an application profile defines how that information is authenticated and bound to the challenge.</t>
          <t>Application profiles <bcp14>MAY</bcp14> define additional claims that bind the challenge to the original request or to selected
security-relevant request components.</t>
          <t>The following example shows the claims of a transaction authorization challenge:</t>
          <figure anchor="fig-challenge-example">
            <name>Example transaction authorization challenge</name>
            <artwork><![CDATA[
{
  "iss": "https://resource.example.com",
  "aud": "https://as.example.com",
  "iat": 1710000000,
  "exp": 1710000300,
  "jti": "f1f7c8c4-2f8c-4c6a-83d1-example",
  "txn": "97053963-771d-49cc-a4e3-20aad399c312",
  "authorization_details": [
    {
      "type": "payment",
      "actions": ["initiate"],
      "locations": ["https://payments.example.com/accounts/123"],
      "instructedAmount": {
        "currency": "GBP",
        "amount": "5000.00"
      },
      "creditorName": "Example Ltd"
    }
  ],
  "reason": "Approval is required before initiating this payment.",
  "reason_uri": "https://resource.example.com/transactions/97053963-771d-49cc-a4e3-20aad399c312",
  "act": {
    "sub": "spiffe://example.com/aiagent/6526f880-1895-400b-a929-11a7eecf9753"
  }
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="challenge-signing-and-key-discovery">
        <name>Challenge Signing and Key Discovery</name>
        <t>A protected resource that issues transaction authorization challenges <bcp14>MUST</bcp14> sign each challenge using an
asymmetric signing key. The client and authorization server <bcp14>MUST</bcp14> validate the challenge signature before using
any claim from the challenge for an authorization decision or for display to the user.</t>
        <t>A protected resource that issues transaction authorization challenges <bcp14>MUST</bcp14> make the public keys needed to
validate those challenges available to clients and authorization servers. This document defines protected
resource metadata parameters, using the OAuth 2.0 Protected Resource Metadata mechanism described in
<xref target="OAUTH-PROT-METADATA"/>. Deployments <bcp14>MAY</bcp14> also use preconfigured trust relationships or other
mechanisms to establish the same keying information.</t>
        <t>This document defines the following protected resource metadata parameters:</t>
        <dl>
          <dt><tt>txn_challenge_jwks_uri</tt>:</dt>
          <dd>
            <t>URL of the protected resource's JSON Web Key Set containing public keys used to validate transaction authorization challenges.</t>
          </dd>
          <dt><tt>txn_challenge_signing_alg_values_supported</tt>:</dt>
          <dd>
            <t>JSON array containing the JWS <tt>alg</tt> values supported by the protected resource for transaction authorization challenges.</t>
          </dd>
        </dl>
        <t>If a protected resource uses the same JWK Set for transaction authorization challenges and for other protected
resource signing keys, the value of <tt>txn_challenge_jwks_uri</tt> <bcp14>MAY</bcp14> be the same as another JWK Set URI published by
the protected resource.</t>
        <t>When the challenge-signing key is published in the JWK Set identified by <tt>txn_challenge_jwks_uri</tt>, the <tt>kid</tt> value in the JOSE header of a
transaction authorization challenge <bcp14>MUST</bcp14> identify the signing key in that JWK Set.</t>
        <t>If the challenge cannot be validated, the client or authorization server <bcp14>MUST NOT</bcp14> treat the challenge as authentic.</t>
      </section>
      <section anchor="agent-relay">
        <name>Agent Relay</name>
        <t>After receiving a transaction authorization challenge from a protected resource, the agent relays the challenge
to the client using a deployment-specific client-agent protocol.</t>
        <t>The agent <bcp14>MUST</bcp14> relay the transaction authorization challenge without modifying it and <bcp14>MUST NOT</bcp14> replace it with
an agent-generated description of the requested operation. The client <bcp14>MUST</bcp14> treat any agent-supplied
description as advisory. Any authorization decision, user display, or disclosure decision <bcp14>MUST</bcp14> be based on
the validated challenge or on protected resource state identified by the validated challenge.</t>
        <t>A client-agent protocol that carries transaction authorization challenges <bcp14>SHOULD</bcp14> distinguish a transaction
authorization challenge from ordinary agent messages or natural-language content. For example, such a protocol
can carry the challenge using a field named <tt>transaction_challenge</tt> whose value is the JWS Compact Serialization
of the transaction authorization challenge.</t>
        <t>In deployments where one agent delegates work to another agent, a transaction authorization challenge <bcp14>MAY</bcp14> be
relayed through one or more intermediate agents before reaching the client. Each agent that relays
the challenge <bcp14>MUST</bcp14> relay it without modification. An intermediate agent <bcp14>MUST NOT</bcp14> replace the challenge with
a new challenge unless it is itself acting as a protected resource for a distinct operation and generates a
new signed transaction authorization challenge for that operation.</t>
      </section>
      <section anchor="client-processing">
        <name>Client Processing</name>
        <t>Before presenting the challenge to the authorization server, the client <bcp14>MUST</bcp14> validate the challenge signature,
issuer, audience, and expiration. The client <bcp14>MUST</bcp14> verify that the <tt>aud</tt> claim identifies the authorization
server to which the client intends to present the challenge.</t>
        <t>The client <bcp14>MAY</bcp14> display the challenge contents to the user before sending the challenge to the authorization server.
This allows the user to decide whether to continue and whether to disclose the challenged transaction to the authorization server.</t>
        <t>When displaying challenge information, the client <bcp14>MUST</bcp14> use information obtained from the validated challenge or from
protected resource state identified by the validated challenge. The client <bcp14>MUST NOT</bcp14> rely on an unprotected description
supplied by the agent.</t>
        <t>If the user declines to continue, or if the client cannot validate the challenge, the client <bcp14>MUST NOT</bcp14> present the challenge
to the authorization server.</t>
      </section>
      <section anchor="authorization-server-processing">
        <name>Authorization Server Processing</name>
        <t>The authorization server <bcp14>MUST</bcp14> validate the transaction authorization challenge before accepting it for processing or
issuing an access token.</t>
        <t>At a minimum, the authorization server <bcp14>MUST</bcp14> verify that:</t>
        <ul spacing="normal">
          <li>
            <t>the challenge signature is valid;</t>
          </li>
          <li>
            <t>the challenge was issued by a protected resource recognized by the authorization server;</t>
          </li>
          <li>
            <t>the challenge has not expired;</t>
          </li>
          <li>
            <t>the <tt>aud</tt> claim identifies the authorization server;</t>
          </li>
          <li>
            <t>the authorization server is willing to issue access tokens for the protected resource identified by the <tt>iss</tt>
claim and for the requested operation;</t>
          </li>
          <li>
            <t>the access token issued in response to the challenge will use the protected resource identified by the <tt>iss</tt> claim
as its audience, unless an application profile defines a different audience binding;</t>
          </li>
          <li>
            <t>the <tt>txn</tt> claim is present, is a string, and is acceptable;</t>
          </li>
          <li>
            <t>the requested operation is sufficiently described;</t>
          </li>
          <li>
            <t>the client is permitted to request transaction authorization for the challenged operation.</t>
          </li>
        </ul>
        <t>When requester context, such as the <tt>act</tt> claim, is present in the challenge, the authorization server <bcp14>MUST</bcp14> consider that
context when determining whether the challenged operation can be approved.</t>
        <t>The authorization server determines the approving party according to local policy. The approving party can be the subject
associated with the original request, a different resource owner, an administrator, an organizational approval workflow,
or another policy authority.</t>
        <t>The authorization server <bcp14>MUST</bcp14> obtain any required approval before issuing an access token. The authorization server
<bcp14>SHOULD</bcp14> present the approving party with sufficient information to understand the operation being authorized. The
authorization server <bcp14>MUST NOT</bcp14> rely on an unprotected description supplied by the agent as the basis for the
authorization decision.</t>
        <t>If the authorization server accepts the challenge for processing, the client obtains the result using the transaction
authorization flow described in <xref target="transaction-authorization-flow"/>. If the authorization server rejects the challenge,
cannot validate the challenge, or cannot obtain the required approval, it <bcp14>MUST NOT</bcp14> issue an access token for the
challenged operation.</t>
      </section>
    </section>
    <section anchor="transaction-authorization-flow">
      <name>Transaction Authorization Flow</name>
      <t>The approval required to satisfy a transaction authorization challenge can require interaction with a human user,
resource owner, organizational workflow, or policy authority. Such interaction can take longer than a single HTTP
request-response exchange. Therefore, this document defines an asynchronous polling flow based on the style of
the OAuth 2.0 Device Authorization Grant defined in <xref target="OAUTH-DEVICE"/>.</t>
      <t>Unlike the Device Authorization Grant, this flow does not use a device code, user code, or verification URI. Instead,
the client submits a signed transaction authorization challenge to the authorization server. If the authorization server
accepts the challenge for processing, it returns a transaction authorization identifier. The client then polls the transaction
authorization endpoint with that identifier until the authorization server returns an access token or an error.</t>
      <t>A successful transaction authorization response does not indicate that the challenged operation has been approved.
It only indicates that the authorization server has accepted the transaction authorization challenge for processing.
The challenged operation is authorized only when the authorization server issues an access token and the protected
resource accepts that token for the challenged operation.</t>
      <t>The following figure shows the transaction authorization flow:</t>
      <figure anchor="fig-transaction-authorization-flow">
        <name>Transaction authorization flow</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="560" width="664" viewBox="0 0 664 560" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 40,72 L 40,544" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
              <path d="M 288,32 L 288,64" fill="none" stroke="black"/>
              <path d="M 376,72 L 376,544" fill="none" stroke="black"/>
              <path d="M 472,32 L 472,64" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,64" fill="none" stroke="black"/>
              <path d="M 584,72 L 584,544" fill="none" stroke="black"/>
              <path d="M 656,32 L 656,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 288,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 512,32 L 656,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 288,64 L 472,64" fill="none" stroke="black"/>
              <path d="M 512,64 L 656,64" fill="none" stroke="black"/>
              <path d="M 48,128 L 368,128" fill="none" stroke="black"/>
              <path d="M 48,192 L 368,192" fill="none" stroke="black"/>
              <path d="M 384,240 L 576,240" fill="none" stroke="black"/>
              <path d="M 48,304 L 368,304" fill="none" stroke="black"/>
              <path d="M 48,352 L 368,352" fill="none" stroke="black"/>
              <path d="M 384,400 L 576,400" fill="none" stroke="black"/>
              <path d="M 48,464 L 368,464" fill="none" stroke="black"/>
              <path d="M 48,528 L 368,528" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="584,240 572,234.4 572,245.6" fill="black" transform="rotate(0,576,240)"/>
              <polygon class="arrowhead" points="392,400 380,394.4 380,405.6" fill="black" transform="rotate(180,384,400)"/>
              <polygon class="arrowhead" points="376,464 364,458.4 364,469.6" fill="black" transform="rotate(0,368,464)"/>
              <polygon class="arrowhead" points="376,304 364,298.4 364,309.6" fill="black" transform="rotate(0,368,304)"/>
              <polygon class="arrowhead" points="376,128 364,122.4 364,133.6" fill="black" transform="rotate(0,368,128)"/>
              <polygon class="arrowhead" points="56,528 44,522.4 44,533.6" fill="black" transform="rotate(180,48,528)"/>
              <polygon class="arrowhead" points="56,352 44,346.4 44,357.6" fill="black" transform="rotate(180,48,352)"/>
              <polygon class="arrowhead" points="56,192 44,186.4 44,197.6" fill="black" transform="rotate(180,48,192)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="352" y="52">Authorization</text>
                <text x="436" y="52">Server</text>
                <text x="560" y="52">Approving</text>
                <text x="624" y="52">Party</text>
                <text x="96" y="100">Transaction</text>
                <text x="200" y="100">Authorization</text>
                <text x="288" y="100">Request</text>
                <text x="136" y="116">transaction_challenge</text>
                <text x="136" y="164">Transaction</text>
                <text x="240" y="164">Authorization</text>
                <text x="332" y="164">Response</text>
                <text x="176" y="180">transaction_authorization_id,</text>
                <text x="332" y="180">interval</text>
                <text x="420" y="228">Approval</text>
                <text x="488" y="228">Request</text>
                <text x="96" y="276">Transaction</text>
                <text x="200" y="276">Authorization</text>
                <text x="276" y="276">Poll</text>
                <text x="164" y="292">transaction_authorization_id</text>
                <text x="184" y="340">authorization_pending</text>
                <text x="280" y="340">/</text>
                <text x="328" y="340">slow_down</text>
                <text x="484" y="388">Approval</text>
                <text x="548" y="388">Result</text>
                <text x="96" y="436">Transaction</text>
                <text x="200" y="436">Authorization</text>
                <text x="276" y="436">Poll</text>
                <text x="164" y="452">transaction_authorization_id</text>
                <text x="136" y="500">Transaction</text>
                <text x="240" y="500">Authorization</text>
                <text x="332" y="500">Response</text>
                <text x="292" y="516">access</text>
                <text x="344" y="516">token</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                         +----------------------+    +-----------------+
| Client |                         | Authorization Server |    | Approving Party |
+--------+                         +----------------------+    +-----------------+
    |                                         |                         |
    | Transaction Authorization Request       |                         |
    | transaction_challenge                   |                         |
    |---------------------------------------->|                         |
    |                                         |                         |
    |      Transaction Authorization Response |                         |
    |  transaction_authorization_id, interval |                         |
    |<----------------------------------------|                         |
    |                                         |                         |
    |                                         | Approval Request        |
    |                                         |------------------------>|
    |                                         |                         |
    | Transaction Authorization Poll          |                         |
    | transaction_authorization_id            |                         |
    |---------------------------------------->|                         |
    |                                         |                         |
    |       authorization_pending / slow_down |                         |
    |<----------------------------------------|                         |
    |                                         |                         |
    |                                         |         Approval Result |
    |                                         |<------------------------|
    |                                         |                         |
    | Transaction Authorization Poll          |                         |
    | transaction_authorization_id            |                         |
    |---------------------------------------->|                         |
    |                                         |                         |
    |      Transaction Authorization Response |                         |
    |                            access token |                         |
    |<----------------------------------------|                         |
    |                                         |                         |
]]></artwork>
        </artset>
      </figure>
      <section anchor="transaction-authorization-request">
        <name>Transaction Authorization Request</name>
        <t>This specification defines a new OAuth endpoint: the transaction authorization endpoint. The authorization server <bcp14>MUST</bcp14>
publish the location of the transaction authorization endpoint using the <tt>transaction_authorization_endpoint</tt> authorization
server metadata parameter defined by this document.</t>
        <t>The client makes a transaction authorization request to the transaction authorization endpoint by sending a POST request
with the following parameters using the <tt>application/x-www-form-urlencoded</tt> format with a character encoding of
UTF-8 in the HTTP request entity-body:</t>
        <dl>
          <dt><tt>client_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> if the client is not authenticating with the authorization server as described in <xref section="3.2.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/>.
The client identifier issued to the client during the registration process.</t>
          </dd>
          <dt><tt>transaction_challenge</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The transaction authorization challenge received from the protected resource.</t>
          </dd>
        </dl>
        <t>For example, the client makes the following HTTPS request:</t>
        <figure anchor="fig-transaction-authorization-request">
          <name>Transaction authorization request</name>
          <artwork><![CDATA[
POST /txn-authorization HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

client_id=s6BhdRkqt3
&transaction_challenge=eyJhbGciOiJFUzI1NiIsInR5cCI6InR4bi1hdXRoei1jaGFsbGVuZ2Urand0...
]]></artwork>
        </figure>
        <t>Requests to the transaction authorization endpoint <bcp14>MUST</bcp14> use the Transport Layer Security (TLS) protocol <xref target="TLS"/>
and implement the best practices of <xref target="BCP-195"/>.</t>
        <t>The client authentication requirements of <xref section="3.2.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/> apply to requests on this endpoint, which means
that confidential clients (those that have established client credentials) authenticate in the same manner as when making requests
to the token endpoint, and public clients provide the "client_id" parameter to identify themselves.</t>
        <t>The authorization server <bcp14>MUST</bcp14> validate the transaction authorization challenge as described in <xref target="authorization-server-processing"/> before
accepting the request for processing.</t>
      </section>
      <section anchor="transaction-authorization-response">
        <name>Transaction Authorization Response</name>
        <t>After receiving a transaction authorization request, the authorization server validates the transaction authorization challenge as
described in <xref target="authorization-server-processing"/>. The authorization server then either issues an access token, indicates that
the transaction authorization request is pending, or returns an error response.</t>
        <t>If the authorization server approves the challenged operation without additional interaction, it returns an access token
response as described in <xref target="successful-access-token-response"/>.</t>
        <t>If additional interaction or policy evaluation is required, the authorization server returns an HTTP 200 response with an
<tt>application/json</tt> body containing the following parameters:</t>
        <dl>
          <dt><tt>transaction_authorization_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. A server-generated identifier used by the client to continue or poll the transaction authorization request.</t>
          </dd>
          <dt><tt>expires_in</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. Lifetime in seconds of the pending transaction authorization request maintained by the authorization server.</t>
          </dd>
          <dt><tt>interval</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. Minimum amount of time in seconds that the client <bcp14>SHOULD</bcp14> wait between polling requests. If omitted, the client <bcp14>SHOULD</bcp14> use 5 seconds.</t>
          </dd>
          <dt><tt>authorization_uri</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. URI that the client can present to the user or open in a user agent to continue the authorization interaction.
This URI is used when the authorization server requires an interactive approval or authentication step.</t>
          </dd>
        </dl>
        <t>The authorization server <bcp14>MUST</bcp14> bind the <tt>transaction_authorization_id</tt> to the client that initiated the transaction authorization request.</t>
        <t>A successful response containing <tt>transaction_authorization_id</tt> does not indicate that the challenged operation has been approved.
It only indicates that the authorization server has accepted the transaction authorization request for processing.</t>
        <t>For example:</t>
        <figure anchor="fig-transaction-authorization-response">
          <name>Transaction authorization pending response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "transaction_authorization_id": "txn-authz-abc123",
  "expires_in": 300,
  "interval": 5
}
]]></artwork>
        </figure>
        <t>The following example includes an <tt>authorization_uri</tt> for an authorization interaction:</t>
        <figure anchor="fig-transaction-authorization-interaction-response">
          <name>Transaction authorization interaction response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "transaction_authorization_id": "txn-authz-abc123",
  "authorization_uri": "https://as.example.com/txn-authorization/txn-authz-abc123",
  "expires_in": 300,
  "interval": 5
}
]]></artwork>
        </figure>
      </section>
      <section anchor="pending-and-polling">
        <name>Pending and Polling</name>
        <t>If the authorization server returns a <tt>transaction_authorization_id</tt>, the client continues the transaction authorization
request by polling the transaction authorization endpoint.</t>
        <t>The client polls by sending a POST request with the following parameters using the <tt>application/x-www-form-urlencoded</tt>
format with a character encoding of UTF-8 in the HTTP request entity-body:</t>
        <dl>
          <dt><tt>client_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> if the client is not authenticating with the authorization server as described in <xref section="3.2.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/>.
The client identifier issued to the client during the registration process.</t>
          </dd>
          <dt><tt>transaction_authorization_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The transaction authorization identifier returned by the authorization server.</t>
          </dd>
        </dl>
        <t>For example:</t>
        <figure anchor="fig-transaction-authorization-poll">
          <name>Polling a transaction authorization request</name>
          <artwork><![CDATA[
POST /txn-authorization HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

client_id=s6BhdRkqt3
&transaction_authorization_id=txn-authz-abc123
]]></artwork>
        </figure>
        <t>The client <bcp14>MUST</bcp14> wait at least the number of seconds specified by the <tt>interval</tt> parameter before polling again.
If no <tt>interval</tt> value was provided, the client <bcp14>MUST</bcp14> wait at least 5 seconds between polling requests.</t>
        <t>The authorization server <bcp14>MUST</bcp14> ensure that the client polling the transaction authorization endpoint is the
same client that initiated the transaction authorization request, or is otherwise authorized to obtain
the result.</t>
        <t>If the transaction authorization request is still pending, the authorization server returns an error response with the
<tt>authorization_pending</tt> error code, as defined in <xref section="3.5" sectionFormat="of" target="OAUTH-DEVICE"/>.</t>
        <t>For example:</t>
        <figure anchor="fig-transaction-authorization-pending">
          <name>Transaction authorization pending response</name>
          <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "authorization_pending"
}
]]></artwork>
        </figure>
        <t>The authorization server <bcp14>MAY</bcp14> return an error response with the <tt>slow_down</tt> error code, as defined in <xref section="3.5" sectionFormat="of" target="OAUTH-DEVICE"/>,
to instruct the client to increase the polling interval. After receiving <tt>slow_down</tt>, the client <bcp14>MUST</bcp14> increase the polling interval by at
least 5 seconds.</t>
        <t>On encountering a connection timeout, clients <bcp14>MUST</bcp14> unilaterally reduce their polling frequency before retrying. The use of an exponential
backoff algorithm to achieve this, such as doubling the polling interval on each such connection timeout, is <bcp14>RECOMMENDED</bcp14>.</t>
        <t>If the transaction authorization request is approved, the authorization server returns an access token response as described in
<xref target="successful-access-token-response"/>.</t>
        <t>If the approving party denies the request, the authorization server returns an error response with the <tt>access_denied</tt> error code.
If the transaction authorization request has expired, the authorization server returns an error response with the <tt>expired_token</tt>
error code, as defined in <xref section="3.5" sectionFormat="of" target="OAUTH-DEVICE"/>.</t>
      </section>
      <section anchor="successful-access-token-response">
        <name>Successful Access Token Response</name>
        <t>If the transaction authorization request is approved, the authorization server returns an access token response.</t>
        <t>The response uses the access token response format defined in <xref section="5.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/> and the
<tt>authorization_details</tt> response parameter defined in <xref section="7" sectionFormat="of" target="OAUTH-RAR"/>. The granted
<tt>authorization_details</tt> value <bcp14>MUST</bcp14> describe the operation approved for the challenged transaction and <bcp14>MUST</bcp14>
be derived from the <tt>authorization_details</tt> claim of the transaction authorization challenge. The
authorization server <bcp14>MAY</bcp14> normalize, narrow, or otherwise constrain the granted authorization details
relative to those requested by the challenge, but <bcp14>MUST NOT</bcp14> broaden them.</t>
        <t>The authorization_details parameter in the token response is returned by the authorization server as required
by Section 7 of <xref target="OAUTH-RAR"/> and conveys the authorization details as granted, which <bcp14>MAY</bcp14> differ from those
requested in the challenge. This response parameter is informational for the client. The protected resource
<bcp14>MUST</bcp14> determine authorization from the granted authorization details bound to the access token
(see <xref target="access-token"/>), and <bcp14>MUST NOT</bcp14> rely on the token response parameter.</t>
        <t>The access token <bcp14>MUST</bcp14> contain the <tt>txn</tt> value from the transaction authorization challenge, <bcp14>MUST</bcp14> be bound
to the granted authorization details, and <bcp14>MUST</bcp14> use the <tt>iss</tt> value from the transaction authorization
challenge as its audience unless an application profile defines a different audience binding. The
authorization server <bcp14>MAY</bcp14> issue this access token in any access token format negotiated with the protected
resource; when JWT access tokens defined in <xref target="JWT-AT"/> are used, the <tt>txn</tt> and
<tt>authorization_details</tt> claims are included as defined in <xref target="SET"/> and <xref section="9" sectionFormat="of" target="OAUTH-RAR"/>
respectively.</t>
        <t>The access token issued in response to a transaction authorization challenge is scoped to the challenged
operation and <bcp14>MUST NOT</bcp14> be accepted as authorization for any operation that is not described by its granted
authorization details.</t>
        <t>For example:</t>
        <figure anchor="fig-access-token-response">
          <name>Successful access token response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6ImF0K2p3dCJ9...",
  "token_type": "Bearer",
  "expires_in": 120,
  "authorization_details": [
    {
      "type": "payment",
      "actions": ["initiate"],
      "locations": ["https://payments.example.com/accounts/123"],
      "instructedAmount": {
        "currency": "GBP",
        "amount": "5000.00"
      },
      "creditorName": "Example Ltd"
    }
  ]
}
]]></artwork>
        </figure>
        <t>The access token <bcp14>MUST</bcp14> have a limited lifetime. The authorization server <bcp14>SHOULD</bcp14> issue the access token with a short lifetime because it represents
authorization for a specific operation. Sender-constrained access tokens, for example using DPoP
(<xref target="DPOP"/>) or mutual-TLS (<xref target="MTLS"/>), <bcp14>MAY</bcp14> be used and are <bcp14>RECOMMENDED</bcp14> for high-impact
operations.</t>
      </section>
    </section>
    <section anchor="access-token">
      <name>Access Token</name>
      <t>The access token issued in response to a transaction authorization challenge represents authorization for the challenged operation.
It is an OAuth 2.0 access token whose granted authorization details, expressed using the <tt>authorization_details</tt> parameter and claim
defined in <xref target="OAUTH-RAR"/>, describe the operation that was approved.</t>
      <t>The access token is issued by the authorization server identified by the <tt>aud</tt> claim of the transaction authorization challenge and is
presented to the protected resource that issued the challenge.</t>
      <t>The access token <bcp14>MUST</bcp14> contain sufficient information for the protected resource to determine that the token authorizes the challenged
operation. At a minimum, the access token <bcp14>MUST</bcp14> be bound to the <tt>txn</tt> value from the challenge and <bcp14>MUST</bcp14> carry granted authorization
details that describe the approved operation. The granted authorization details <bcp14>MAY</bcp14> be the value of the <tt>authorization_details</tt> claim
from the challenge, a value derived from it, or a reference to protected resource state agreed between the protected resource and the
authorization server.</t>
      <t>When requester context, such as the <tt>act</tt> claim, is present in the transaction authorization challenge, the authorization server <bcp14>MUST</bcp14>
include equivalent requester context in the access token or otherwise bind the access token to that context.</t>
      <t>This access token is scoped to the challenged operation. Clients and protected resources <bcp14>MUST NOT</bcp14> assume that the
access token issued in response to a transaction authorization challenge confers authorization beyond the operation described by its
granted authorization details.</t>
      <section anchor="token-presentation">
        <name>Token Presentation</name>
        <t>The client provides the access token to the agent. The agent presents the access token to the protected resource together with the
request for the challenged operation.</t>
        <t>In deployments where one agent delegates work to another agent, the access token <bcp14>MAY</bcp14> be relayed through one or more intermediate agents
before being presented to the protected resource. Each agent that relays the access token <bcp14>MUST</bcp14> relay it without modification. An agent
<bcp14>MUST NOT</bcp14> use the access token for a different transaction, different protected resource, or different requester context.</t>
        <t>When HTTP is used, the access token <bcp14>MUST</bcp14> be presented to the protected resource as defined by <xref target="OAUTH-FRAMEWORK"/>. Bearer access
tokens are presented using the <tt>Authorization</tt> request header field as specified in <xref target="BEARER"/>. Sender-constrained access
tokens are presented using the mechanism defined by the corresponding access token format, for example <xref target="DPOP"/> or
<xref target="MTLS"/>.</t>
        <t>For example:</t>
        <figure anchor="fig-access-token-presentation">
          <name>Presenting the access token to a protected resource</name>
          <artwork><![CDATA[
POST /payments HTTP/1.1
Host: resource.example.com
Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6ImF0K2p3dCJ9...
Content-Type: application/json

{
  "amount": "5000.00",
  "currency": "GBP",
  "recipient": "Example Ltd"
}
]]></artwork>
        </figure>
        <t>The agent <bcp14>MUST NOT</bcp14> modify the access token. If the agent cannot present the access token to the protected resource, the challenged
operation cannot be completed using this mechanism.</t>
      </section>
      <section anchor="protected-resource-validation">
        <name>Protected Resource Validation</name>
        <t>Before accepting the access token as authorization for a challenged operation, the protected resource <bcp14>MUST</bcp14> validate the access token
according to <xref target="OAUTH-FRAMEWORK"/>, the access token format in use, and the requirements of this document.</t>
        <t>At a minimum, the protected resource <bcp14>MUST</bcp14> verify that:</t>
        <ul spacing="normal">
          <li>
            <t>the access token was issued by the authorization server identified by the <tt>aud</tt> claim of the transaction authorization challenge;</t>
          </li>
          <li>
            <t>the access token audience identifies the protected resource, unless an application profile defines a different audience binding;</t>
          </li>
          <li>
            <t>the access token has not expired;</t>
          </li>
          <li>
            <t>the access token is bound to the same <tt>txn</tt> value as the transaction authorization challenge;</t>
          </li>
          <li>
            <t>the granted authorization details associated with the access token authorize the requested operation and are consistent with the
<tt>authorization_details</tt> claim of the transaction authorization challenge;</t>
          </li>
          <li>
            <t>any requester context required by the transaction authorization challenge is present and matches the challenged transaction;</t>
          </li>
          <li>
            <t>the access token has not previously been used, if the protected resource requires single-use access tokens for the challenged operation.</t>
          </li>
        </ul>
        <t>A protected resource <bcp14>MUST</bcp14> reject an access token that does not correspond to the transaction authorization challenge for the requested
operation.</t>
        <t>A protected resource <bcp14>SHOULD</bcp14> treat access tokens issued in response to a transaction authorization challenge as single-use when the
challenged operation is non-idempotent or high impact. If single-use semantics are required, the protected resource <bcp14>MUST</bcp14> maintain
sufficient state to detect replay of the access token or transaction identifier.</t>
        <t>The protected resource <bcp14>MUST NOT</bcp14> accept an access token issued in response to a transaction authorization challenge as general
authorization for operations other than the challenged operation. In particular, the protected resource <bcp14>MUST NOT</bcp14> honour the granted
authorization details of such an access token for any operation that is not the challenged operation described by those authorization
details.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Transaction authorization challenges and the access tokens issued in response to them are security-sensitive
artifacts. A transaction authorization challenge requests authorization for a specific operation, and the
access token issued in response represents evidence that the challenged operation was authorized. Implementations
need to ensure that these artifacts cannot be modified, replayed, substituted, or used for a different operation.</t>
      <t>A protected resource <bcp14>MUST</bcp14> sign each transaction authorization challenge using an asymmetric signing key. Clients and
authorization servers <bcp14>MUST</bcp14> validate the challenge signature before using any claim from the challenge for display,
policy evaluation, or authorization decisions. If a challenge cannot be validated, it <bcp14>MUST NOT</bcp14> be treated as
authentic.</t>
      <t>The authorization server <bcp14>MUST</bcp14> verify that the <tt>aud</tt> claim identifies the authorization server and that the protected
resource identified by the <tt>iss</tt> claim is trusted to request transaction authorization for the requested operation. An
authorization server <bcp14>MUST NOT</bcp14> issue an access token for a challenge issued by an unrecognized or unauthorized
protected resource.</t>
      <t>The transaction authorization challenge and the resulting access token <bcp14>MUST</bcp14> be bound to the same transaction
identifier. The protected resource <bcp14>MUST</bcp14> verify that the <tt>txn</tt> value bound to the access token matches the <tt>txn</tt>
value from the challenge. An access token issued in response to a transaction authorization challenge <bcp14>MUST NOT</bcp14> be
accepted as authorization for any operation other than the challenged operation.</t>
      <t>Access tokens issued in response to a transaction authorization challenge can be replayed if they are not
sufficiently constrained. Authorization servers <bcp14>MUST</bcp14> issue these access tokens with short lifetimes and <bcp14>SHOULD</bcp14>
issue them as sender-constrained access tokens, for example using DPoP (<xref target="DPOP"/>) or mutual-TLS (<xref target="MTLS"/>), for
high-impact operations. Protected resources <bcp14>SHOULD</bcp14> treat these access tokens as single-use for non-idempotent or
high-impact operations, and maintain sufficient state to detect replay where single-use semantics are required.</t>
      <t>Because the access token issued in response to a transaction authorization challenge carries granted
authorization details that describe a specific operation, protected resources <bcp14>MUST</bcp14> evaluate those authorization
details against the operation being requested. Accepting such an access token without evaluating its
authorization details would allow a token issued for one operation to authorize a different operation.</t>
      <t>The agent is not trusted to modify or summarize the challenge. Clients and authorization servers <bcp14>MUST NOT</bcp14> rely on an
unprotected description supplied by the agent as the basis for user display, policy evaluation, or authorization
decisions. Information presented to the user or approving party <bcp14>SHOULD</bcp14> be derived from the validated challenge, from
protected resource state identified by the challenge, or from information otherwise authenticated and bound to the
challenge.</t>
      <t>When requester context is relevant to the authorization decision, the protected resource <bcp14>SHOULD</bcp14> include that context
in the challenge, for example using the <tt>act</tt> claim. The authorization server <bcp14>MUST</bcp14> consider requester context when it
is present. This helps prevent an approval obtained for one agent, client, user, or delegation context from being used
to authorize a transaction initiated by another requester.</t>
      <t>The client can inspect the challenge before presenting it to the authorization server. This is important because the
challenge can contain sensitive information about the requested operation, user intent, protected resources, or
organizational policy. Clients <bcp14>SHOULD</bcp14> allow the user to decline before disclosing the challenge to the authorization
server when the challenge contains privacy-sensitive transaction details.</t>
      <t>Challenges and the access tokens issued in response to them can reveal sensitive information if logged or exposed
to unintended parties. In particular, the granted authorization details carried by the access token can describe
the operation in detail. Implementations <bcp14>SHOULD</bcp14> minimize the information included in challenges and in the
granted authorization details of the access token, avoid logging them unless necessary, and protect them in
transit and at rest.</t>
      <t>Application profiles that define additional challenge claims, request binding mechanisms, or alternative audience
bindings <bcp14>MUST</bcp14> describe how those extensions preserve challenge integrity, prevent replay and substitution, and avoid
confused-deputy attacks.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the <tt>Accept-Txn-Challenge</tt> HTTP field name, one
OAuth error code, two OAuth parameters, two OAuth Protected Resource
Metadata parameters, one OAuth Authorization Server Metadata Parameter and two JWT claims.</t>
      <section anchor="http-field-name-registration">
        <name>HTTP Field Name Registration</name>
        <t>IANA is requested to register the following field name in the "HTTP Field Name" registry <xref target="IANA.HTTP.FieldNames"/> as a structured Header Field:</t>
        <dl>
          <dt>Field Name:</dt>
          <dd>
            <t>Accept-Txn-Challenge</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Structured Type:</dt>
          <dd>
            <t>Item</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-extensions-error-registration">
        <name>OAuth Extensions Error Registration</name>
        <t>IANA is requested to register the following error value in the "OAuth Extensions Error" registry <xref target="IANA.OAuth.Parameters"/>:</t>
        <dl>
          <dt>Error name:</dt>
          <dd>
            <t>transaction_authorization_required</t>
          </dd>
          <dt>Usage location:</dt>
          <dd>
            <t>resource access error response</t>
          </dd>
          <dt>Protocol extension:</dt>
          <dd>
            <t>OAuth Transaction Authorization Challenge</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-parameter-registration">
        <name>OAuth Parameter Registration</name>
        <t>IANA is requested to register the following parameters in the "OAuth Parameters" registry <xref target="IANA.OAuth.Parameters"/>:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>transaction_challenge</t>
          </dd>
          <dt>Parameter Usage Location:</dt>
          <dd>
            <t>rs-client response, transaction authorization request</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>transaction_authorization_id</t>
          </dd>
          <dt>Parameter Usage Location:</dt>
          <dd>
            <t>transaction authorization request, transaction authorization response</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-protected-resource-metadata-registration">
        <name>OAuth Protected Resource Metadata Registration</name>
        <t>IANA is requested to register the following values in the "OAuth Protected Resource Metadata" registry <xref target="IANA.OAuth.Parameters"/>.</t>
        <dl>
          <dt>Metadata name:</dt>
          <dd>
            <t>txn_challenge_jwks_uri</t>
          </dd>
          <dt>Metadata description:</dt>
          <dd>
            <t>URL of the protected resource's JSON Web Key Set containing public keys used to validate transaction authorization challenges.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Metadata name:</dt>
          <dd>
            <t>txn_challenge_signing_alg_values_supported</t>
          </dd>
          <dt>Metadata description:</dt>
          <dd>
            <t>JSON array containing the JWS <tt>alg</tt> values supported by the protected resource for transaction authorization challenges.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>IANA is requested to register the following value in the "OAuth Authorization Server Metadata" registry <xref target="IANA.OAuth.Parameters"/>.</t>
        <dl>
          <dt>Metadata name:</dt>
          <dd>
            <t>transaction_authorization_endpoint</t>
          </dd>
          <dt>Metadata description:</dt>
          <dd>
            <t>URL of the authorization server endpoint to which clients submit transaction authorization challenges.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="json-web-token-claims-registration">
        <name> JSON Web Token Claims Registration</name>
        <t>IANA is requested to register the following claims in the "JSON Web Token Claims" registry <xref target="IANA.JSON.Web.Token"/>.</t>
        <dl>
          <dt>Claim Name:</dt>
          <dd>
            <t>reason</t>
          </dd>
          <dt>Claim Description:</dt>
          <dd>
            <t>Human-readable explanation of why authorization, confirmation, or other processing is required.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Claim Name:</dt>
          <dd>
            <t>reason_uri</t>
          </dd>
          <dt>Claim Description:</dt>
          <dd>
            <t>URI identifying additional information about why authorization, confirmation, or other processing is required.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OAUTH-FRAMEWORK">
          <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="OAUTH-RAR">
          <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>
        <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="JWT">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="JWS">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="SET">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="OAUTH-TOKEN-EXCHANGE">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="OAUTH-PROT-METADATA">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="OAUTH-DEVICE">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </reference>
        <reference anchor="BCP-195">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="R. Holz" initials="R." surname="Holz"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation. This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7525"/>
          <seriesInfo name="DOI" value="10.17487/RFC7525"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.FieldNames" target="https://www.iana.org/assignments/http-fields/">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters/">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.JSON.Web.Token" target="https://www.iana.org/assignments/jwt/">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OAUTH-STEP-UP">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="13" month="September" year="2025"/>
            <abstract>
              <t>   This document specifies version 1.3 of the Transport Layer Security
   (TLS) protocol.  TLS allows client/server applications to communicate
   over the Internet in a way that is designed to prevent eavesdropping,
   tampering, and message forgery.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-14"/>
        </reference>
        <reference anchor="JWT-AT">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="DPOP">
          <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="MTLS">
          <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="BEARER">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
      </references>
    </references>
    <?line 1114?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
yUj8Hy9wDUQc1QAA

-->

</rfc>
