<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-li-oauth-delegated-authorization-03" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="Delegated-Auth">OAuth 2.0 Delegated Authorization</title>

    <author initials="R." surname="Li" fullname="Ruochen Li">
      <organization>Huawei Int. Pte Ltd</organization>
      <address>
        <email>li.ruochen@h-partners.com</email>
      </address>
    </author>
    <author initials="H." surname="Wang" fullname="Haiguang Wang">
      <organization>Huawei Int. Pte Ltd</organization>
      <address>
        <email>wang.haiguang.shieldlab@huawei.com</email>
      </address>
    </author>
    <author initials="C." surname="Liu" fullname="Chunchi Peter Liu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>liuchunchi@huawei.com</email>
      </address>
    </author>
    <author initials="T." surname="Li" fullname="Tieyan Li">
      <organization>Huawei Int. Pte Ltd</organization>
      <address>
        <email>Li.Tieyan@huawei.com</email>
      </address>
    </author>

    <date year="2026" month="July" day="24"/>

    
    <workgroup>oauth</workgroup>
    

    <abstract>


<?line 60?>

<t>This specification defines Delegated Authorization Tokens, key-bound tokens that enable an OAuth client to delegate a constrained subset of its authorization to another client without contacting the authorization server for each delegation. An authorization server issues the root token and binds it to a client key. That client can use the bound key either to prove possession when accessing a protected resource or to sign a further token bound to a delegate client's key. Resource servers validate the ordered token chain, the restrictions imposed at every delegation step, and a DPoP proof signed by the key bound to the leaf token.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://liuchunchi.github.io/li-oauth-delegated-authorization/draft-li-oauth-delegated-authorization.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-li-oauth-delegated-authorization/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://datatracker.ietf.org/wg/oauth/about/"/>.
        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/liuchunchi/li-oauth-delegated-authorization"/>.</t>
    </note>


  </front>

  <middle>


<?line 64?>

<section anchor="introduction"><name>Introduction</name>

<t>OAuth enables a client to obtain authorization to access protected resources. In systems composed of agents, services, and other independently operated components, that client may need to authorize another client to perform only part of the authorized work. Giving the second client the original access token or the original client's private key grants excessive authority and prevents the client from independently constraining each delegation step.</t>

<t>This specification defines a key-bound token called a Delegated Authorization Token. An authorization server initially issues such a token to an OAuth client and binds the token to a public key held by that client. The client can then locally issue another Delegated Authorization Token to a delegate client. Each client-issued token is signed with the private key bound to the preceding token, is bound to the delegate client's public key, and can only reduce the authorization conveyed by the preceding chain.</t>

<t>A client controlling the private key bound to a Delegated Authorization Token can use the token in either of two ways. It can sign a further token when delegation remains permitted, or it can access a protected resource by presenting the complete token chain together with a DPoP proof <xref target="RFC9449"/>. These uses rely on the same client-held key pair.</t>

<section anchor="motivation-and-goals"><name>Motivation and Goals</name>

<t>The mechanism is intended to:</t>

<t><list style="symbols">
  <t>let a client delegate authorization without disclosing its private key or a reusable bearer credential;</t>
  <t>make every delegation cryptographically attributable to the client controlling the key bound to the preceding token;</t>
  <t>ensure that permissions, audiences, validity periods, and delegation depth can only be narrowed;</t>
  <t>let a resource server validate a delegation chain without contacting the authorization server for every delegation; and</t>
  <t>bind protected resource access to the client controlling the key bound to the leaf token.</t>
</list></t>

</section>
<section anchor="use-cases"><name>Use Cases</name>

<t>The following non-normative use cases illustrate where local, constrained delegation is useful.</t>

<section anchor="specialized-ai-agents"><name>Specialized AI Agents</name>

<t>An enterprise or individual can use an orchestrator agent that coordinates specialized agents for research, software development, testing, or access to internal knowledge. The authorization server issues a root token to the orchestrator. For each task, the orchestrator issues a child token to the selected agent and limits the token to the resource servers, permissions, and delegation depth needed for that agent's role. A terminal agent can receive a token with <spanx style="verb">max_delegation_depth</spanx> set to <spanx style="verb">0</spanx>.</t>

<t>An agent does not thereby inherit all authorization conveyed to the orchestrator, much less all authority associated with the resource owner. For example, a research agent can receive read access to an internal knowledge service without receiving deployment privileges, while a deployment agent can receive access to one environment without receiving access to unrelated data services.</t>

<t>The token lifetime can be chosen for the agent's task and operational model, but remains finite and subject to the authorization server's configured maximum. Subject to authorization server policy, a long-running agent can use a token with a longer finite lifetime or periodically obtain a new root token through a supported OAuth grant type. Longer-lived tokens increase the consequences of key compromise and delayed revocation, so deployments using them need correspondingly strong private-key protection and a revocation-status distribution mechanism that meets their response-time requirements.</t>

</section>
<section anchor="third-party-analytics-for-enterprise-saas"><name>Third-Party Analytics for Enterprise SaaS</name>

<t>A corporate tenant can authorize a SaaS CRM client to delegate limited CRM-data access to a third-party analytics client. The authorization server issues a root token to the CRM client. The CRM client then issues a child token bound to the analytics client's key, with an audience restricted to the CRM API, read-only permissions, authorization details limiting the accessible data, and <spanx style="verb">max_delegation_depth</spanx> set to <spanx style="verb">0</spanx>.</t>

<t>The analytics client presents the complete chain and a DPoP proof to the CRM resource server. It does not receive the CRM client's private key or the CRM client's full authorization, and the authorization server need not participate in each analytics task.</t>

</section>
</section>
<section anchor="scope"><name>Scope</name>

<t>This document specifies the token format, authorization server issuance, client-to-client delegation, ordered token-chain presentation and validation, and proof-of-possession access to protected resources.</t>

<t>The mechanism does not define how one client discovers another client's public key, how clients negotiate delegation out of band, how multiple Delegated Authorization Token Chains are delivered in one request, how delivered chains are bound to a request or task, the type-specific rules for comparing application-specific authorization details, or how revocation status is distributed to resource servers. These functions are outside the scope of this specification and can be defined by deployment policy or by extending this specification.</t>

</section>
<section anchor="relationship-to-oauth-20"><name>Relationship to OAuth 2.0</name>

<t>This specification extends the OAuth 2.0 authorization framework <xref target="RFC6749"/>. It uses the roles, grants, endpoints, and authorization server metadata model established by OAuth 2.0. Deployments apply the requirements of the underlying OAuth 2.0 grant type together with the requirements in this document and the security guidance in <xref target="RFC9700"/>.</t>

<t>A Delegated Authorization Token is not a bearer token. Its use requires proof of possession of the key bound to the leaf token. This specification uses DPoP for that proof and defines the <spanx style="verb">DA</spanx> HTTP authentication scheme rather than the <spanx style="verb">Bearer</spanx> or <spanx style="verb">DPoP</spanx> schemes. An implementation <bcp14>MUST NOT</bcp14> treat a Delegated Authorization Token as a bearer access token.</t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>This specification uses the terms "authorization server", "client", "resource server", "resource owner", "authorization grant", and "protected resource" as defined by OAuth 2.0 <xref target="RFC6749"/>. It uses "DPoP proof" as defined by <xref target="RFC9449"/>.</t>

<dl>
  <dt><strong>Delegation</strong>:</dt>
  <dd>
    <t>The act by which a delegating client issues a Client-Issued Delegated Authorization Token to a delegate client.</t>
  </dd>
  <dt><strong>Delegating Client</strong>:</dt>
  <dd>
    <t>A client that holds a Delegated Authorization Token and uses the corresponding private key to issue a Client-Issued Delegated Authorization Token to another client.</t>
  </dd>
  <dt><strong>Delegate Client</strong>:</dt>
  <dd>
    <t>A client to which a delegating client delegates authorization by issuing a Client-Issued Delegated Authorization Token. It holds the private key corresponding to the <spanx style="verb">cnf.jkt</spanx> value in that token. A delegate client can subsequently act as a delegating client.</t>
  </dd>
  <dt><strong>Delegated Authorization Token</strong>:</dt>
  <dd>
    <t>A signed JWT that conveys authorization, binds that authorization to a client key using <spanx style="verb">cnf.jkt</spanx>, and can be used as one element of a Delegated Authorization Token Chain. The token can authorize protected resource access and, subject to <spanx style="verb">max_delegation_depth</spanx>, further delegation.</t>
  </dd>
  <dt><strong>Authorization-Server-Issued Delegated Authorization Token</strong>:</dt>
  <dd>
    <t>A Delegated Authorization Token issued and signed by an authorization server. It is the root of a Delegated Authorization Token Chain.</t>
  </dd>
  <dt><strong>Client-Issued Delegated Authorization Token</strong>:</dt>
  <dd>
    <t>A Delegated Authorization Token issued by a delegating client, signed with the private key bound to the preceding token, and bound to the delegate client's key.</t>
  </dd>
  <dt><strong>Delegated Authorization Token Chain</strong>:</dt>
  <dd>
    <t>An ordered sequence containing one Authorization-Server-Issued Delegated Authorization Token followed by zero or more Client-Issued Delegated Authorization Tokens. The sequence is ordered from the root token to the leaf token.</t>
  </dd>
  <dt><strong>Root Token</strong>:</dt>
  <dd>
    <t>The first token in a Delegated Authorization Token Chain. It is issued by the authorization server.</t>
  </dd>
  <dt><strong>Leaf Token</strong>:</dt>
  <dd>
    <t>The last token in a Delegated Authorization Token Chain. Its <spanx style="verb">cnf.jkt</spanx> identifies the key whose corresponding private key is used to create a DPoP proof or to issue a further token.</t>
  </dd>
</dl>

</section>
<section anchor="delegated-authorization-model"><name>Delegated Authorization Model</name>

<section anchor="overview"><name>Overview</name>

<figure title="Delegated Authorization Model" align="center" anchor="fig-architecture"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="384" width="560" viewBox="0 0 560 384" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,32 L 8,80" fill="none" stroke="black"/>
<path d="M 136,32 L 136,80" fill="none" stroke="black"/>
<path d="M 352,32 L 352,80" fill="none" stroke="black"/>
<path d="M 352,176 L 352,224" fill="none" stroke="black"/>
<path d="M 368,320 L 368,368" fill="none" stroke="black"/>
<path d="M 432,80 L 432,96" fill="none" stroke="black"/>
<path d="M 432,144 L 432,168" fill="none" stroke="black"/>
<path d="M 432,224 L 432,240" fill="none" stroke="black"/>
<path d="M 432,288 L 432,312" fill="none" stroke="black"/>
<path d="M 496,320 L 496,368" fill="none" stroke="black"/>
<path d="M 512,32 L 512,80" fill="none" stroke="black"/>
<path d="M 512,176 L 512,224" fill="none" stroke="black"/>
<path d="M 8,32 L 136,32" fill="none" stroke="black"/>
<path d="M 352,32 L 512,32" fill="none" stroke="black"/>
<path d="M 144,48 L 344,48" fill="none" stroke="black"/>
<path d="M 8,80 L 136,80" fill="none" stroke="black"/>
<path d="M 352,80 L 512,80" fill="none" stroke="black"/>
<path d="M 352,176 L 512,176" fill="none" stroke="black"/>
<path d="M 352,224 L 512,224" fill="none" stroke="black"/>
<path d="M 368,320 L 496,320" fill="none" stroke="black"/>
<path d="M 368,368 L 496,368" fill="none" stroke="black"/>
<polygon class="arrowhead" points="440,312 428,306.4 428,317.6" fill="black" transform="rotate(90,432,312)"/>
<polygon class="arrowhead" points="440,168 428,162.4 428,173.6" fill="black" transform="rotate(90,432,168)"/>
<polygon class="arrowhead" points="352,48 340,42.4 340,53.6" fill="black" transform="rotate(0,344,48)"/>
<polygon class="arrowhead" points="152,48 140,42.4 140,53.6" fill="black" transform="rotate(180,144,48)"/>
<g class="text">
<text x="184" y="36">OAuth</text>
<text x="232" y="36">grant</text>
<text x="272" y="36">and</text>
<text x="308" y="36">DPoP</text>
<text x="72" y="52">Authorization</text>
<text x="420" y="52">Client</text>
<text x="456" y="52">A</text>
<text x="68" y="68">Server</text>
<text x="216" y="68">AS-Issued</text>
<text x="280" y="68">Token</text>
<text x="404" y="68">Delegating</text>
<text x="476" y="68">Client</text>
<text x="188" y="84">(cnf</text>
<text x="216" y="84">=</text>
<text x="240" y="84">key</text>
<text x="268" y="84">A)</text>
<text x="384" y="116">signs</text>
<text x="432" y="116">child</text>
<text x="480" y="116">token</text>
<text x="380" y="132">(cnf</text>
<text x="408" y="132">=</text>
<text x="432" y="132">key</text>
<text x="460" y="132">B)</text>
<text x="420" y="196">Client</text>
<text x="456" y="196">B</text>
<text x="404" y="212">Delegate</text>
<text x="468" y="212">Client</text>
<text x="380" y="260">Authorization:</text>
<text x="452" y="260">DA</text>
<text x="488" y="260">token</text>
<text x="536" y="260">chain</text>
<text x="344" y="276">DPoP:</text>
<text x="392" y="276">proof</text>
<text x="436" y="276">with</text>
<text x="472" y="276">key</text>
<text x="496" y="276">B</text>
<text x="428" y="340">Resource</text>
<text x="428" y="356">Server</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+---------------+   OAuth grant and DPoP   +-------------------+
| Authorization |<------------------------>|     Client A      |
|    Server     |     AS-Issued Token      | Delegating Client |
+---------------+    (cnf = key A)         +---------+---------+
                                                     |
                                             signs child token
                                             (cnf = key B)
                                                     |
                                                     v
                                           +-------------------+
                                           |     Client B      |
                                           |  Delegate Client  |
                                           +---------+---------+
                                                     |
                                        Authorization: DA token chain
                                        DPoP: proof with key B
                                                     |
                                                     v
                                             +-------+-------+
                                             |   Resource    |
                                             |    Server     |
                                             +---------------+
]]></artwork></artset></figure>

<t>Every client that receives a Delegated Authorization Token has an asymmetric key pair. The private key remains under that client's control. The token's <spanx style="verb">cnf.jkt</spanx> member identifies the corresponding public key by its JWK thumbprint <xref target="RFC7638"/>.</t>

<t>The authorization server creates the root token and signs it with one of its signing keys. When the client holding the root token delegates authorization, it creates a new token, places its own public key in the new token's protected <spanx style="verb">jwk</spanx> header parameter, binds the new token to the delegate client's key using <spanx style="verb">cnf.jkt</spanx>, and signs the new token with its own private key. This procedure can be repeated to form a chain.</t>

<t>For every adjacent pair in a valid chain, the JWK thumbprint of the child token's protected <spanx style="verb">jwk</spanx> header parameter equals the parent token's <spanx style="verb">cnf.jkt</spanx> value. The child signature therefore demonstrates that the client controlling the key bound to the parent token authorized the next delegation.</t>

<t>A client accesses a protected resource by presenting the complete ordered chain and a DPoP proof. The DPoP proof is signed with the private key identified by the leaf token's <spanx style="verb">cnf.jkt</spanx>. The resource server validates the root token's signature using an authorization server key, every client-issued token signature, key continuity between adjacent tokens, all downscoping restrictions, and the DPoP proof.</t>

</section>
<section anchor="trust-model"><name>Trust Model</name>

<t>A resource server trusts one or more authorization servers to establish root authorization. It obtains the authorization server's signing keys through configured or discovered means. The resource server does not need a pre-established trust relationship with every delegating client. A client's authority to sign the next token derives from the preceding token's <spanx style="verb">cnf.jkt</spanx>.</t>

<t>A delegating client is trusted only to exercise and further constrain the authorization conveyed by its token chain. It cannot validly increase that authorization. A verifier <bcp14>MUST</bcp14> reject a chain when it cannot establish that every child token is no broader than its parent.</t>

<t>Possession of a serialized token chain is insufficient to use it. A client presenting a serialized token chain <bcp14>MUST</bcp14> prove possession of the private key bound to the leaf token. A delegate client <bcp14>SHOULD</bcp14> validate a received chain before accepting it, particularly when it relies on the chain to perform security-sensitive work.</t>

</section>
<section anchor="client-key-pairs"><name>Client Key Pairs</name>

<t>A client receiving a Delegated Authorization Token <bcp14>MUST</bcp14> control an asymmetric key pair suitable for digital signatures. The client <bcp14>MUST</bcp14> protect the private key and <bcp14>MUST NOT</bcp14> provide it to a delegating client, resource server, or authorization server.</t>

<t>The JWK thumbprint used in <spanx style="verb">cnf.jkt</spanx> <bcp14>MUST</bcp14> be computed according to <xref target="RFC7638"/>. The same bound key is used to sign a child Delegated Authorization Token when the client delegates and to sign a DPoP proof when the client accesses a protected resource. A deployment <bcp14>MAY</bcp14> rotate client keys by obtaining or receiving a new token bound to a new key, but changing a key does not alter an existing token's binding.</t>

<t>Clients <bcp14>SHOULD</bcp14> use a distinct key pair for each Delegated Authorization Token. This one-token-one-key model limits correlation, simplifies key lifecycle and revocation, and prevents a child token signed under one parent from being reusable with another parent token bound to the same key. When operational constraints make a distinct key per token impractical, a client <bcp14>MAY</bcp14> reuse a key for a small set of tokens used in the same security context or usage scenario. A client <bcp14>SHOULD NOT</bcp14> reuse a bound key across unrelated audiences, tenants, applications, or authorization contexts.</t>

<t>The means by which a delegating client obtains a delegate client's public key and establishes that it is associated with the intended delegate client is outside the scope of this specification. It can be provided by a local agent runtime, configuration, an authenticated application protocol, or another out-of-band mechanism.</t>

</section>
<section anchor="initial-token-issuance-by-an-authorization-server"><name>Initial Token Issuance by an Authorization Server</name>

<t>A client obtains an Authorization-Server-Issued Delegated Authorization Token using a supported OAuth grant type. The client indicates that it requests delegated authorization and supplies a DPoP proof at the token endpoint. The authorization server validates the authorization grant according to the requirements of the grant type, authenticates the client when required, and verifies the proof. It then places the thumbprint of the public JWK carried in the DPoP proof in <spanx style="verb">cnf.jkt</spanx> and signs the root token.</t>

<t>The authorization server determines the initial permissions, audience, validity period, and maximum delegation depth according to the authorization established by the grant, resource owner authorization, client policy, and server policy.</t>

</section>
<section anchor="client-to-client-delegation"><name>Client-to-Client Delegation</name>

<t>A delegating client can issue a token only when the effective delegation depth of its current leaf token permits another level. The delegating client binds the new token to the delegate client's public key and signs it with the private key bound to its own leaf token.</t>

<t>The new token can narrow permissions, audience, validity period, and remaining delegation depth. Omission of <spanx style="verb">scope</spanx> or <spanx style="verb">authorization_details</spanx> in a child discards that permission component; other omitted restrictions are inherited as specified for each claim. The effective authorization at any point is the cumulative result of all tokens from the root through that point.</t>

<t>Client-to-client delegation does not require a request to the authorization server. The clients can use a protocol defined elsewhere or an out-of-band mechanism to exchange the delegate client's public key and deliver the resulting token chain.</t>

</section>
<section anchor="accessing-a-protected-resource"><name>Accessing a Protected Resource</name>

<t>A client presents a Delegated Authorization Token Chain using the <spanx style="verb">DA</spanx> HTTP authentication scheme and sends a DPoP proof in the <spanx style="verb">DPoP</spanx> header field. The chain is serialized from root to leaf. The DPoP <spanx style="verb">ath</spanx> claim binds the proof to that exact serialized chain, and the JWK thumbprint of the proof's public JWK computed according to <xref target="RFC7638"/> <bcp14>MUST</bcp14> equal the leaf token's <spanx style="verb">cnf.jkt</spanx> value.</t>

<t>The resource server validates the chain and the proof before enforcing its application-specific authorization policy. A token with an effective <spanx style="verb">max_delegation_depth</spanx> of zero can still authorize access to a protected resource; the value only prevents further delegation.</t>

</section>
</section>
<section anchor="delegated-authorization-token-format"><name>Delegated Authorization Token Format</name>

<section anchor="general-jwt-requirements"><name>General JWT Requirements</name>

<t>A Delegated Authorization Token is a signed JWT <xref target="RFC7519"/> represented using JWS Compact Serialization <xref target="RFC7515"/>. It <bcp14>MUST</bcp14> be integrity protected and <bcp14>MUST NOT</bcp14> use the <spanx style="verb">none</spanx> algorithm. This specification does not define encrypted Delegated Authorization Tokens.</t>

<t>The octets of each compact JWT are significant when computing the token-chain serialization and the DPoP <spanx style="verb">ath</spanx> value. A verifier <bcp14>MUST NOT</bcp14> reserialize a JWT before performing that calculation.</t>

<t>A verifier <bcp14>MUST</bcp14> reject a Delegated Authorization Token if its protected JOSE header or JWT Claims Set contains duplicate member names. The last-member-wins processing option permitted by JWS and JWT <bcp14>MUST NOT</bcp14> be used. A verifier <bcp14>MUST</bcp14> also reject duplicate member names in any nested JSON object whose contents it processes for validation or authorization, including <spanx style="verb">cnf</spanx>, public JWKs, authorization detail objects, and extension claim values. Duplicate names <bcp14>MUST</bcp14> be detected before parser behavior that discards, overwrites, or combines them can affect processing.</t>

</section>
<section anchor="jose-header"><name>JOSE Header</name>

<section anchor="the-typ-header-parameter"><name>The <spanx style="verb">typ</spanx> Header Parameter</name>

<t>Every Delegated Authorization Token <bcp14>MUST</bcp14> include, in its protected header, a <spanx style="verb">typ</spanx> parameter with the value <spanx style="verb">da+jwt</spanx>. A verifier <bcp14>MUST</bcp14> compare this value using a case-sensitive comparison. The explicit type prevents a token from being confused with another kind of JWT.</t>

</section>
<section anchor="the-jwk-header-parameter"><name>The <spanx style="verb">jwk</spanx> Header Parameter</name>

<t>A Client-Issued Delegated Authorization Token <bcp14>MUST</bcp14> include a <spanx style="verb">jwk</spanx> parameter in its protected header. The value <bcp14>MUST</bcp14> be a public JWK <xref target="RFC7517"/>, <bcp14>MUST NOT</bcp14> contain private key material, and <bcp14>MUST</bcp14> represent the key used to verify that token's signature.</t>

<t>The JWK thumbprint of this value <bcp14>MUST</bcp14> equal the <spanx style="verb">cnf.jkt</spanx> value of the immediately preceding token in the presented chain. An Authorization-Server-Issued Delegated Authorization Token <bcp14>MUST NOT</bcp14> contain the <spanx style="verb">jwk</spanx> header parameter. Its signature verification key <bcp14>MUST</bcp14> be obtained from trusted authorization server configuration or authenticated authorization server metadata.</t>

</section>
<section anchor="algorithm-requirements"><name>Algorithm Requirements</name>

<t>Token issuers and verifiers <bcp14>MUST</bcp14> use asymmetric digital signature algorithms appropriate for the supplied key. They <bcp14>MUST</bcp14> reject <spanx style="verb">none</spanx>, symmetric MAC algorithms, algorithms disallowed by local policy, and a token whose <spanx style="verb">alg</spanx> is inconsistent with the verification key. A verifier <bcp14>MUST</bcp14> select acceptable algorithms by policy and <bcp14>MUST NOT</bcp14> derive acceptance solely from the token's <spanx style="verb">alg</spanx> value.</t>

<t>Implementations <bcp14>MUST</bcp14> apply mutually exclusive validation rules for Delegated Authorization Tokens and other JWT types, as required by <xref target="RFC8725"/>. A JWT accepted as another token type <bcp14>MUST NOT</bcp14> be accepted as a Delegated Authorization Token solely because it otherwise satisfies generic JWT validation.</t>

<t>A resource server <bcp14>MUST</bcp14> maintain an allowlist for Client-Issued Delegated Authorization Token signature algorithms and an allowlist for DPoP proof algorithms. The two allowlists <bcp14>MAY</bcp14> be the same or different. Before issuing a child token, a client <bcp14>MUST</bcp14> select an algorithm accepted by every resource server expected to validate the chain, using authenticated protected resource metadata, configuration, or another authenticated mechanism. An authorization server's root-token signing metadata <bcp14>MUST NOT</bcp14> be interpreted as advertising algorithms accepted for client-issued tokens or protected resource DPoP proofs.</t>

<t>For an ECDSA signature, the token issuer <bcp14>MUST</bcp14> produce a canonical low-S signature: the integer <spanx style="verb">s</spanx> <bcp14>MUST</bcp14> be no greater than half the order of the curve's base point. A verifier <bcp14>MUST</bcp14> reject an ECDSA signature whose <spanx style="verb">s</spanx> value is greater than half that order. This requirement prevents an existing signature from being transformed into a bytewise-distinct valid signature and ensures that a token identified by a digest of its exact compact serialization cannot evade revocation through ECDSA signature malleability.</t>

</section>
</section>
<section anchor="delegated-authorization-token-claims"><name>Delegated Authorization Token Claims</name>

<section anchor="the-cnf-claim-and-jkt-member"><name>The <spanx style="verb">cnf</spanx> Claim and <spanx style="verb">jkt</spanx> Member</name>

<t>Every Delegated Authorization Token <bcp14>MUST</bcp14> contain a <spanx style="verb">cnf</spanx> claim as defined by <xref target="RFC7800"/>. The <spanx style="verb">cnf</spanx> claim <bcp14>MUST</bcp14> contain the <spanx style="verb">jkt</spanx> member defined by <xref target="RFC9449"/>. Its value is the base64url-encoded SHA-256 thumbprint of the bound public JWK, computed according to <xref target="RFC7638"/>.</t>

<t>The <spanx style="verb">cnf</spanx> claim <bcp14>MUST</bcp14> contain exactly one member, <spanx style="verb">jkt</spanx>. A verifier <bcp14>MUST</bcp14> reject a token whose <spanx style="verb">cnf</spanx> claim contains any other member. This specification does not define the use of multiple confirmation methods or any confirmation method other than <spanx style="verb">jkt</spanx>.</t>

<t>The client controlling the corresponding private key uses it to create a DPoP proof for protected resource access and, when the delegation depth permits, to sign a child token.</t>

</section>
<section anchor="the-maxdelegationdepth-claim"><name>The <spanx style="verb">max_delegation_depth</spanx> Claim</name>

<t>The <spanx style="verb">max_delegation_depth</spanx> claim is an integer in the range 0 to 65535, inclusive, specifying how many further client-issued levels the token permits beneath itself. An Authorization-Server-Issued Delegated Authorization Token <bcp14>MUST</bcp14> contain this claim.</t>

<t>For a child token whose parent's effective depth is a positive integer <spanx style="verb">m</spanx>, omission gives the child an effective depth of <spanx style="verb">m - 1</spanx>; an explicit value <spanx style="verb">n</spanx> <bcp14>MUST</bcp14> satisfy <spanx style="verb">0 &lt;= n &lt;= m - 1</spanx>. A token with an effective depth of zero <bcp14>MUST NOT</bcp14> have a child token.</t>

<t>The effective depth is evaluated for each adjacent pair of tokens. A value of zero prohibits further delegation but does not prohibit protected resource access.</t>

</section>
<section anchor="the-scope-claim"><name>The <spanx style="verb">scope</spanx> Claim</name>

<t>The <spanx style="verb">scope</spanx> claim carries a space-delimited set of scope values using the syntax and semantics of the OAuth <spanx style="verb">scope</spanx> token response parameter <xref target="RFC6749"/>. A child token that contains <spanx style="verb">scope</spanx> <bcp14>MUST</bcp14> contain a subset of its parent's effective scope. If a child omits <spanx style="verb">scope</spanx>, it discards the scope permission component, and neither that child nor any descendant conveys scope authorization. If the parent has no effective scope, the child token <bcp14>MUST NOT</bcp14> contain <spanx style="verb">scope</spanx>.</t>

<t>If the root token omits <spanx style="verb">scope</spanx>, no scope authorization is conveyed by the chain.</t>

</section>
<section anchor="the-authorizationdetails-claim"><name>The <spanx style="verb">authorization_details</spanx> Claim</name>

<t>The <spanx style="verb">authorization_details</spanx> claim is a JSON array of authorization detail objects as defined by <xref target="RFC9396"/>. A child token that contains <spanx style="verb">authorization_details</spanx> <bcp14>MUST</bcp14> be no broader than its parent's effective authorization details. If a child omits <spanx style="verb">authorization_details</spanx>, it discards the authorization-details permission component, and neither that child nor any descendant conveys authorization through <spanx style="verb">authorization_details</spanx>. If the parent has no effective authorization details, the child token <bcp14>MUST NOT</bcp14> contain <spanx style="verb">authorization_details</spanx>. If the root token omits <spanx style="verb">authorization_details</spanx>, no authorization details are conveyed by the chain.</t>

<t>A specification that defines an authorization detail <spanx style="verb">type</spanx> for use with delegation <bcp14>MUST</bcp14> define how one value is determined to be a subset of another. Support for <xref target="RFC9396"/> alone is not sufficient to support delegation of an authorization detail type. A type can be retained in a Client-Issued Delegated Authorization Token only when its defining specification or a companion specification defines deterministic containment rules for delegation. An implementation that supports an authorization detail type for ordinary OAuth authorization does not thereby support that type in a Delegated Authorization Token Chain.</t>

<t>A root token can contain an authorization detail type without delegation containment rules and can be used as a single-token chain. A client-issued token can discard that permission component by omitting <spanx style="verb">authorization_details</spanx>. If a client-issued token retains <spanx style="verb">authorization_details</spanx>, the verifier <bcp14>MUST</bcp14> implement the applicable containment rules and <bcp14>MUST</bcp14> reject the chain if it cannot establish that every child authorization detail is covered by an effective parent authorization detail.</t>

<t><spanx style="verb">scope</spanx> and <spanx style="verb">authorization_details</spanx> are separate permission components. When both are present, the resource server combines them according to deterministic semantics defined by the applicable authorization detail type, deployment profile, or resource server policy. Those semantics <bcp14>MUST</bcp14> be monotonic: removing either component, removing a scope value, or narrowing an authorization detail <bcp14>MUST NOT</bcp14> increase the set of authorized operations.</t>

<t>Omission of a permission component from a child discards that component. It <bcp14>MUST NOT</bcp14> be interpreted as removing a restriction on the remaining component. A verifier <bcp14>MUST</bcp14> reject a chain when the applicable composition semantics could cause omission or downscoping of a permission component to increase authorization.</t>

</section>
<section anchor="the-aud-claim"><name>The <spanx style="verb">aud</spanx> Claim</name>

<t>The <spanx style="verb">aud</spanx> claim has the syntax defined by <xref target="RFC7519"/> and identifies the intended resource servers. Whenever present, the <spanx style="verb">aud</spanx> claim <bcp14>MUST</bcp14> identify at least one audience. The root token <bcp14>MUST</bcp14> contain an <spanx style="verb">aud</spanx> claim. Each audience in a child token <bcp14>MUST</bcp14> be included in the parent's effective audience. A child that omits <spanx style="verb">aud</spanx> imposes no additional audience restriction; the effective audience remains the parent's effective audience.</t>

</section>
<section anchor="the-exp-claim"><name>The <spanx style="verb">exp</spanx> Claim</name>

<t>The <spanx style="verb">exp</spanx> claim has the syntax and processing rules defined by <xref target="RFC7519"/>. An Authorization-Server-Issued Delegated Authorization Token <bcp14>MUST</bcp14> contain <spanx style="verb">exp</spanx>.</t>

<t>A child token's <spanx style="verb">exp</spanx>, when present, <bcp14>MUST NOT</bcp14> be later than the parent's effective expiration time. A child that omits <spanx style="verb">exp</spanx> inherits the parent's effective expiration time. The effective expiration time of a chain prefix is the earliest <spanx style="verb">exp</spanx> value in that prefix. Consequently, every valid chain has a finite effective expiration time.</t>

</section>
<section anchor="the-nbf-claim"><name>The <spanx style="verb">nbf</spanx> Claim</name>

<t>The <spanx style="verb">nbf</spanx> claim has the syntax and processing rules defined by <xref target="RFC7519"/>. An <spanx style="verb">nbf</spanx> claim imposes an additional not-before restriction on the chain. Its omission means that the token imposes no additional not-before restriction.</t>

<t>If the parent has an effective not-before time, a child token's <spanx style="verb">nbf</spanx>, when present, <bcp14>MUST NOT</bcp14> be earlier than that time. If the parent has no effective not-before time, a child <bcp14>MAY</bcp14> contain an <spanx style="verb">nbf</spanx> value.</t>

<t>The effective not-before time of a chain prefix is the latest <spanx style="verb">nbf</spanx> value present in that prefix. If no token in the prefix contains <spanx style="verb">nbf</spanx>, the prefix has no effective not-before time.</t>

</section>
<section anchor="the-iss-sub-iat-and-jti-claims"><name>The <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, and <spanx style="verb">jti</spanx> Claims</name>

<t>An Authorization-Server-Issued Delegated Authorization Token <bcp14>MAY</bcp14> include <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, and <spanx style="verb">jti</spanx> in accordance with <xref target="RFC7519"/> and authorization server policy. The <spanx style="verb">iss</spanx> claim <bcp14>MUST</bcp14> be present and identify the authorization server.</t>

<t>A Client-Issued Delegated Authorization Token <bcp14>MUST NOT</bcp14> contain <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, or <spanx style="verb">jti</spanx>. This specification provides no mechanism for a verifier to validate these claims when they are asserted by a delegating client; only their values in the authorization-server-issued root token are validated under the authorization server's policy.</t>

</section>
<section anchor="extension-claims"><name>Extension Claims</name>

<t>An extension claim is a JWT payload claim whose semantics are not defined by this specification. An authorization server <bcp14>MAY</bcp14> include extension claims in a root token. A verifier <bcp14>MUST</bcp14> reject a root token containing an unrecognized extension claim unless trusted authorization server configuration or an applicable deployment profile explicitly permits that claim to be ignored. A verifier that ignores such a claim <bcp14>MUST NOT</bcp14> use it as a source of authorization or as an authorization restriction.</t>

<t>An authorization server <bcp14>MUST NOT</bcp14> rely on an extension claim to grant or restrict authorization unless every intended verifier is known to implement the claim's processing semantics. When an extension claim affects authorization, a verifier that does not implement those semantics <bcp14>MUST</bcp14> reject the token.</t>

<t>A Client-Issued Delegated Authorization Token <bcp14>MUST NOT</bcp14> contain an extension claim unless a specification defining that claim also defines its use in Delegated Authorization Tokens. Such a specification <bcp14>MUST</bcp14> define:</t>

<t><list style="symbols">
  <t>whether the claim conveys authorization, imposes a restriction, or supplies contextual information;</t>
  <t>whether the claim is permitted in root tokens, client-issued tokens, or both;</t>
  <t>whether a client-issued token can introduce or reintroduce the claim;</t>
  <t>the effect of omission from a child token;</t>
  <t>when applicable, a deterministic procedure for establishing that a child value is no broader than its parent's effective value; and</t>
  <t>how the claim composes with the permission and restriction claims defined by this specification.</t>
</list></t>

<t>A verifier <bcp14>MUST</bcp14> reject a Client-Issued Delegated Authorization Token containing an extension claim for which it does not implement the delegation semantics required by the claim's defining specification. It <bcp14>MUST</bcp14> also reject a chain when it cannot establish that an authorization-affecting extension claim complies with those semantics. An extension claim <bcp14>MUST NOT</bcp14> expand the effective <spanx style="verb">scope</spanx>, <spanx style="verb">authorization_details</spanx>, audience, validity period, or delegation depth established by the chain.</t>

</section>
</section>
<section anchor="authorization-server-issued-delegated-authorization-tokens"><name>Authorization-Server-Issued Delegated Authorization Tokens</name>

<t>An Authorization-Server-Issued Delegated Authorization Token <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>be signed by the authorization server;</t>
  <t>contain a protected <spanx style="verb">typ</spanx> header parameter with the value <spanx style="verb">da+jwt</spanx>;</t>
  <t>contain <spanx style="verb">iss</spanx> and <spanx style="verb">cnf.jkt</spanx>;</t>
  <t>contain an <spanx style="verb">exp</spanx> claim;</t>
  <t>contain a <spanx style="verb">max_delegation_depth</spanx> claim with a value in the range 0 to 65535, inclusive;</t>
  <t>contain an <spanx style="verb">aud</spanx> claim identifying one or more intended resource servers; and</t>
  <t>contain a non-empty <spanx style="verb">scope</spanx> claim, a non-empty <spanx style="verb">authorization_details</spanx> claim, or both.</t>
</list></t>

<t>Its signing key is resolved from trusted authorization server configuration or metadata. The token <bcp14>MAY</bcp14> contain extension claims subject to the rules in Section 5.3.9.</t>

</section>
<section anchor="client-issued-delegated-authorization-tokens"><name>Client-Issued Delegated Authorization Tokens</name>

<t>A Client-Issued Delegated Authorization Token <bcp14>MUST</bcp14>:</t>

<t><list style="symbols">
  <t>be signed by the private key bound to the immediately preceding token;</t>
  <t>contain a protected <spanx style="verb">typ</spanx> header parameter with the value <spanx style="verb">da+jwt</spanx>;</t>
  <t>contain the signing public key in the protected <spanx style="verb">jwk</spanx> header parameter;</t>
  <t>contain <spanx style="verb">cnf.jkt</spanx> for the delegate client's key;</t>
  <t>contain a non-empty <spanx style="verb">scope</spanx> claim, a non-empty <spanx style="verb">authorization_details</spanx> claim, or both;</t>
  <t>comply with every inherited restriction; and</t>
  <t>omit <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, and <spanx style="verb">jti</spanx>.</t>
</list></t>

<t>The token does not identify a particular parent by embedding it or by carrying a parent-token hash. Its position in the presented chain, key continuity, signature, and downscoping relationships establish whether it is valid in that chain.</t>

</section>
<section anchor="representing-the-delegated-authorization-token-chain"><name>Representing the Delegated Authorization Token Chain</name>

<t>A Delegated Authorization Token Chain is serialized as one or more JWS Compact Serialization values, as defined by <xref target="RFC7515"/>, joined by the tilde character (<spanx style="verb">~</spanx>). Tokens <bcp14>MUST</bcp14> appear in root-to-leaf order. The first token <bcp14>MUST</bcp14> be authorization-server-issued, and every later token <bcp14>MUST</bcp14> be client-issued. Each chain element <bcp14>MUST</bcp14> be non-empty and <bcp14>MUST</bcp14> be a valid JWS Compact Serialization.</t>

<t>A single-token chain consists only of an Authorization-Server-Issued Delegated Authorization Token, which is both root and leaf. Empty elements and trailing separators are invalid.</t>

<t>The chain itself is not a JWT and is not covered by the <spanx style="verb">da+jwt</spanx> media type. Its integrity follows from the individual signatures, adjacent key continuity, downscoping validation, and, during protected resource access, the DPoP proof's <spanx style="verb">ath</spanx> value over the exact chain serialization.</t>

<t>Implementations <bcp14>MUST</bcp14> enforce deployment-appropriate limits on both the number of tokens in a chain and its serialized size.</t>

</section>
</section>
<section anchor="obtaining-an-authorization-server-issued-delegated-authorization-token"><name>Obtaining an Authorization-Server-Issued Delegated Authorization Token</name>

<section anchor="authorization-server-support"><name>Authorization Server Support</name>

<t>An authorization server can issue Delegated Authorization Tokens using any grant type for which it has defined a suitable policy. Support is indicated by authorization server metadata as described in Section 6.8. A client <bcp14>MUST NOT</bcp14> assume that an authorization server supports Delegated Authorization Token issuance merely because it supports OAuth access token issuance.</t>

<t>The authorization server determines the clients and grant types for which it supports Delegated Authorization Tokens, as well as the supported resources, scopes, authorization detail types, signing algorithms, and delegation depths. It <bcp14>MUST</bcp14> apply the security requirements of the underlying grant type in addition to this specification.</t>

</section>
<section anchor="authorization-request"><name>Authorization Request</name>

<t>For a grant type that uses an authorization endpoint, the client requests a Delegated Authorization Token by including the following parameter in the authorization request:</t>

<dl>
  <dt><strong>delegation</strong>:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14> for such a request. Its value <bcp14>MUST</bcp14> be the case-sensitive string <spanx style="verb">true</spanx>.</t>
  </dd>
  <dt><strong>max_delegation_depth</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. An integer in the range 0 to 65535, inclusive, specifying the exact maximum delegation depth requested by the client. The value <bcp14>MUST</bcp14> use the canonical decimal representation with no sign, whitespace, or leading zeros except for the value <spanx style="verb">0</spanx>. If omitted, the authorization server determines the value according to the grant, resource owner authorization, client policy, and server policy.</t>
  </dd>
</dl>

<t>When the client includes <spanx style="verb">max_delegation_depth</spanx>, the authorization server <bcp14>MUST</bcp14> either authorize that exact value or reject the request. It <bcp14>MUST NOT</bcp14> issue a token with a smaller or larger value. When the client omits the parameter, the authorization server selects the depth covered by the authorization decision.</t>

<t>For an authorization flow in which authorization is obtained from a resource owner, the authorization decision <bcp14>MUST</bcp14> cover the client's ability to issue Client-Issued Delegated Authorization Tokens without further authorization server or resource owner interaction and the maximum delegation depth that will be issued. Resource owner authorization to issue an access token without delegation capability <bcp14>MUST NOT</bcp14> be interpreted as authorization for client-to-client delegation. Resource owner refusal of an explicitly requested depth <bcp14>MUST</bcp14> cause the request to fail and <bcp14>MUST NOT</bcp14> be interpreted as approval for a smaller depth, including zero. This specification does not define how the delegation capability and depth are presented to the resource owner.</t>

<t>The request <bcp14>MUST</bcp14> identify the requested authorization using <spanx style="verb">scope</spanx>, <spanx style="verb">authorization_details</spanx>, <spanx style="verb">resource</spanx> parameters as defined by <xref target="RFC8707"/> when supported, or a combination of these mechanisms accepted by the authorization server. When the client uses the <spanx style="verb">resource</spanx> parameter, the authorization server <bcp14>MUST</bcp14> process it according to <xref target="RFC8707"/> and <bcp14>MUST</bcp14> constrain the root token's <spanx style="verb">aud</spanx> claim to resources authorized for the request. Every audience included in the issued root token <bcp14>MUST</bcp14> correspond to a resource authorized for the request. The authorization server <bcp14>MUST</bcp14> bind both the delegated-authorization request and the authorized restrictions to the authorization code or other intermediate credential.</t>

<t>An authorization server <bcp14>MUST NOT</bcp14> interpret an omitted <spanx style="verb">delegation</spanx> parameter as <spanx style="verb">true</spanx>. An invalid or unsupported value results in an authorization error as described in Section 6.10.</t>

</section>
<section anchor="token-request"><name>Token Request</name>

<t>The client sends the token request required by the selected grant type. The request <bcp14>MUST</bcp14> include:</t>

<t><list style="symbols">
  <t>a <spanx style="verb">delegation</spanx> parameter with the value <spanx style="verb">true</spanx>; and</t>
  <t>a DPoP proof in the <spanx style="verb">DPoP</spanx> header field as specified by <xref target="RFC9449"/>.</t>
</list></t>

<t>The token request <bcp14>MAY</bcp14> include <spanx style="verb">scope</spanx>, <spanx style="verb">authorization_details</spanx>, <spanx style="verb">max_delegation_depth</spanx>, and <spanx style="verb">resource</spanx> parameters as defined by <xref target="RFC8707"/> when permitted by the grant type and authorization server policy. The syntax and exact-value semantics of <spanx style="verb">max_delegation_depth</spanx> are the same as in the authorization request. A <spanx style="verb">resource</spanx> parameter in the token request <bcp14>MUST NOT</bcp14> select a resource outside the authorization established by the grant. Such a request <bcp14>MUST NOT</bcp14> otherwise expand authorization established by the grant.</t>

<t>The client authenticates to the token endpoint when required by the underlying grant type. Client authentication and the DPoP proof have distinct purposes: client authentication establishes the OAuth client's identity, while the DPoP proof establishes possession of the key to which the resulting token is bound.</t>

</section>
<section anchor="client-key-binding"><name>Client Key Binding</name>

<t>The authorization server <bcp14>MUST</bcp14> validate the token-request DPoP proof according to <xref target="RFC9449"/>, including its signature, <spanx style="verb">htm</spanx>, <spanx style="verb">htu</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">jti</spanx>, and nonce when a nonce is required. The proof's protected <spanx style="verb">jwk</spanx> header parameter supplies the client's public key and <bcp14>MUST</bcp14> contain no private key material.</t>

<t>After successful validation, the authorization server computes the JWK SHA-256 thumbprint of that public key according to <xref target="RFC7638"/> and places the result in the issued token's <spanx style="verb">cnf.jkt</spanx> member. This proves that the requesting client possessed the private key at issuance time.</t>

<t>The key used for client authentication can be the same as or different from the key used for this binding. A public key sent without a valid proof of possession is insufficient to establish the binding.</t>

</section>
<section anchor="token-response"><name>Token Response</name>

<t>A successful response uses the OAuth token response format and contains:</t>

<dl>
  <dt><strong>access_token</strong>:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. The JWS Compact Serialization of the Authorization-Server-Issued Delegated Authorization Token.</t>
  </dd>
  <dt><strong>token_type</strong>:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Its value <bcp14>MUST</bcp14> be <spanx style="verb">DA</spanx>. As specified by <xref target="RFC6749"/>, clients <bcp14>MUST</bcp14> compare this value case-insensitively.</t>
  </dd>
  <dt><strong>expires_in</strong>:</dt>
  <dd>
    <t><bcp14>RECOMMENDED</bcp14>. Its value is the remaining lifetime of the returned token, in seconds, and <bcp14>MUST</bcp14> be consistent with <spanx style="verb">exp</spanx>.</t>
  </dd>
</dl>

<t>The response <bcp14>MAY</bcp14> contain other parameters permitted by the grant type. An authorization server conforming only to this specification <bcp14>MUST NOT</bcp14> issue a refresh token whose use can produce a Delegated Authorization Token. Such support requires an extension that defines refresh-token binding, authorization preservation, delegation-depth preservation, key rotation, and revocation semantics.</t>

<t>The authorization conveyed by the returned Delegated Authorization Token is authoritative. If the response includes the <spanx style="verb">scope</spanx> response parameter, the returned root token <bcp14>MUST</bcp14> contain a <spanx style="verb">scope</spanx> claim, and the two values <bcp14>MUST</bcp14> represent the same set of space-delimited scope values. The client <bcp14>MUST</bcp14> reject a response in which those values are inconsistent.</t>

<t>For example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "access_token": "eyJ0eXAiOiJkYStqd3QiLCJhbGciOiJFUzI1NiJ9...",
  "token_type": "DA",
  "expires_in": 3600,
  "scope": "read write"
}
]]></sourcecode></figure>

<t>An authorization server <bcp14>MUST NOT</bcp14> return a Delegated Authorization Token with a <spanx style="verb">token_type</spanx> identifying the token as <spanx style="verb">Bearer</spanx>, <spanx style="verb">DPoP</spanx>, or any token type other than <spanx style="verb">DA</spanx>.</t>

</section>
<section anchor="authorization-code-grant"><name>Authorization Code Grant</name>

<t>In an authorization code grant, the authorization request and token request <bcp14>MUST</bcp14> both contain <spanx style="verb">delegation=true</spanx>. The authorization server <bcp14>MUST</bcp14> bind the authorization request's delegation indicator, whether <spanx style="verb">max_delegation_depth</spanx> was explicitly requested, the authorized depth, and the authorized permissions to the authorization code.</t>

<t>If <spanx style="verb">max_delegation_depth</spanx> was included in the authorization request, the token request <bcp14>MAY</bcp14> omit it or repeat the identical value. If it was omitted from the authorization request, the token request <bcp14>MUST NOT</bcp14> introduce it. The authorization server <bcp14>MUST</bcp14> reject a mismatched or newly introduced value with <spanx style="verb">invalid_grant</spanx>.</t>

<t>At the token endpoint, the authorization server <bcp14>MUST</bcp14> reject an attempt to use an authorization code issued for a request that did not request delegated authorization to obtain a Delegated Authorization Token. It <bcp14>MUST</bcp14> also reject an attempt to broaden the permissions, audience, or other restrictions associated with the code. All requirements of the authorization code grant type, including PKCE requirements applicable to the deployment, continue to apply.</t>

</section>
<section anchor="other-grant-types"><name>Other Grant Types</name>

<t>An authorization server <bcp14>MAY</bcp14> support Delegated Authorization Tokens with the client credentials grant type or an extension grant type. This specification does not define issuance through the refresh token grant. The server <bcp14>MUST</bcp14> publish or otherwise document which grant types are supported and <bcp14>MUST</bcp14> verify that the client is authorized to obtain a Delegated Authorization Token through the selected grant type.</t>

<t>For the client credentials grant type, the authorization server determines the root authorization from the client's own authority and policy rather than resource owner authorization. The token request <bcp14>MAY</bcp14> omit <spanx style="verb">max_delegation_depth</spanx>, in which case the authorization server selects the value according to client and server policy.</t>

</section>
<section anchor="authorization-server-metadata"><name>Authorization Server Metadata</name>

<t>This specification defines the following authorization server metadata parameters for use in metadata defined by <xref target="RFC8414"/>:</t>

<dl>
  <dt><strong>delegated_authorization_token_supported</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. A Boolean value indicating whether the authorization server supports issuing Delegated Authorization Tokens. Omission is equivalent to <spanx style="verb">false</spanx>.</t>
  </dd>
  <dt><strong>delegated_authorization_signing_alg_values_supported</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. A JSON array containing the JWS <spanx style="verb">alg</spanx> values the authorization server can use to sign Authorization-Server-Issued Delegated Authorization Tokens. It <bcp14>MUST</bcp14> be present when <spanx style="verb">delegated_authorization_token_supported</spanx> is <spanx style="verb">true</spanx> and <bcp14>MUST NOT</bcp14> contain <spanx style="verb">none</spanx> or a symmetric MAC algorithm.</t>
  </dd>
  <dt><strong>delegated_authorization_max_depth</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. An integer in the range 0 to 65535, inclusive, identifying the greatest <spanx style="verb">max_delegation_depth</spanx> value the authorization server can issue. It <bcp14>MUST</bcp14> be present when <spanx style="verb">delegated_authorization_token_supported</spanx> is <spanx style="verb">true</spanx>. This value describes server capability and does not imply that a particular client is authorized to request that depth.</t>
  </dd>
</dl>

<t>For example:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "issuer": "https://as.example.com",
  "token_endpoint": "https://as.example.com/token",
  "jwks_uri": "https://as.example.com/jwks.json",
  "delegated_authorization_token_supported": true,
  "delegated_authorization_signing_alg_values_supported": ["ES256"],
  "delegated_authorization_max_depth": 4
}
]]></sourcecode></figure>

<t>The metadata describes an authorization server's capabilities, not a particular client's entitlement to use them. The server can reject a request even when it advertises support. The <spanx style="verb">dpop_signing_alg_values_supported</spanx> authorization server metadata parameter defined by <xref target="RFC9449"/> identifies algorithms accepted for DPoP proofs at the token endpoint. The <spanx style="verb">delegated_authorization_signing_alg_values_supported</spanx> parameter identifies algorithms the authorization server can use to sign root tokens. Neither parameter identifies algorithms accepted by resource servers for client-issued tokens or protected resource DPoP proofs.</t>

</section>
<section anchor="authorization-server-processing-rules"><name>Authorization Server Processing Rules</name>

<t>Before issuing a token, the authorization server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>validate the underlying OAuth grant according to the requirements of its grant type and authenticate the client when required;</t>
  <t>establish that delegated authorization was requested at every required protocol step;</t>
  <t>confirm that the client and grant type are permitted to request it;</t>
  <t>validate requested scopes, authorization details, resources, and audiences;</t>
  <t>validate the token-request DPoP proof and establish the client key binding;</t>
  <t>select an allowed asymmetric signing algorithm and key;</t>
  <t>set the protected <spanx style="verb">typ</spanx> header parameter to <spanx style="verb">da+jwt</spanx>;</t>
  <t>include <spanx style="verb">iss</spanx>, <spanx style="verb">cnf.jkt</spanx>, and an <spanx style="verb">aud</spanx> identifying one or more intended resource servers in the token;</t>
  <t>include a non-empty <spanx style="verb">scope</spanx>, a non-empty <spanx style="verb">authorization_details</spanx>, or both;</t>
  <t>set a finite <spanx style="verb">exp</spanx>;</t>
  <t>set a <spanx style="verb">max_delegation_depth</spanx> in the range 0 to 65535, inclusive, that equals an explicitly requested value or, when the parameter was omitted, a value selected according to the grant, resource owner authorization, client policy, and server policy; and</t>
  <t>apply appropriate lifetime and delegation-depth policies.</t>
</list></t>

<t>The authorization server <bcp14>MUST</bcp14> enforce a configured maximum lifetime for root tokens and <bcp14>SHOULD</bcp14> issue the shortest lifetime suitable for the delegated task. This specification does not define a universal maximum. The authorization server <bcp14>MUST</bcp14> enforce a configured maximum delegation depth and <bcp14>MUST</bcp14> reject an explicitly requested value above that maximum.</t>

</section>
<section anchor="error-responses"><name>Error Responses</name>

<t>Errors are returned using the mechanism defined by the underlying OAuth grant type. The authorization endpoint returns <spanx style="verb">access_denied</spanx>, <spanx style="verb">unsupported_response_type</spanx>, <spanx style="verb">invalid_scope</spanx>, <spanx style="verb">unauthorized_client</spanx>, or <spanx style="verb">invalid_request</spanx>, as applicable. A malformed or unsupported <spanx style="verb">max_delegation_depth</spanx> value results in <spanx style="verb">invalid_request</spanx>; resource owner refusal of the requested delegation depth results in <spanx style="verb">access_denied</spanx>. The token endpoint returns <spanx style="verb">invalid_request</spanx>, <spanx style="verb">invalid_grant</spanx>, <spanx style="verb">invalid_client</spanx>, <spanx style="verb">unauthorized_client</spanx>, or <spanx style="verb">invalid_scope</spanx>, as applicable.</t>

<t>A missing, malformed, or invalid DPoP proof is handled according to <xref target="RFC9449"/>, including the use of <spanx style="verb">use_dpop_nonce</spanx> when the authorization server requires a nonce. An unsupported <spanx style="verb">delegation=true</spanx> request <bcp14>SHOULD</bcp14> result in <spanx style="verb">invalid_request</spanx> unless a more specific existing OAuth error applies.</t>

</section>
</section>
<section anchor="delegating-authorization-to-another-client"><name>Delegating Authorization to Another Client</name>

<section anchor="preconditions"><name>Preconditions</name>

<t>A delegating client requires:</t>

<t><list style="symbols">
  <t>a valid Delegated Authorization Token Chain whose leaf token is bound to a key it controls;</t>
  <t>an effective delegation depth greater than zero;</t>
  <t>a public key established through an authenticated mechanism as associated with the intended delegate client; and</t>
  <t>sufficient authorization for the proposed child token.</t>
</list></t>

<t>The delegating client <bcp14>SHOULD</bcp14> validate the chain before relying on it. It <bcp14>MUST NOT</bcp14> issue a child token after the effective expiration time, before the effective not-before time, or when further delegation is prohibited.</t>

</section>
<section anchor="constructing-a-client-issued-delegated-authorization-token"><name>Constructing a Client-Issued Delegated Authorization Token</name>

<t>The delegating client constructs a JWT payload containing <spanx style="verb">cnf.jkt</spanx> for the delegate client's public key and restrictions for the delegation. It calculates inherited effective values from the current chain before selecting child values. The child <bcp14>MUST</bcp14> contain a non-empty <spanx style="verb">scope</spanx>, a non-empty <spanx style="verb">authorization_details</spanx>, or both.</t>

<t>Omission of <spanx style="verb">scope</spanx> or <spanx style="verb">authorization_details</spanx> discards that permission component. Omission of another restriction has the claim-specific effect defined in Section 5.3 and does not create unrestricted authority. The delegating client <bcp14>MUST NOT</bcp14> include <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, or <spanx style="verb">jti</spanx>. The delegating client <bcp14>MUST NOT</bcp14> include an extension claim unless its defining specification permits the claim in Client-Issued Delegated Authorization Tokens and the delegating client applies the delegation rules defined for that claim.</t>

</section>
<section anchor="binding-the-token-to-the-delegate-client"><name>Binding the Token to the Delegate Client</name>

<t>The delegating client <bcp14>MUST</bcp14> use a mechanism appropriate to the relationship and threat model of the clients to establish that the public key is associated with the intended delegate client. It computes the established key's thumbprint according to <xref target="RFC7638"/> and places it in the child token's <spanx style="verb">cnf.jkt</spanx>.</t>

<t>This specification does not require a separate proof-of-possession exchange during local issuance when the mechanism used to establish that association already establishes control of the corresponding private key, or when key substitution is not a relevant threat. Otherwise, the delegating client <bcp14>SHOULD</bcp14> obtain such proof. Regardless of the issuance mechanism, the delegate client <bcp14>MUST</bcp14> prove possession of the private key when using the token at a resource server or delegating further.</t>

</section>
<section anchor="signing-the-client-issued-delegated-authorization-token"><name>Signing the Client-Issued Delegated Authorization Token</name>

<t>The delegating client creates a protected JOSE header containing <spanx style="verb">typ</spanx>, <spanx style="verb">alg</spanx>, and its public <spanx style="verb">jwk</spanx>, then signs the child token with the private key bound to the current leaf token. The JWK thumbprint of the protected <spanx style="verb">jwk</spanx> <bcp14>MUST</bcp14> equal the current leaf token's <spanx style="verb">cnf.jkt</spanx>.</t>

<t>The delegating client appends the child token in compact form to the existing chain. It <bcp14>MUST</bcp14> preserve the preceding compact tokens byte for byte and in their existing order.</t>

</section>
<section anchor="delegation-depth-restrictions"><name>Delegation Depth Restrictions</name>

<t>The delegating client computes the parent's effective depth as specified in Section 5.3.2. If it is zero, the delegating client <bcp14>MUST NOT</bcp14> create a child token. If it is a positive integer <spanx style="verb">m</spanx>, an explicit child value <bcp14>MUST</bcp14> be between zero and <spanx style="verb">m - 1</spanx>, inclusive; omission yields <spanx style="verb">m - 1</spanx>.</t>

<t>A delegating client <bcp14>SHOULD</bcp14> impose the smallest depth sufficient for the intended workflow. When the delegating client intends to issue a terminal token that can be used for protected resource access but cannot be delegated further, it <bcp14>SHOULD</bcp14> set the child token's <spanx style="verb">max_delegation_depth</spanx> to <spanx style="verb">0</spanx>.</t>

</section>
<section anchor="permission-downscoping"><name>Permission Downscoping</name>

<t>For <spanx style="verb">scope</spanx>, the delegating client treats the scope values as a set. If the child contains <spanx style="verb">scope</spanx>, every included scope value <bcp14>MUST</bcp14> occur in the parent's effective scope. If no effective parent scope exists, the child <bcp14>MUST NOT</bcp14> contain <spanx style="verb">scope</spanx>. Omission discards the scope permission component.</t>

<t>For <spanx style="verb">authorization_details</spanx>, the delegating client applies the subset rules defined for each authorization detail type. If the child contains <spanx style="verb">authorization_details</spanx>, every child detail <bcp14>MUST</bcp14> be covered by an effective parent detail. If no effective parent authorization details exist, the child <bcp14>MUST NOT</bcp14> contain <spanx style="verb">authorization_details</spanx>. If the delegating client cannot establish containment, it <bcp14>MUST NOT</bcp14> issue the child token. Omission discards the authorization-details permission component.</t>

<t>The child <bcp14>MUST</bcp14> retain at least one non-empty permission component. When both claims are present, the delegating client <bcp14>MUST</bcp14> apply the deterministic composition semantics applicable to the authorization detail types and intended resource servers. It <bcp14>MUST NOT</bcp14> issue a child if removing or narrowing either component could increase the child's effective authorization.</t>

</section>
<section anchor="audience-and-lifetime-restrictions"><name>Audience and Lifetime Restrictions</name>

<t>Every audience explicitly included in the child <bcp14>MUST</bcp14> occur in the parent's effective audience. Delegating clients that include an explicit child audience <bcp14>SHOULD</bcp14> select the narrowest subset appropriate for the resource servers that the delegate client is expected to access.</t>

<t>A child token's <spanx style="verb">exp</spanx> value <bcp14>MUST</bcp14> be no later than the parent's effective expiration time. If the parent has an effective not-before time, a child token's <spanx style="verb">nbf</spanx> value, when present, <bcp14>MUST</bcp14> be no earlier than that time. If the parent has no effective not-before time, the child <bcp14>MAY</bcp14> contain an <spanx style="verb">nbf</spanx> value. Omitting <spanx style="verb">nbf</spanx> imposes no additional not-before restriction. The delegating client <bcp14>SHOULD</bcp14> choose a short lifetime appropriate to the delegated task.</t>

</section>
<section anchor="out-of-band-delivery"><name>Out-of-Band Delivery</name>

<t>The delegating client delivers the complete ordered chain, including the new child token, to the delegate client. The protocol for delivering the delegate public key, requesting delegation, and returning the chain is outside the scope of this specification.</t>

<t>An out-of-band mechanism <bcp14>MUST</bcp14> provide integrity protection and endpoint authentication appropriate to the sensitivity of the authorization. It <bcp14>SHOULD</bcp14> also provide confidentiality because token contents can reveal identities, resources, and permissions, even though possession of the private key is required to use the tokens.</t>

</section>
<section anchor="delegate-client-validation"><name>Delegate Client Validation</name>

<t>A delegate client receiving a chain <bcp14>SHOULD</bcp14> perform the validation in Section 8 before accepting it. At a minimum, it <bcp14>MUST</bcp14> confirm that the leaf <spanx style="verb">cnf.jkt</spanx> matches the thumbprint of its own public key before attempting to use the chain. It <bcp14>SHOULD</bcp14> also confirm that the effective permissions, audience, lifetime, and depth are suitable for the intended task.</t>

</section>
</section>
<section anchor="delegated-authorization-token-chain-validation"><name>Delegated Authorization Token Chain Validation</name>

<section anchor="validation-inputs"><name>Validation Inputs</name>

<t>The inputs to the validation procedure are the exact serialized chain, trusted authorization server configuration, the current time, the accepted algorithms, and the authorization context in which validation is performed. For protected resource access, the context includes the target resource server and requested operation.</t>

<t>The verifier splits the serialization on <spanx style="verb">~</spanx> without modifying any compact token. It <bcp14>MUST</bcp14> reject an empty chain, an empty element, an element that is not a well-formed compact signed JWT, or a chain exceeding configured size or length limits.</t>

</section>
<section anchor="locating-the-authorization-server-issued-root-token"><name>Locating the Authorization-Server-Issued Root Token</name>

<t>The first element is the root token. The verifier uses its <spanx style="verb">iss</spanx> claim and trusted configuration to identify an acceptable authorization server and its verification keys. The verifier <bcp14>MUST NOT</bcp14> accept a client-issued token as the first element or search later elements for an alternative root.</t>

<t>Only the first token can contain <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, or <spanx style="verb">jti</spanx>. The presence of any of these claims in a later token causes validation to fail.</t>

</section>
<section anchor="validating-the-authorization-server-issued-token"><name>Validating the Authorization-Server-Issued Token</name>

<t>The verifier <bcp14>MUST</bcp14> reject a root token containing a <spanx style="verb">jwk</spanx> header parameter. It <bcp14>MUST</bcp14> validate the root token's JWS signature using an allowed authorization server key and algorithm. It <bcp14>MUST</bcp14> verify the protected <spanx style="verb">typ</spanx> header parameter, <spanx style="verb">iss</spanx>, <spanx style="verb">cnf.jkt</spanx>, the time claims, and all other claims required by authorization server policy. It <bcp14>MUST</bcp14> reject the root token if the issuer is untrusted, the signature is invalid, or the token is not currently valid.</t>

<t>Issuer identification alone is not sufficient to trust a key supplied by the token. Authorization server verification keys <bcp14>MUST</bcp14> come from trusted configuration or authenticated metadata.</t>

</section>
<section anchor="validating-client-issued-token-signatures"><name>Validating Client-Issued Token Signatures</name>

<t>For each token after the root, in order, the verifier <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>parse the protected header and payload;</t>
  <t>require the protected <spanx style="verb">typ</spanx> header parameter to equal <spanx style="verb">da+jwt</spanx>;</t>
  <t>require a public <spanx style="verb">jwk</spanx> in the protected header;</t>
  <t>ensure that <spanx style="verb">alg</spanx> and the JWK are allowed and compatible;</t>
  <t>reject private key material in the JWK; and</t>
  <t>verify the signature using that JWK.</t>
</list></t>

<t>A failure at any level invalidates the entire chain.</t>

</section>
<section anchor="validating-key-continuity"><name>Validating Key Continuity</name>

<t>For each adjacent parent and child, the verifier computes the SHA-256 JWK thumbprint of the child's protected <spanx style="verb">jwk</spanx> according to <xref target="RFC7638"/>. It <bcp14>MUST</bcp14> compare that value to the parent's <spanx style="verb">cnf.jkt</spanx> using a constant-time comparison. They <bcp14>MUST</bcp14> be equal.</t>

<t>The verifier <bcp14>MUST</bcp14> also require every child token to contain a syntactically valid <spanx style="verb">cnf.jkt</spanx>. This value establishes continuity to the next token, if any, or, for the leaf token, identifies the key to which the token is bound.</t>

</section>
<section anchor="validating-delegation-depth"><name>Validating Delegation Depth</name>

<t>The verifier starts with the depth explicitly specified by the root token and <bcp14>MUST</bcp14> reject a root that omits the claim. For each child:</t>

<t><list style="symbols">
  <t>if the parent's effective depth is zero, the verifier <bcp14>MUST</bcp14> reject the chain; or</t>
  <t>if the parent's effective depth is a positive integer <spanx style="verb">m</spanx>, an explicit child value <bcp14>MUST</bcp14> be in <spanx style="verb">[0, m-1]</spanx>, and omission produces <spanx style="verb">m-1</spanx>.</t>
</list></t>

<t>The verifier <bcp14>MUST</bcp14> reject a value outside the range 0 to 65535, a non-integer value, or a value that exceeds its configured maximum.</t>

</section>
<section anchor="validating-permission-downscoping"><name>Validating Permission Downscoping</name>

<t>The verifier initializes the effective scope and authorization details from the root token and <bcp14>MUST</bcp14> reject a root that contains neither a non-empty <spanx style="verb">scope</spanx> nor a non-empty <spanx style="verb">authorization_details</spanx>. While traversing the chain, it <bcp14>MUST</bcp14> reject a child that contains neither a non-empty <spanx style="verb">scope</spanx> nor a non-empty <spanx style="verb">authorization_details</spanx>. A permission claim present in a child becomes effective only after the verifier establishes that it is no broader than the corresponding effective parent value. If the child omits a permission claim, that component becomes absent from the effective authorization and <bcp14>MUST NOT</bcp14> reappear in a descendant. The verifier <bcp14>MUST</bcp14> reject a child that contains a permission claim for which its parent has no corresponding effective value.</t>

<t>Scope containment is determined by set inclusion. Containment of authorization details is determined by type-specific rules. If the comparison is unsupported, ambiguous, or unsuccessful, the verifier <bcp14>MUST</bcp14> reject the chain rather than assume containment.</t>

<t>When <spanx style="verb">scope</spanx> and <spanx style="verb">authorization_details</spanx> are combined, the verifier <bcp14>MUST</bcp14> apply the applicable deterministic composition semantics. It <bcp14>MUST</bcp14> reject the chain if those semantics are unavailable or if omission or downscoping of either component could increase effective authorization.</t>

</section>
<section anchor="validating-extension-claims"><name>Validating Extension Claims</name>

<t>For each extension claim in a Client-Issued Delegated Authorization Token, the verifier <bcp14>MUST</bcp14> apply the delegation semantics defined for that claim. These semantics determine whether the claim can be introduced or reintroduced, how omission is processed, whether a child value must be compared with an effective parent value, and how the claim affects authorization. If the required semantics are not defined or implemented, or if the claim does not comply with them, the verifier <bcp14>MUST</bcp14> reject the chain.</t>

<t>An unrecognized extension claim in the root token causes validation to fail unless trusted authorization server configuration or an applicable deployment profile explicitly permits that claim to be ignored. A verifier that ignores such a claim <bcp14>MUST NOT</bcp14> use it as a source of authorization or as an authorization restriction.</t>

</section>
<section anchor="validating-audience-downscoping"><name>Validating Audience Downscoping</name>

<t>The verifier treats the value of each <spanx style="verb">aud</spanx> claim as a set, including when the claim uses the single-string form defined by <xref target="RFC7519"/>. Whenever present, an <spanx style="verb">aud</spanx> claim <bcp14>MUST</bcp14> identify at least one audience. The verifier <bcp14>MUST</bcp14> reject a root token that omits <spanx style="verb">aud</spanx>. A child that omits <spanx style="verb">aud</spanx> adds no audience restriction, so the effective audience remains the parent's effective audience. Every audience explicitly included in a child <bcp14>MUST</bcp14> be a member of its parent's effective audience.</t>

<t>For protected resource access, the effective leaf audience <bcp14>MUST</bcp14> identify the resource server according to its audience-validation policy.</t>

</section>
<section anchor="validating-time-restrictions"><name>Validating Time Restrictions</name>

<t>The verifier maintains the earliest expiration time and the latest not-before time encountered. A token that omits <spanx style="verb">nbf</spanx> adds no not-before restriction. The chain is invalid if a child's expiration time is later than its parent's effective expiration time or, when the parent has an effective not-before time, if the child's explicit not-before time is earlier than that value.</t>

<t>The verifier <bcp14>MUST</bcp14> ensure that the current time is before the effective expiration time and, when an effective not-before time exists, is not before that time, allowing only locally configured clock skew. It <bcp14>MUST</bcp14> also apply any additional time-claim policies required for the root token.</t>

</section>
<section anchor="validation-result"><name>Validation Result</name>

<t>Successful validation produces at least:</t>

<t><list style="symbols">
  <t>the trusted authorization server and the validated identity claims from the root token;</t>
  <t>the leaf <spanx style="verb">cnf.jkt</spanx>;</t>
  <t>effective scope and authorization details;</t>
  <t>effective audience;</t>
  <t>an effective expiration time and, when present, an effective not-before time; and</t>
  <t>effective remaining delegation depth.</t>
</list></t>

<t>Chain validation alone does not establish that a protected resource request is authorized. The resource server also validates the DPoP proof, request binding, audience, and application-specific permissions as described in Section 9.</t>

</section>
</section>
<section anchor="protected-resource-access"><name>Protected Resource Access</name>

<section anchor="protected-resource-metadata"><name>Protected Resource Metadata</name>

<t>A resource server can publish its Delegated Authorization algorithm capabilities using OAuth Protected Resource Metadata as defined by <xref target="RFC9728"/>. The <spanx style="verb">dpop_signing_alg_values_supported</spanx> parameter defined by <xref target="RFC9728"/> identifies the algorithms accepted by the resource server for DPoP proofs.</t>

<t>This specification defines the following protected resource metadata parameter:</t>

<dl>
  <dt><strong>delegated_authorization_client_signing_alg_values_supported</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. A JSON array containing the JWS <spanx style="verb">alg</spanx> values accepted by the resource server for Client-Issued Delegated Authorization Token signatures. The array <bcp14>MUST NOT</bcp14> contain <spanx style="verb">none</spanx> or a symmetric MAC algorithm.</t>
  </dd>
</dl>

<t>A client issuing a Client-Issued Delegated Authorization Token <bcp14>SHOULD</bcp14> select an algorithm listed by every resource server expected to validate the chain. When a chain has multiple intended resource servers, the client selects an algorithm from the intersection of their advertised values or uses an algorithm established through configuration or another authenticated mechanism. If the metadata parameter is omitted, the client <bcp14>MUST NOT</bcp14> infer support for any particular client-issued-token algorithm from the omission alone.</t>

<t>A resource server <bcp14>MUST</bcp14> apply its current local algorithm policy when validating a token or DPoP proof. Metadata does not override that policy or by itself require acceptance of a token.</t>

</section>
<section anchor="the-da-authentication-scheme"><name>The <spanx style="verb">DA</spanx> Authentication Scheme</name>

<t>A client presents a Delegated Authorization Token Chain in the HTTP <spanx style="verb">Authorization</spanx> field using the <spanx style="verb">DA</spanx> authentication scheme. The scheme name is followed by one or more SP characters and the Delegated Authorization Token Chain. The chain is a syntactically restricted instance of the <spanx style="verb">token68</spanx> form defined by <xref target="RFC9110"/>.</t>

<t>As specified by <xref target="RFC9110"/>, the authentication scheme name is case-insensitive. A request using the <spanx style="verb">DA</spanx> scheme <bcp14>MUST</bcp14> contain exactly one <spanx style="verb">Authorization</spanx> field value with exactly one credential. A resource server <bcp14>MUST</bcp14> reject a request containing more than one <spanx style="verb">Authorization</spanx> field value or a combined field value containing more than one credential.</t>

<t>To extract the token chain, the resource server removes the scheme name and the one or more SP characters that immediately follow it. All remaining characters form the Delegated Authorization Token Chain. The chain <bcp14>MUST</bcp14> be non-empty, <bcp14>MUST NOT</bcp14> contain whitespace, and <bcp14>MUST</bcp14> conform to the chain serialization defined in Section 5.6. Leading or trailing whitespace in the chain is invalid.</t>

<t>The token-chain value is case-sensitive and <bcp14>MUST</bcp14> appear in the exact root-to-leaf order defined in Section 5.6. The <spanx style="verb">DA</spanx> scheme <bcp14>MUST</bcp14> be used with a DPoP proof and <bcp14>MUST NOT</bcp14> be used as a bearer authentication scheme.</t>

</section>
<section anchor="compatibility-with-the-bearer-authentication-scheme"><name>Compatibility with the Bearer Authentication Scheme</name>

<t>A Delegated Authorization Token <bcp14>MUST NOT</bcp14> be accepted as a bearer token. A client <bcp14>MUST</bcp14> present a Delegated Authorization Token Chain using the <spanx style="verb">DA</spanx> authentication scheme and <bcp14>MUST</bcp14> include the DPoP proof required by this specification.</t>

<t>A resource server receiving a Delegated Authorization Token or Delegated Authorization Token Chain using the <spanx style="verb">Bearer</spanx> authentication scheme <bcp14>MUST</bcp14> reject the request. It <bcp14>MUST</bcp14> also reject a bearer access token presented using the <spanx style="verb">DA</spanx> scheme. Validation rules for <spanx style="verb">DA</spanx> credentials and bearer credentials <bcp14>MUST</bcp14> be mutually exclusive so that a token accepted under one scheme cannot be accepted under the other.</t>

<t>An authorization server <bcp14>MUST</bcp14> issue a Delegated Authorization Token with the <spanx style="verb">DA</spanx> token type and <bcp14>MUST NOT</bcp14> issue the same token value for use as a bearer token. These requirements prevent downgrade to bearer-token semantics and ensure that possession of a serialized Delegated Authorization Token Chain without the leaf private key is insufficient for access.</t>

</section>
<section anchor="creating-the-dpop-proof"><name>Creating the DPoP Proof</name>

<t>This specification uses the DPoP proof format and validation rules defined by <xref target="RFC9449"/>, except for the following substitutions for protected resource requests:</t>

<t><list style="symbols">
  <t>the <spanx style="verb">DA</spanx> authentication scheme defined in Section 9.2 replaces the <spanx style="verb">DPoP</spanx> authentication scheme;</t>
  <t>the Delegated Authorization Token Chain replaces the single access token; and</t>
  <t>the <spanx style="verb">ath</spanx> claim is computed over the exact Delegated Authorization Token Chain serialization as specified below, rather than over a single access token.</t>
</list></t>

<t>All other applicable DPoP proof requirements, including the protected <spanx style="verb">typ</spanx> and <spanx style="verb">jwk</spanx> header parameters, signature algorithm requirements, <spanx style="verb">htm</spanx>, <spanx style="verb">htu</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">jti</spanx>, proof freshness, replay detection, and nonce processing, remain unchanged unless this specification explicitly states otherwise.</t>

<t>The client creates a DPoP proof using these substitutions. The proof <bcp14>MUST</bcp14> contain <spanx style="verb">htm</spanx>, <spanx style="verb">htu</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">jti</spanx>, and <spanx style="verb">ath</spanx>, and it <bcp14>MUST</bcp14> be signed with the private key identified by the leaf token's <spanx style="verb">cnf.jkt</spanx>. The proof includes the corresponding public JWK in its protected header.</t>

<t>For this scheme, the <spanx style="verb">ath</spanx> value is:</t>

<figure><artwork><![CDATA[
base64url(SHA-256(ASCII(DA-Token-Chain)))
]]></artwork></figure>

<t>where <spanx style="verb">DA-Token-Chain</spanx> is the exact character sequence extracted by the parsing procedure in Section 9.2. The scheme name and separating SP characters are not included. The resource server <bcp14>MUST NOT</bcp14> decode, normalize, or reserialize the chain or any token before computing <spanx style="verb">ath</spanx>. This binds the proof to every token in the chain and to the order of those tokens. DPoP nonce processing follows <xref target="RFC9449"/>.</t>

</section>
<section anchor="protected-resource-request"><name>Protected Resource Request</name>

<t>A request carries both header fields. For example:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET /reports/123 HTTP/1.1
Host: resource.example.com
Authorization: DA eyJ...root...~eyJ...leaf...
DPoP: eyJ...proof...
]]></sourcecode></figure>

<t>A client <bcp14>MUST</bcp14> create a fresh DPoP proof for the target URI and method. It <bcp14>MUST NOT</bcp14> forward a proof created for a different request or use a private key other than the one bound to the leaf token.</t>

</section>
<section anchor="resource-server-processing"><name>Resource Server Processing</name>

<t>Upon receiving a <spanx style="verb">DA</spanx> request, the resource server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>parse the authentication scheme and exact chain serialization;</t>
  <t>validate the Delegated Authorization Token Chain as specified in Section 8;</t>
  <t>validate the DPoP proof as specified by <xref target="RFC9449"/> and this section;</t>
  <t>verify that the DPoP proof key matches the leaf token's key binding;</t>
  <t>verify <spanx style="verb">ath</spanx> over the exact chain serialization;</t>
  <t>verify that the effective audience identifies this resource server; and</t>
  <t>enforce effective scope, authorization details, and local access-control policy.</t>
</list></t>

<t>The resource server <bcp14>MUST</bcp14> complete all checks before fulfilling the protected resource request. It <bcp14>MAY</bcp14> cache validation results, subject to token expiration, key rotation, revocation policy, and replay defenses.</t>

</section>
<section anchor="delegated-authorization-token-chain-verification"><name>Delegated Authorization Token Chain Verification</name>

<t>The resource server supplies the validation procedure in Section 8 with its trusted issuers, accepted algorithms, resource identifier, current time, and request context. It <bcp14>MUST</bcp14> reject the entire request if any token or adjacent relationship is invalid.</t>

<t>A resource server <bcp14>MAY</bcp14> use a trusted validation service to perform some or all chain checks. The protocol and response format for such a service are outside the scope of this specification. The validation result <bcp14>MUST</bcp14> include the effective restrictions and the leaf key binding. Regardless of how the chain is validated, the resource server <bcp14>MUST</bcp14> perform the request-specific DPoP and authorization checks in this section.</t>

</section>
<section anchor="dpop-proof-verification"><name>DPoP Proof Verification</name>

<t>In addition to the checks required by <xref target="RFC9449"/>, the resource server <bcp14>MUST</bcp14> require an asymmetric proof signature, validate <spanx style="verb">htm</spanx> and <spanx style="verb">htu</spanx> against the current request, enforce an acceptable proof age, detect replay of <spanx style="verb">jti</spanx> as required by its policy, and validate a server-provided nonce when one was required.</t>

<t>The resource server <bcp14>MUST</bcp14> reject a missing DPoP proof. It <bcp14>MUST NOT</bcp14> accept a DPoP proof as defined by <xref target="RFC9449"/> that was created for a token sent under another authentication scheme unless all requirements of this specification, including the adapted <spanx style="verb">ath</spanx>, are met.</t>

</section>
<section anchor="binding-the-dpop-proof-to-the-leaf-delegated-authorization-token"><name>Binding the DPoP Proof to the Leaf Delegated Authorization Token</name>

<t>The resource server computes the JWK thumbprint of the public JWK in the DPoP proof's protected header according to <xref target="RFC7638"/>. That value <bcp14>MUST</bcp14> equal the leaf token's <spanx style="verb">cnf.jkt</spanx>. The resource server also computes <spanx style="verb">ath</spanx> from the exact presented chain and compares it to the proof's <spanx style="verb">ath</spanx> using a constant-time comparison.</t>

<t>Together, these checks establish that the client presenting the request controls the private key bound to the leaf token and used it to authorize the request with this exact ordered chain. They do not replace validation of the signatures and downscoping relationships within the chain.</t>

</section>
<section anchor="authorization-enforcement"><name>Authorization Enforcement</name>

<t>After cryptographic validation, the resource server determines whether the effective authorization permits the requested operation. It <bcp14>MUST</bcp14> apply every effective restriction, including scope, authorization details, audience, time, and any application-specific claims recognized by its policy.</t>

<t>The resource server <bcp14>MUST</bcp14> ensure that its composition of <spanx style="verb">scope</spanx> and <spanx style="verb">authorization_details</spanx> is monotonic, such that removing or narrowing either permission component cannot authorize an operation that was not previously authorized.</t>

<t>Possession of a valid chain and its bound private key does not guarantee access. The resource server can deny a request due to resource owner policy, tenant policy, resource state, revoked authorization, or other local controls.</t>

</section>
<section anchor="www-authenticate-challenges"><name><spanx style="verb">WWW-Authenticate</spanx> Challenges</name>

<t>A resource server challenges a client to use this scheme by returning a <spanx style="verb">WWW-Authenticate</spanx> header field with the <spanx style="verb">DA</spanx> scheme. The challenge <bcp14>MAY</bcp14> include <spanx style="verb">realm</spanx>, <spanx style="verb">error</spanx>, <spanx style="verb">error_description</spanx>, and <spanx style="verb">scope</spanx> parameters when applicable. Error descriptions are intended for developers and <bcp14>MUST NOT</bcp14> expose sensitive details.</t>

<t>For example:</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: DA realm="reports", error="invalid_token"
]]></sourcecode></figure>

<t>When a fresh DPoP nonce is required, the resource server returns an HTTP 401 response containing the <spanx style="verb">DPoP-Nonce</spanx> header field and a <spanx style="verb">DA</spanx> challenge whose <spanx style="verb">error</spanx> parameter is <spanx style="verb">use_dpop_nonce</spanx>. This adapts the resource server nonce challenge defined by <xref target="RFC9449"/> to the <spanx style="verb">DA</spanx> authentication scheme.</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: DA error="use_dpop_nonce"
DPoP-Nonce: eyJ7S_zG.eyJH0-Z.HX4w-7v
]]></sourcecode></figure>

<t>The client <bcp14>MUST</bcp14> create a new DPoP proof containing the nonce and retry the request with the same Delegated Authorization Token Chain. It <bcp14>MUST NOT</bcp14> reuse the rejected DPoP proof.</t>

</section>
<section anchor="error-responses-1"><name>Error Responses</name>

<t>The <spanx style="verb">DA</spanx> authentication scheme uses the <spanx style="verb">invalid_request</spanx>, <spanx style="verb">invalid_token</spanx>, and <spanx style="verb">insufficient_scope</spanx> error codes defined by <xref target="RFC6750"/>, with the adaptations specified in this section. These error codes are carried in a <spanx style="verb">DA</spanx> challenge; a resource server <bcp14>MUST NOT</bcp14> use the <spanx style="verb">Bearer</spanx> scheme for a Delegated Authorization Token.</t>

<t><list style="symbols">
  <t><spanx style="verb">invalid_request</spanx> indicates that the request is missing required authentication information or contains malformed DA credentials or a malformed DPoP proof;</t>
  <t><spanx style="verb">invalid_token</spanx> indicates that the token chain, a signature, key continuity, a time restriction, the audience, or the DPoP binding is invalid; and</t>
  <t><spanx style="verb">insufficient_scope</spanx> indicates that the chain and proof are valid but the effective authorization does not permit the requested operation.</t>
</list></t>

<t>A resource server <bcp14>MUST</bcp14> return HTTP 401 for <spanx style="verb">invalid_request</spanx> and <spanx style="verb">invalid_token</spanx>. It <bcp14>MUST</bcp14> return HTTP 403 for <spanx style="verb">insufficient_scope</spanx>. It <bcp14>SHOULD</bcp14> avoid identifying which internal chain element failed, because detailed failures can aid attackers.</t>

</section>
</section>
<section anchor="token-revocation"><name>Token Revocation</name>

<section anchor="revocation-request"><name>Revocation Request</name>

<t>This specification extends OAuth 2.0 Token Revocation <xref target="RFC7009"/> to accept a complete Delegated Authorization Token Chain. The revocation endpoint advertised by the authorization server accepts the following form parameters:</t>

<dl>
  <dt><strong>token</strong>:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. The exact serialization of a Delegated Authorization Token Chain. The last token in the chain is the token to be revoked. A single-token chain therefore revokes an Authorization-Server-Issued Delegated Authorization Token, while a chain containing two or more tokens can revoke the last Client-Issued Delegated Authorization Token.</t>
  </dd>
  <dt><strong>token_type_hint</strong>:</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. When present, its value <bcp14>SHOULD</bcp14> be the case-sensitive string <spanx style="verb">delegated_authorization_token</spanx>.</t>
  </dd>
</dl>

<t>The request <bcp14>MUST</bcp14> include a DPoP proof in the <spanx style="verb">DPoP</spanx> header field. The proof <bcp14>MUST</bcp14> contain <spanx style="verb">htm</spanx>, <spanx style="verb">htu</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">jti</spanx>, and <spanx style="verb">ath</spanx>. The <spanx style="verb">ath</spanx> value <bcp14>MUST</bcp14> be:</t>

<figure><artwork><![CDATA[
base64url(SHA-256(ASCII(DA-Token-Chain)))
]]></artwork></figure>

<t>where <spanx style="verb">DA-Token-Chain</spanx> is the exact value of the <spanx style="verb">token</spanx> parameter after form decoding. The authorization server <bcp14>MUST NOT</bcp14> decode, normalize, or reserialize the chain or any token before computing <spanx style="verb">ath</spanx>.</t>

<t>The request and response otherwise follow <xref target="RFC7009"/>. In particular, the request uses an HTTP <spanx style="verb">POST</spanx>, the authorization server <bcp14>MUST</bcp14> require TLS, and the endpoint returns an HTTP 200 response for both a successful revocation and an invalid token.</t>

</section>
<section anchor="revocation-authorization"><name>Revocation Authorization</name>

<t>The authorization server <bcp14>MUST</bcp14> validate the DPoP proof according to <xref target="RFC9449"/>, including its signature, <spanx style="verb">htm</spanx>, <spanx style="verb">htu</spanx>, <spanx style="verb">iat</spanx>, <spanx style="verb">jti</spanx>, <spanx style="verb">ath</spanx>, and nonce when a nonce is required. The proof <bcp14>MUST</bcp14> be bound to the revocation endpoint URI and the <spanx style="verb">POST</spanx> method.</t>

<t>After validating the chain as specified in Section 10.3, the authorization server <bcp14>MUST</bcp14> require the DPoP proof key to match one of the following keys:</t>

<t><list style="symbols">
  <t>the key identified by the target token's <spanx style="verb">cnf.jkt</spanx>; or</t>
  <t>for a Client-Issued Delegated Authorization Token, the public <spanx style="verb">jwk</spanx> in that target token's protected header.</t>
</list></t>

<t>A match means that the JWK thumbprint of the DPoP proof's public key, computed according to <xref target="RFC7638"/>, is equal to the applicable thumbprint. Successful chain and DPoP validation under either rule is sufficient authorization to revoke the target token. This allows the client controlling the key identified by the target token's <spanx style="verb">cnf.jkt</spanx> to revoke it and allows the delegating client that issued a client-issued target token to revoke its direct child.</t>

<t>OAuth client authentication, if performed, does not by itself authorize revocation. Possession of a serialized chain without proof of possession of an applicable private key is insufficient.</t>

</section>
<section anchor="revocation-validation"><name>Revocation Validation</name>

<t>Revocation validation establishes the cryptographic provenance and downscoping validity of the target; it does not determine whether the chain is currently usable for protected resource access.</t>

<t>Before recording a revocation, the authorization server <bcp14>MUST</bcp14>:</t>

<t><list style="numbers" type="1">
  <t>parse the exact chain serialization and enforce configured token-count, size, and verification-cost limits;</t>
  <t>require the root <spanx style="verb">iss</spanx> to identify that authorization server and validate the root signature using a trusted key;</t>
  <t>validate the required token types, claim syntax, prohibited claims, and confirmation bindings;</t>
  <t>validate every client-issued token signature and every adjacent key-continuity relationship;</t>
  <t>validate delegation depth, permission containment, audience downscoping, and time-claim downscoping; and</t>
  <t>apply the extension-claim delegation rules required to establish that the chain is valid.</t>
</list></t>

<t>The authorization server <bcp14>MUST</bcp14> reject the chain internally if any required cryptographic or downscoping check fails. Consistent with <xref target="RFC7009"/>, this failure does not change the external HTTP 200 response. If an authorization detail or extension claim requires containment rules that the authorization server does not implement, it cannot establish a valid chain and <bcp14>MUST NOT</bcp14> record the target as a valid revocation entry.</t>

<t>The current time being after an <spanx style="verb">exp</spanx> value or before an <spanx style="verb">nbf</spanx> value <bcp14>MUST NOT</bcp14> prevent revocation. Prior revocation of the target or any ancestor <bcp14>MUST NOT</bcp14> cause an error response. The authorization server <bcp14>MAY</bcp14> treat such a request as already effective and need not record redundant descendant state. Audience applicability and authorization for a particular protected resource operation are not evaluated during revocation validation.</t>

<t>The authorization server <bcp14>MAY</bcp14> accept a legacy signature algorithm for revocation validation after it has stopped accepting that algorithm for newly issued tokens or protected resource access, provided that the server can still verify it securely. It <bcp14>MUST NOT</bcp14> accept an algorithm whose signature verification is considered unsafe under current policy.</t>

<t>The server <bcp14>MUST</bcp14> identify the target using a collision-resistant digest of its exact compact serialization or another unambiguous identifier. It <bcp14>MUST NOT</bcp14> identify a Client-Issued Delegated Authorization Token only by its position, claims, or bound-key thumbprint.</t>

</section>
<section anchor="revocation-semantics"><name>Revocation Semantics</name>

<t>Revoking an Authorization-Server-Issued Delegated Authorization Token invalidates every chain rooted in that token. Revoking a Client-Issued Delegated Authorization Token invalidates every chain containing that token, including every chain in which another token has been appended after it. Revocation of one client-issued token does not by itself revoke its parent, its siblings, or another token bound to the same key. An authorization server accepting revocation of a client-issued token <bcp14>MUST</bcp14> retain sufficient status information to recognize that token when it appears at any position in a subsequently evaluated chain.</t>

<t>A successful revocation request records revocation state at the authorization server; it does not by itself deliver that state to resource servers performing offline validation. This specification does not define a revocation-status distribution mechanism. Resource servers performing offline validation cannot learn of a revocation until they receive that status through a mechanism defined outside this specification. Short token lifetimes bound exposure when no online or promptly updated status mechanism is available.</t>

</section>
</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>Delegated Authorization Tokens can reduce authorization server visibility. After issuing the root token, the authorization server need not observe each client-to-client delegation or protected resource request. This prevents the authorization server from automatically learning every delegate client, downstream resource, access time, or multi-hop call pattern.</t>

<t>The ordered chain is visible to every resource server to which it is presented. Claims in the root and intermediate tokens can disclose the authorization server, subject, client relationships, audiences, permissions, and workflow structure. Clients <bcp14>SHOULD</bcp14> disclose a chain only to an intended audience, <bcp14>SHOULD</bcp14> minimize claims and chain length, and <bcp14>SHOULD</bcp14> use TLS for every transmission.</t>

<t>A stable <spanx style="verb">cnf.jkt</spanx>, root <spanx style="verb">jti</spanx>, or other persistent claim can enable correlation across requests and resource servers. Token issuers <bcp14>SHOULD</bcp14> avoid unnecessary identifiers and <bcp14>SHOULD</bcp14> use audience-specific, short-lived child tokens where unlinkability is important. DPoP proofs contain public keys and unique proof identifiers; implementations <bcp14>SHOULD</bcp14> follow the privacy guidance in <xref target="RFC9449"/>.</t>

<t>Local delegation changes the entities that have audit visibility; it does not eliminate such visibility. Deployments requiring delegation-event records can maintain privacy-conscious logs at delegating clients and resource servers. Such logs <bcp14>MUST</bcp14> be protected because complete chains and authorization details can contain sensitive information.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This specification extends the OAuth threat model by allowing clients to issue constrained child tokens. Implementations <bcp14>MUST</bcp14> follow OAuth security best current practice <xref target="RFC9700"/>, JSON Web Token best current practice <xref target="RFC8725"/>, and the DPoP security considerations in <xref target="RFC9449"/>.</t>

<section anchor="resource-owner-authorization-and-delegation"><name>Resource Owner Authorization and Delegation</name>

<t>Local delegation changes the set of parties that can exercise an authorization without another interaction with the authorization server. For grants involving a resource owner, the authorization server <bcp14>MUST</bcp14> distinguish authorization for protected resource access from authorization for client-issued delegation.</t>

<t>The authorization server determines how delegation is presented to the resource owner. The presentation <bcp14>SHOULD</bcp14> make clear that the client can authorize other clients without another interaction with the authorization server or resource owner. It <bcp14>SHOULD</bcp14> also communicate the permissions, audiences, lifetime, and maximum delegation depth covered by the authorization decision, and <bcp14>SHOULD</bcp14> avoid implying that the authorization server will observe or approve each child issuance.</t>

<t>A client <bcp14>MUST NOT</bcp14> represent possession of a Delegated Authorization Token as resource owner approval of a particular delegate client beyond the authorization and depth encoded in the validated chain.</t>

</section>
<section anchor="protection-of-client-private-keys"><name>Protection of Client Private Keys</name>

<t>A client private key authorizes both use of the current leaf token and creation of child tokens when delegation remains available. Clients <bcp14>MUST</bcp14> protect such keys in a manner appropriate to the granted authority, restrict signing operations to authorized code, and erase obsolete keys when operationally possible. Private JWK members <bcp14>MUST</bcp14> never appear in a token or DPoP protected header.</t>

<t>Using one key for token issuance and DPoP simplifies continuity but increases the impact of compromise. Implementations <bcp14>SHOULD</bcp14> use non-exportable keys and narrowly scoped signing APIs that distinguish token-signing and proof-signing inputs.</t>

</section>
<section anchor="compromise-of-a-client-key"><name>Compromise of a Client Key</name>

<t>An attacker controlling a bound private key can use any unexpired chain ending at that key and can issue child tokens within its effective authorization and delegation depth. Short token lifetimes, finite depth, narrow audiences, minimal permissions, key rotation, and revocation reduce this exposure.</t>

<t>Revoking only a child key does not invalidate signatures already created by an uncompromised parent unless the deployment has a revocation mechanism that resource servers consult. Incident response should identify all affected chains and their descendants.</t>

</section>
<section anchor="delegated-authorization-token-replay"><name>Delegated Authorization Token Replay</name>

<t>A stolen chain cannot be used without the leaf private key, but replay remains possible after simultaneous compromise of chain and key or through a signing oracle. Resource servers <bcp14>MUST</bcp14> require DPoP, validate <spanx style="verb">ath</spanx>, enforce proof freshness, and apply replay detection as described by <xref target="RFC9449"/>. High-value operations can additionally require server nonces or application-level transaction binding.</t>

</section>
<section anchor="dpop-proof-replay"><name>DPoP Proof Replay</name>

<t>A DPoP proof is bound to the HTTP method, target URI, complete chain, and signing key. Resource servers <bcp14>MUST</bcp14> validate those bindings and <bcp14>SHOULD</bcp14> store recently seen <spanx style="verb">jti</spanx> values for the proof acceptance window. They <bcp14>SHOULD</bcp14> use DPoP nonces where clock skew, pre-generated proofs, or active replay are material threats.</t>

</section>
<section anchor="algorithm-confusion"><name>Algorithm Confusion</name>

<t>Verifiers <bcp14>MUST</bcp14> enforce an allowlist of asymmetric algorithms, ensure algorithm and key-type compatibility, reject <spanx style="verb">none</spanx> and symmetric MACs, enforce the canonical ECDSA signature requirement in Section 5.2.3, and obtain root verification keys only from trusted authorization server configuration. A token-supplied client JWK is trusted only after its thumbprint is matched to the preceding <spanx style="verb">cnf.jkt</spanx>; it <bcp14>MUST NOT</bcp14> be treated as an independently trusted identity key.</t>

</section>
<section anchor="token-chain-substitution"><name>Token Chain Substitution</name>

<t>A client-issued token does not contain a parent identifier. Consequently, it can be valid in any chain in which the preceding token binds the same signing key and the effective restrictions of the chain encompass the child token's restrictions. This is an intentional property of the initial format.</t>

<t>The DPoP <spanx style="verb">ath</spanx> over the exact complete chain prevents an attacker from substituting, removing, adding, or reordering tokens in a captured protected resource request without obtaining a new proof from the leaf key. Verifiers <bcp14>MUST</bcp14> validate every adjacent pair and <bcp14>MUST NOT</bcp14> accept an unordered set of tokens.</t>

<t>A delegating client that needs a child token to be usable only with one particular parent chain <bcp14>MUST</bcp14> use distinct parent keys or apply an application-specific restriction. Future specifications can define stronger parent binding.</t>

</section>
<section anchor="invalid-downscoping"><name>Invalid Downscoping</name>

<t>The security of local delegation depends on rejecting any expansion of authorization. Verifiers <bcp14>MUST</bcp14> compute effective restrictions from the root in order and fail closed when containment cannot be established. Omission of <spanx style="verb">scope</spanx> or <spanx style="verb">authorization_details</spanx> discards that permission component for the child and its descendants; omission of other restrictions has the claim-specific effect defined in this specification.</t>

<t>Specifications defining authorization detail types <bcp14>SHOULD</bcp14> define deterministic semantic subset rules. Comparing raw JSON text or merely matching <spanx style="verb">type</spanx> values is generally insufficient.</t>

</section>
<section anchor="excessive-or-unbounded-delegation-depth"><name>Excessive or Unbounded Delegation Depth</name>

<t>Every root token has a finite <spanx style="verb">max_delegation_depth</spanx>, but this does not replace implementation limits. Authorization servers <bcp14>MUST</bcp14> enforce a configured maximum depth, delegating clients <bcp14>SHOULD</bcp14> minimize remaining depth, and every implementation <bcp14>MUST</bcp14> limit chain count and serialized size. Such limits mitigate denial of service from expensive signature and authorization comparisons.</t>

</section>
<section anchor="audience-confusion"><name>Audience Confusion</name>

<t>Authorization servers <bcp14>MUST</bcp14> set an explicit root audience. A client that explicitly narrows <spanx style="verb">aud</spanx> in a child <bcp14>SHOULD</bcp14> select the smallest audience set suitable for the delegated task. Resource servers <bcp14>MUST</bcp14> verify that they are an effective audience.</t>

</section>
<section anchor="authorization-details-comparison"><name>Authorization Details Comparison</name>

<t>An authorization detail can have semantics that are not evident from its generic JSON structure. The specification registering or defining its <spanx style="verb">type</spanx> <bcp14>SHOULD</bcp14> define containment for delegation. A verifier that does not implement that rule <bcp14>MUST</bcp14> reject a chain that requires the comparison. Implementations <bcp14>MUST</bcp14> account for omitted members, defaults, arrays, wildcards, resource identifiers, and actions according to type semantics.</t>

</section>
<section anchor="revocation-security"><name>Revocation Security</name>

<t>Offline validation does not provide prompt revocation by itself. A successful revocation request records state at the authorization server but does not ensure that a resource server has received that state. Deployments requiring prompt revocation <bcp14>MUST</bcp14> use short-lived tokens together with an online or promptly updated status-distribution mechanism defined outside this specification.</t>

<t>Revocation endpoints and status-distribution mechanisms can reveal subjects, authorization relationships, and delegation topology. They <bcp14>MUST</bcp14> authenticate authorized participants, protect integrity and confidentiality as applicable, and limit information disclosure.</t>

<t>The DPoP proof on a revocation request prevents a party that merely observes a chain, including a resource server, from revoking its target. Authorization servers <bcp14>MUST</bcp14> apply DPoP freshness, replay-detection, and nonce requirements as they do for other DPoP-protected endpoint requests.</t>

</section>
</section>
<section anchor="operational-considerations"><name>Operational Considerations</name>

<section anchor="key-rotation"><name>Key Rotation</name>

<t>Authorization server signing-key rotation follows normal JWT and JWKS practices. Old verification keys need to remain available for as long as valid root tokens signed with them can be presented.</t>

<t>A client rotates its bound key by obtaining or receiving a new token whose <spanx style="verb">cnf.jkt</spanx> identifies the new key. Existing tokens cannot be rewritten. During a transition, a client might need to retain old private keys until all corresponding chains expire or are revoked. Consistent with Section 4.3, clients <bcp14>SHOULD</bcp14> generate a distinct bound key for each token; limited key reuse <bcp14>SHOULD</bcp14> be confined to tokens in the same usage scenario.</t>

</section>
<section anchor="token-lifetimes"><name>Token Lifetimes</name>

<t>Authorization servers <bcp14>MUST</bcp14> issue finite root lifetimes and enforce a configured maximum lifetime. They <bcp14>SHOULD</bcp14> use the shortest lifetime suitable for the delegated task, and delegating clients <bcp14>SHOULD</bcp14> shorten lifetimes further to match delegated tasks. Long-lived root tokens magnify key compromise and revocation risks. Effective expiration is the earliest expiration in the chain, regardless of omitted child claims.</t>

</section>
<section anchor="token-size"><name>Token Size</name>

<t>Every delegation appends another compact JWT, so chain size grows linearly with depth. Authorization details and public JWK headers can be substantial. Implementations need to account for HTTP header limits imposed by clients, proxies, gateways, and servers. A deployment can require a smaller maximum than the protocol syntax permits.</t>

</section>
<section anchor="chain-length-limits"><name>Chain Length Limits</name>

<t>Every parser and verifier <bcp14>MUST</bcp14> enforce limits on the token count, total serialized size, individual token size, and signature-verification cost. It <bcp14>SHOULD</bcp14> reject an oversized chain before performing expensive cryptographic work. Deployments <bcp14>SHOULD</bcp14> document these limits so that clients can avoid unusable delegation paths.</t>

</section>
<section anchor="caching-and-revocation"><name>Caching and Revocation</name>

<t>A resource server <bcp14>MAY</bcp14> cache validated signatures and effective restrictions keyed by a cryptographic digest of the exact chain. Cache entries <bcp14>MUST</bcp14> be invalidated or expire according to the effective expiration time, authorization server key status, local policy changes, and revocation information available through any configured status mechanism. DPoP proof freshness and replay checks are per request and <bcp14>MUST NOT</bcp14> be bypassed by chain-validation caching.</t>

</section>
<section anchor="logging-and-audit"><name>Logging and Audit</name>

<t>Useful audit events include root issuance, local delegation, chain validation outcome, effective authorization, and protected resource decisions. Logs <bcp14>SHOULD</bcp14> identify chains by a one-way digest rather than store complete credentials. Implementations <bcp14>MUST</bcp14> redact <spanx style="verb">Authorization</spanx> and <spanx style="verb">DPoP</spanx> header values from routine logs and protect any recorded authorization details or subject identifiers.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="delegated-authorization-token-media-type"><name>Delegated Authorization Token Media Type</name>

<t>This specification requests registration of the following media type in the "Media Types" registry:</t>

<t><list style="symbols">
  <t>Type name: application</t>
  <t>Subtype name: da+jwt</t>
  <t>Required parameters: n/a</t>
  <t>Optional parameters: n/a</t>
  <t>Encoding considerations: 8bit; Delegated Authorization Token values are encoded as a series of base64url-encoded values separated by period (<spanx style="verb">.</spanx>) characters</t>
  <t>Security considerations: Section 12 of this document</t>
  <t>Interoperability considerations: n/a</t>
  <t>Published specification: this document</t>
  <t>Applications that use this media type: OAuth clients, authorization servers, and resource servers</t>
  <t>Fragment identifier considerations: n/a</t>
  <t>Additional information: n/a</t>
  <t>Person and email address to contact for further information: IETF OAuth Working Group, oauth@ietf.org</t>
  <t>Intended usage: COMMON</t>
  <t>Restrictions on usage: n/a</t>
  <t>Author: IETF</t>
  <t>Change controller: IETF</t>
</list></t>

<t>The <spanx style="verb">typ</spanx> value <spanx style="verb">da+jwt</spanx> is the media type without the <spanx style="verb">application/</spanx> prefix, as recommended by <xref target="RFC7515"/>.</t>

</section>
<section anchor="oauth-access-token-type"><name>OAuth Access Token Type</name>

<t>This specification requests registration in the "OAuth Access Token Types" registry:</t>

<t><list style="symbols">
  <t>Name: <spanx style="verb">DA</spanx></t>
  <t>Additional Token Endpoint Response Parameters: n/a</t>
  <t>HTTP Authentication Scheme(s): <spanx style="verb">DA</spanx></t>
  <t>Change Controller: IETF</t>
  <t>Reference: this document</t>
</list></t>

</section>
<section anchor="oauth-token-type-hint"><name>OAuth Token Type Hint</name>

<t>This specification requests registration in the "OAuth Token Type Hints" registry. Following the naming convention of existing values such as <spanx style="verb">access_token</spanx> and <spanx style="verb">refresh_token</spanx>, the registered value uses lowercase words separated by underscores:</t>

<t><list style="symbols">
  <t>Hint Value: <spanx style="verb">delegated_authorization_token</spanx></t>
  <t>Change Controller: IETF</t>
  <t>Reference: this document</t>
</list></t>

<t>The hint indicates that the <spanx style="verb">token</spanx> parameter contains a complete Delegated Authorization Token Chain in the serialization defined by this specification.</t>

</section>
<section anchor="http-authentication-scheme"><name>HTTP Authentication Scheme</name>

<t>This specification requests registration in the "HTTP Authentication Scheme Registry":</t>

<t><list style="symbols">
  <t>Authentication Scheme Name: <spanx style="verb">DA</spanx></t>
  <t>Reference: this document</t>
  <t>Notes: Presents an ordered Delegated Authorization Token Chain and requires a DPoP proof.</t>
</list></t>

</section>
<section anchor="jwt-claims-registration"><name>JWT Claims Registration</name>

<t>This specification requests registration in the "JSON Web Token Claims" registry:</t>

<t><list style="symbols">
  <t>Claim Name: <spanx style="verb">max_delegation_depth</spanx></t>
  <t>Claim Description: Maximum number of further delegated authorization levels, from 0 to 65535</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): this document</t>
</list></t>

<t>The <spanx style="verb">cnf</spanx>, <spanx style="verb">scope</spanx>, <spanx style="verb">aud</spanx>, <spanx style="verb">exp</spanx>, <spanx style="verb">nbf</spanx>, <spanx style="verb">iss</spanx>, <spanx style="verb">sub</spanx>, <spanx style="verb">iat</spanx>, and <spanx style="verb">jti</spanx> names are already registered and are not re-registered by this document.</t>

</section>
<section anchor="oauth-parameters-registration"><name>OAuth Parameters Registration</name>

<t>This specification requests registration in the "OAuth Parameters" registry:</t>

<t><list style="symbols">
  <t>Name: <spanx style="verb">delegation</spanx></t>
  <t>Parameter Usage Location: authorization request, token request</t>
  <t>Change Controller: IETF</t>
  <t>Reference: this document</t>
</list></t>

<t>The parameter value <spanx style="verb">true</spanx> requests issuance of a Delegated Authorization Token.</t>

<t>This specification also requests registration of the following parameter:</t>

<t><list style="symbols">
  <t>Name: <spanx style="verb">max_delegation_depth</spanx></t>
  <t>Parameter Usage Location: authorization request, token request</t>
  <t>Change Controller: IETF</t>
  <t>Reference: this document</t>
</list></t>

<t>The parameter optionally requests an exact finite delegation depth.</t>

<t>This specification also requests registration in the "OAuth Authorization Server Metadata" registry:</t>

<t><list style="symbols">
  <t>Metadata Name: <spanx style="verb">delegated_authorization_token_supported</spanx></t>
  <t>Metadata Description: Boolean indicating support for issuance of Delegated Authorization Tokens</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): this document</t>
</list></t>

<t>and:</t>

<t><list style="symbols">
  <t>Metadata Name: <spanx style="verb">delegated_authorization_signing_alg_values_supported</spanx></t>
  <t>Metadata Description: JWS algorithms supported for Authorization-Server-Issued Delegated Authorization Tokens</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): this document</t>
</list></t>

<t>and:</t>

<t><list style="symbols">
  <t>Metadata Name: <spanx style="verb">delegated_authorization_max_depth</spanx></t>
  <t>Metadata Description: Greatest delegation depth the authorization server can issue</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): this document</t>
</list></t>

</section>
<section anchor="protected-resource-metadata-registration"><name>Protected Resource Metadata Registration</name>

<t>This specification requests registration in the "OAuth Protected Resource Metadata" registry:</t>

<t><list style="symbols">
  <t>Metadata Name: <spanx style="verb">delegated_authorization_client_signing_alg_values_supported</spanx></t>
  <t>Metadata Description: JWS algorithms accepted for Client-Issued Delegated Authorization Token signatures</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): this document</t>
</list></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC6749">
  <front>
    <title>The OAuth 2.0 Authorization Framework</title>
    <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6749"/>
  <seriesInfo name="DOI" value="10.17487/RFC6749"/>
</reference>
<reference anchor="RFC6750">
  <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>
<reference anchor="RFC7009">
  <front>
    <title>OAuth 2.0 Token Revocation</title>
    <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
    <author fullname="S. Dronia" initials="S." surname="Dronia"/>
    <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
    <date month="August" year="2013"/>
    <abstract>
      <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7009"/>
  <seriesInfo name="DOI" value="10.17487/RFC7009"/>
</reference>
<reference anchor="RFC7515">
  <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="RFC7517">
  <front>
    <title>JSON Web Key (JWK)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7517"/>
  <seriesInfo name="DOI" value="10.17487/RFC7517"/>
</reference>
<reference anchor="RFC7519">
  <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="RFC7638">
  <front>
    <title>JSON Web Key (JWK) Thumbprint</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7638"/>
  <seriesInfo name="DOI" value="10.17487/RFC7638"/>
</reference>
<reference anchor="RFC7800">
  <front>
    <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="April" year="2016"/>
    <abstract>
      <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7800"/>
  <seriesInfo name="DOI" value="10.17487/RFC7800"/>
</reference>
<reference anchor="RFC8414">
  <front>
    <title>OAuth 2.0 Authorization Server Metadata</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <date month="June" year="2018"/>
    <abstract>
      <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8414"/>
  <seriesInfo name="DOI" value="10.17487/RFC8414"/>
</reference>
<reference anchor="RFC8707">
  <front>
    <title>Resource Indicators for OAuth 2.0</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8707"/>
  <seriesInfo name="DOI" value="10.17487/RFC8707"/>
</reference>
<reference anchor="RFC8725">
  <front>
    <title>JSON Web Token Best Current Practices</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="225"/>
  <seriesInfo name="RFC" value="8725"/>
  <seriesInfo name="DOI" value="10.17487/RFC8725"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="RFC9396">
  <front>
    <title>OAuth 2.0 Rich Authorization Requests</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Richer" initials="J." surname="Richer"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <date month="May" year="2023"/>
    <abstract>
      <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9396"/>
  <seriesInfo name="DOI" value="10.17487/RFC9396"/>
</reference>
<reference anchor="RFC9449">
  <front>
    <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="D. Waite" initials="D." surname="Waite"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9449"/>
  <seriesInfo name="DOI" value="10.17487/RFC9449"/>
</reference>
<reference anchor="RFC9700">
  <front>
    <title>Best Current Practice for OAuth 2.0 Security</title>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="A. Labunets" initials="A." surname="Labunets"/>
    <author fullname="D. Fett" initials="D." surname="Fett"/>
    <date month="January" year="2025"/>
    <abstract>
      <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="240"/>
  <seriesInfo name="RFC" value="9700"/>
  <seriesInfo name="DOI" value="10.17487/RFC9700"/>
</reference>
<reference anchor="RFC9728">
  <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="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>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8693">
  <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>



    </references>

</references>


<?line 1102?>

<section anchor="protocol-flow-examples"><name>Protocol Flow Examples</name>

<section anchor="authorization-server-issues-a-delegated-authorization-token"><name>Authorization Server Issues a Delegated Authorization Token</name>

<t>The client creates a DPoP proof with its key and requests a token after receiving an authorization code:</t>

<figure><sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2Iiwiam...

grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb&
delegation=true&
max_delegation_depth=2
]]></sourcecode></figure>

<t>After validating the grant and proof, the authorization server returns a root token bound to the proof key:</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "eyJ0eXAiOiJkYStqd3QiLCJhbGciOiJFUzI1NiJ9...",
  "token_type": "DA",
  "expires_in": 3600,
  "scope": "records:read records:write"
}
]]></sourcecode></figure>

</section>
<section anchor="one-level-client-delegation"><name>One-Level Client Delegation</name>

<t>Client A holds the root token, whose <spanx style="verb">cnf.jkt</spanx> identifies Client A's key. After authenticating Client B's public key, Client A:</t>

<t><list style="numbers" type="1">
  <t>computes the thumbprint of Client B's key;</t>
  <t>creates a child with <spanx style="verb">scope</spanx> narrowed to <spanx style="verb">records:read</spanx>;</t>
  <t>puts Client A's public JWK in the protected header;</t>
  <t>signs the child with Client A's private key; and</t>
  <t>delivers <spanx style="verb">root-token~child-token</spanx> to Client B.</t>
</list></t>

<t>The thumbprint of the child's protected <spanx style="verb">jwk</spanx> equals the root's <spanx style="verb">cnf.jkt</spanx>, while the child's <spanx style="verb">cnf.jkt</spanx> identifies Client B's key.</t>

</section>
<section anchor="multi-level-client-delegation"><name>Multi-Level Client Delegation</name>

<t>Client B can repeat the operation for Client C when the child token's effective depth permits it. The resulting chain is:</t>

<figure><artwork><![CDATA[
root-token~client-a-child-token~client-b-child-token
]]></artwork></figure>

<t>At each boundary:</t>

<figure><artwork><![CDATA[
thumbprint(child protected header jwk) = parent payload cnf.jkt
]]></artwork></figure>

<t>The final child in this example has <spanx style="verb">max_delegation_depth</spanx> equal to zero. Client C can use it to access the protected resource but cannot create another valid child.</t>

</section>
<section anchor="protected-resource-request-with-dpop"><name>Protected Resource Request with DPoP</name>

<t>Client C computes <spanx style="verb">ath</spanx> over the exact ASCII chain serialization, creates a DPoP proof for the request, and signs it with the key identified by the leaf <spanx style="verb">cnf.jkt</spanx>:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET /records/123 HTTP/1.1
Host: api.example.com
Authorization: DA eyJ...root...~eyJ...child-a...~eyJ...child-b...
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2Iiwiam...
]]></sourcecode></figure>

<t>The resource server validates the root signature, both client signatures, both key-continuity relationships, all cumulative restrictions, the leaf key binding, and the DPoP request binding.</t>

</section>
</section>
<section anchor="delegated-authorization-token-examples"><name>Delegated Authorization Token Examples</name>

<t>The following examples show decoded protected headers and payloads for readability. They are signed and transmitted as JWS Compact Serialization. Placeholder public-key coordinates, thumbprints, and signatures are illustrative rather than cryptographically complete.</t>

<section anchor="authorization-server-issued-delegated-authorization-token"><name>Authorization-Server-Issued Delegated Authorization Token</name>

<figure><sourcecode type="json"><![CDATA[
{
  "protected": {
    "typ": "da+jwt",
    "alg": "ES256",
    "kid": "as-key-2026-01"
  },
  "payload": {
    "iss": "https://as.example.com",
    "sub": "user-1234",
    "aud": ["https://api.example.com"],
    "iat": 1784000000,
    "nbf": 1784000000,
    "exp": 1784003600,
    "jti": "root-7F3A",
    "scope": "records:read records:write",
    "max_delegation_depth": 2,
    "cnf": {
      "jkt": "l8xQwCzP2N6pG9kR4mV7sH1bD5fJ0aY3uE6iT9oA2cM"
    }
  },
  "signature": "<authorization-server-signature>"
}
]]></sourcecode></figure>

<t>The root token's signature under an authorization server key establishes the root. The token permits two further levels and binds the root authorization to Client A's key.</t>

</section>
<section anchor="client-issued-delegated-authorization-token"><name>Client-Issued Delegated Authorization Token</name>

<figure><sourcecode type="json"><![CDATA[
{
  "protected": {
    "typ": "da+jwt",
    "alg": "ES256",
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "<client-a-public-x>",
      "y": "<client-a-public-y>"
    }
  },
  "payload": {
    "aud": ["https://api.example.com"],
    "exp": 1784001800,
    "scope": "records:read",
    "max_delegation_depth": 1,
    "cnf": {
      "jkt": "b3N7vK2sR8dF1qW5xC9mL4pH6tY0aE7uJ2iG8oZ1cQk"
    }
  },
  "signature": "<client-a-signature>"
}
]]></sourcecode></figure>

<t>The protected <spanx style="verb">jwk</spanx> is Client A's public key, and its thumbprint equals the root token's <spanx style="verb">cnf.jkt</spanx>. The payload binds the child token to Client B and narrows the scope, lifetime, and delegation depth.</t>

</section>
<section anchor="multi-level-delegated-authorization-token-chain"><name>Multi-Level Delegated Authorization Token Chain</name>

<t>A second client-issued token can be appended:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "protected": {
    "typ": "da+jwt",
    "alg": "ES256",
    "jwk": {
      "kty": "EC",
      "crv": "P-256",
      "x": "<client-b-public-x>",
      "y": "<client-b-public-y>"
    }
  },
  "payload": {
    "aud": ["https://api.example.com"],
    "exp": 1784000900,
    "scope": "records:read",
    "max_delegation_depth": 0,
    "cnf": {
      "jkt": "w5T1gM9rA3kX7pL2dV8nC4sH0qB6yF1uJ9iE5oZ2cRk"
    }
  },
  "signature": "<client-b-signature>"
}
]]></sourcecode></figure>

<t>The protected <spanx style="verb">jwk</spanx> is Client B's public key and its thumbprint equals the preceding token's <spanx style="verb">cnf.jkt</spanx>. The new <spanx style="verb">cnf.jkt</spanx> identifies Client C's key. On the wire, the three compact JWTs are joined with <spanx style="verb">~</spanx> in root-to-leaf order.</t>

</section>
</section>
<section anchor="negative-validation-examples"><name>Negative Validation Examples</name>

<t>The following examples describe modifications to an otherwise valid chain and the required validation result. They are validation examples, not serialized cryptographic test vectors.</t>

<texttable>
      <ttcol align='left'>Modification</ttcol>
      <ttcol align='left'>Required result</ttcol>
      <c>A child <spanx style="verb">aud</spanx> contains an audience absent from the effective parent audience.</c>
      <c>Reject the chain for audience expansion.</c>
      <c>A token contains an empty <spanx style="verb">aud</spanx> array.</c>
      <c>Reject the chain because an explicit <spanx style="verb">aud</spanx> claim must identify at least one audience.</c>
      <c>A child <spanx style="verb">exp</spanx> is later than the effective parent expiration time.</c>
      <c>Reject the chain for expiration-time expansion.</c>
      <c>A child <spanx style="verb">nbf</spanx> is earlier than the effective parent not-before time.</c>
      <c>Reject the chain for not-before-time expansion.</c>
      <c>The chain contains more client-issued tokens than permitted by the root <spanx style="verb">max_delegation_depth</spanx>.</c>
      <c>Reject the chain for excessive delegation depth.</c>
      <c>The JWK thumbprint of a child's protected <spanx style="verb">jwk</spanx>, computed according to <xref target="RFC7638"/>, does not equal the preceding token's <spanx style="verb">cnf.jkt</spanx>.</c>
      <c>Reject the chain for broken key continuity.</c>
      <c>The DPoP proof key does not match the leaf token's <spanx style="verb">cnf.jkt</spanx>.</c>
      <c>Reject the protected resource request.</c>
      <c>Two tokens in the chain are reordered.</c>
      <c>Reject the chain because its signatures, key continuity, or cumulative restrictions do not validate in that order.</c>
      <c>The DPoP <spanx style="verb">ath</spanx> does not equal the hash of the exact received chain serialization.</c>
      <c>Reject the protected resource request.</c>
      <c>A protected header or payload contains a duplicate JSON member name.</c>
      <c>Reject the chain during parsing.</c>
      <c>A child contains <spanx style="verb">authorization_details</spanx> for which the verifier cannot establish semantic containment in the effective parent authorization details.</c>
      <c>Reject the chain because containment cannot be established.</c>
</texttable>

</section>
<section anchor="comparison-with-related-oauth-mechanisms"><name>Comparison with Related OAuth Mechanisms</name>

<section anchor="oauth-token-exchange"><name>OAuth Token Exchange</name>

<t>OAuth Token Exchange <xref target="RFC8693"/> lets a client request another token from an authorization server or security token service. That model provides centralized policy, issuance records, and potentially prompt revocation checks, but reveals each exchange to the issuing service and requires an online round trip.</t>

<t>This specification instead authorizes the client controlling the key bound to a token to create constrained child tokens locally. The approaches are complementary; a deployment can use token exchange when centralized issuance is required and local delegation for bounded offline workflows.</t>

</section>
<section anchor="dpop-bound-access-tokens"><name>DPoP-Bound Access Tokens</name>

<t>DPoP <xref target="RFC9449"/> binds an OAuth access token to a client key and binds each proof to an HTTP request. This specification reuses DPoP for authorization server key binding and protected resource access, but adds client-issued token chains and cumulative downscoping. It uses the <spanx style="verb">DA</spanx> authentication scheme and computes <spanx style="verb">ath</spanx> over the complete ordered chain.</t>

</section>
<section anchor="rich-authorization-requests"><name>Rich Authorization Requests</name>

<t>Rich Authorization Requests <xref target="RFC9396"/> provide structured <spanx style="verb">authorization_details</spanx>. This specification carries those details through a delegation chain and requires every explicit child value to be no broader than the effective parent value. Each authorization detail type needs semantic containment rules before it can be safely delegated.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+W965IbR5Im+h9PkadkM+zWAFDxThZbvVMiKYkUJbJZpeGo
x8ZYASAApCqRic5MVBHdop7lPMt5sjW/RXhERgIoSr07ZqfNdodCAZlx8fDw
y+efj0ajwaDN28KeZLden27aZXZnfJw9s4VdmNbOMvioqvO/mzavylsDM5nU
9uoku+W+MYJv3BrMqmlpVvCUWW3m7ajIR5XZtMvRzH3R6EeNCtPapr01GDSt
KWfvTVGV9iRr640dXC9OMvzxIF/X+FnT3jk+fnx8Z9BsJqu8afKqbLdre5K9
eH7+9WBq2pOsaWeDwZUtN/ZkkGWLutqsT7J33wyyjL75rqov83KRfQN/GWTZ
yuQFv+bfc9vOx1W9GGSZqafLk2zZtuvm5IsvZqY1bW2ml7Yey5e+uF58gT/7
wkyqTfsFvC1vl5vJSVbkm+lyU06X+Rf75j/IMloB/zL/6zE9cJxXe5/zxWHL
PV62q2IwoM9OBqMsL5uT7O04e5UPsox27u2mmi5tSR9V9eIk+3Zjrm2evSjb
cfamtdmrdjbIMktLV+Tjmn7x78vR2tRtaetmPK1W8vRvx9k7Uy7c8781+WJj
yoV8uv8V16ZcjJf8s3GzzG0xK8zk35f4I/2upzCTjXvVU1rH7I1tbc1/0a87
t9NlWRXVIreNnpFsQOIN58Faned2aw5eqlf5mH6gnzsoq3pl2vwKBfbt108f
PLz32P3z/jH/8+HxsXz68P7t+/6fD/0/3Rce3H0k/3x0LE94dO/2Pfnnw+OH
7p935GGPb9+W7z6++/iB/POeG87jh+5hjx/eeXQyGOTlPBr9oweP754MBqPR
KDOTBg5NOxicL/Mma9Z2ms/zKQpiNrPzvLRNn4rJzqtLWzbD7NJuR5NqU86y
Fj/J2qVpM1uaSWEzU2akrKZFbss2a6tMBD8z2bQqYQB5aWdZs5k0ts2qeZa3
TRacCfiVKat2aWt5znXeLqtNC09ozbQFfdEubfSzxtZXts7mVZ1ZM13Km+GU
Zadl+st502xsgw+rq6qlOWWmnGWTvJw1WY5zMDKOS7sdZ+cwYf5gasps01h8
AK3Kpd1mNsfBt1W2rqsrm62rprGoHbNrOMlmOoX/LBeZgW+0dgrrXdum2tRT
m1X40yZflJnJ5puaHwYjk5XPjF9YGsqthkb3Vp5CM2yyK1PkM/gejLGqZ7a2
vHfZdGnyckizt01b51NYmybLV+uqsbMMNvbK1lu1lFnT2vUQV8hkz95Ub2AC
1RxHa2fZZItPg0VwQ4UPCmvm9NIxyeIqn80KOxh8BkezrmYbfPVgQOJD4tT4
hW+rrJq0Jo+3EVYCFzOxjs04e1FmzbZp7arJphVPqppnZmHLthniEuVT29B8
SOLycmbXtpzZsi22WbW2NR4G/HlJP2uVAKzMNiutpT3hodlYfEEQbA0nM6vK
YpuBVoZxaBm2s+y6qi/H2Tf5lch3Y6dVOXNPwf3LF3lpCpk17SMIjP6jk4h1
nV/B1sN+LGpTtk1mP6DsXbk3t1uc/bq2VzA9fBK/cV5Xq2hB3BmGMUbHDGVj
vFO7mFh/ZFNTFBaFaZfi2XGCy7zNTVFs5Sw3m+kyM/x0VCWhTvKHG2bqv5at
N5Min+JaLW3Bsux2Gs691ce+hZNcVFP/brftO6eSPL3j7DmsJf3HCJ8mCwRr
SYcLtCAOWm9rcMzWtZ3aGYoP/HYIPw6+0FUaftZ0CmBqKKS1nW2mNqFnp1V5
Zbf+sPuXoj4ZDwanbp0qONxFIQKdHPierQ90LC9JKSoWDtF1lV2bLZx22pik
4kS9q0S1BhOgbOBcrvK2tbMhnKKcnsCHK6mcJ1uYcGNLdwuBaihsa7VSzdpq
YfH1uGmBqvzHP/gW//gRhaqxML0mqy0onJJOvlnJHo1QGGHF1iavx4PBZ59l
31ctLCRMBPbsm8oUDZw7m63sdGnKvFnB1udlCwcXVvlkMPg8K2zrVaq/mIM1
l6t2ljfTosJLCm5ovXNVnZmstpsG7/yJNTWoutqCishN8WTwebYyl7Z7d0zr
7bqtFrVZL3M6N6Zt63yyafFJLKM9srNP2OG1tmw2taVjizuLly7o980styWq
erwPQeutbZ1XM1b+apQzuwZtIedgYrPS1HV1bWdP3BrW4S3rL1kTzBdF4cbG
S7RsT2CAg89RaaUk0l0FN1q94Eb+7LPsx8ZmT01jWY7mVVFU1/DrsipHziTG
gziFr2V5UWzgKmgtHK7aki4cBlaeWou8gd/ONwW+7rPsDO4HU+DFd/oiO8Ur
eTA4LTNbtrZe13mDllBezvKrfLaBa40VAexMPV1afDsI44KuR9DVVVXP8hI8
OLqB+A104+PywuEFb3KYNdW8vTY1aMUrW1TrlS3bYQbOX14uUB/4pYWjVMPd
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
/qGYxZmj8U1vc5TecdP9lbvaL+K1UMQhfDfWOsKqBE1hWQJuI3ankVKOiAcK
Uy9sLUQJ8QyqlcpTCwt076ipjK5h1wbbloe2SKyopnlDGoELw6I2fEV1nWFw
CVnjYjhxWOxrou1LDVNeKJiAKxdGFRZZqlPy3Sxu4vg66J0g6pNrpKFPJGeI
9DG+9y2MqPcsoghcA93JxGZiJb/dIbiqM0cZXnEppKBZyxLsKhEMd8kXBKYo
jTqjq+1805iCTWyV4fFqhqZKm2REqygepDncb0GJcGKQYOldmUKTKKJCWLdL
TTEBauaggiUJFqeXi67UdQi8881xo6bewrJDMwqhRmqundgP06nvjWleyPsU
r0ES7v7o4fFDbrHnTYyhw95OoHd97mh3G9WKtQkKZHtzzx2N4pqYpca4TyNy
LgsTd50KOJ6Lk4uQhjlgBNdxQdXf1Iu2azWvtCrVGioEVwjU6uaVeRRSdSad
XcX52fGqXpOTDIccOzmxz+KoFEdJM6XTZDgmS0vyikFpIkgBVdjh0eKQG1TI
oaia4pDkpzuVSDfGOaoLf4Y08YZpxOwhe4Y8eUDNl978pYuPWMaYgSa2C+ua
Erc9HsftY6ZZx01ypqeqHGxch1jBItNSxhkTuu/srEOAGZ5sEhSMcZq+uceB
SFwHicIdSFYWMt11WiKed+YTQlj2KpUeIwYjgZ+icAJyojYg2zwMGqNQZGgV
jWjxggKxnuwCsdowcYBJI0b8eTxNTlB+FC2qiL6QCijlryhnDyPFdJnnztM9
tQPnvQ58YCDoEaNppaYj3lVIbirPSvp+YyE2j8j3un0OqMzRla2vNzVmXk8S
4wono/s2O6uNrk6IQ10vATUSvUv/Ot1k2LWybBMEhhjD25SzDnX7V8SUvSNA
gJsVMEMQeZlspqa66FxndG61qZJrEpxhdrFsoaD1YtlufFgeQ/Jc3lUh6Awz
7fwfnn1gJs12mE9wX4cTB0wI7OWIBzKA2pZVkvMILo05PRGN0fmmCEKGvQYA
177TCIDwqK9wHnCGalx9rIiIPfVMvMzmGV7mfW2FfFeaK92nhfdVcbuyvFmh
SlSM+q0PTTF68VwzP3mzOj4NXLijtZdmPvFR3OBZGIgRcvfsVC9RIxw+4A1I
AD3VlzvR2kFn+q0ij1f3KxXiYtjdb7mrz3X2IB3qqHqXkC9Ur8TIUIy7kCPz
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
/xuIRuPcwJIBAA==

-->

</rfc>

