<?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.29 (Ruby 3.0.7) -->


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

]>


<rfc ipr="trust200902" docName="draft-li-oauth-delegated-authorization-00" category="info" 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="2025" month="October" day="20"/>

    
    <workgroup>oauth</workgroup>
    

    <abstract>


<?line 62?>

<t>Delegated authorization enables a client to delegate a subset of its granted privileges to a subordinate access token (also known as a delegated access token). This mechanism allows the client to securely delegate authorization to a delegated party while maintaining fine-grained control over delegated permissions.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        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>
    </note>


  </front>

  <middle>


<?line 66?>

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

<t>OAuth 2.0 <xref target="RFC6749"/> provides a framework for authorizing third-party applications to access protected resources on behalf of a resource owner. However, in existing implementations, access tokens issued to clients often contain excessive permissions that exceed actual requirements, creating security vulnerabilities and potential data exposure risks.</t>

<t>This specification extends OAuth 2.0 with a delegated authorization framework that enables clients to create subordinate access tokens with restricted permissions. This approach addresses the problem of over-privileged access tokens by implementing a two-token architecture that decouples initial authorization from final resource access.</t>

</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 following terms defined in OAuth 2.0 <xref target="RFC6749"/>: authorization server, client, resource server, and resource owner.</t>

<t>The following additional terms are used throughout this document:</t>

<dl>
  <dt><strong>Delegated Party (DP)</strong>:</dt>
  <dd>
    <t>An entity (e.g., a service, component, or application) authorized by the client to access protected resources on behalf of the resource owner.</t>
  </dd>
  <dt><strong>Delegated Resource</strong>:</dt>
  <dd>
    <t>A resource or API endpoint hosted by the delegated party that requires access to the resource owner’s protected data at a target resource server.</t>
  </dd>
  <dt><strong>Delegation Token</strong>:</dt>
  <dd>
    <t>A token issued by the authorization server for the client that enables the client to create delegated access tokens.</t>
  </dd>
  <dt><strong>Delegated Access Token</strong>:</dt>
  <dd>
    <t>A token created by the client using the delegation token, with permissions being a subset of the delegation token's privileges and a more limited lifespan.</t>
  </dd>
  <dt><strong>Delegation Key</strong>:</dt>
  <dd>
    <t>A cryptographic key bound to the delegation token, used by the client to sign or encrypt delegated access tokens. The delegation key is presented in the token request as the <spanx style="verb">delegation_key</spanx> parameter.</t>
  </dd>
</dl>

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

<t>The delegated authorization framework introduces a hierarchical token structure where a client can obtain a delegation token from an authorization server and use it to issue subordinate access tokens with reduced permissions. This enables fine-grained access control while maintaining the security properties of the original authorization grant.</t>

<figure title="Delegated Authorization Framework Architecture" align="center" anchor="fig-architecture"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="512" viewBox="0 0 512 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 96,32 L 96,288" fill="none" stroke="black"/>
<path d="M 96,368 L 96,480" fill="none" stroke="black"/>
<path d="M 120,288 L 120,368" fill="none" stroke="black"/>
<path d="M 168,288 L 168,368" fill="none" stroke="black"/>
<path d="M 192,32 L 192,112" fill="none" stroke="black"/>
<path d="M 192,144 L 192,256" fill="none" stroke="black"/>
<path d="M 192,368 L 192,448" fill="none" stroke="black"/>
<path d="M 376,32 L 376,48" fill="none" stroke="black"/>
<path d="M 376,80 L 376,144" fill="none" stroke="black"/>
<path d="M 376,176 L 376,192" fill="none" stroke="black"/>
<path d="M 376,224 L 376,288" fill="none" stroke="black"/>
<path d="M 376,368 L 376,384" fill="none" stroke="black"/>
<path d="M 376,416 L 376,480" fill="none" stroke="black"/>
<path d="M 504,32 L 504,144" fill="none" stroke="black"/>
<path d="M 504,176 L 504,288" fill="none" stroke="black"/>
<path d="M 504,368 L 504,480" fill="none" stroke="black"/>
<path d="M 96,32 L 192,32" fill="none" stroke="black"/>
<path d="M 376,32 L 504,32" fill="none" stroke="black"/>
<path d="M 192,64 L 376,64" fill="none" stroke="black"/>
<path d="M 192,128 L 376,128" fill="none" stroke="black"/>
<path d="M 376,144 L 504,144" fill="none" stroke="black"/>
<path d="M 376,176 L 504,176" fill="none" stroke="black"/>
<path d="M 192,208 L 376,208" fill="none" stroke="black"/>
<path d="M 192,272 L 376,272" fill="none" stroke="black"/>
<path d="M 96,288 L 112,288" fill="none" stroke="black"/>
<path d="M 128,288 L 192,288" fill="none" stroke="black"/>
<path d="M 376,288 L 504,288" fill="none" stroke="black"/>
<path d="M 96,368 L 160,368" fill="none" stroke="black"/>
<path d="M 176,368 L 192,368" fill="none" stroke="black"/>
<path d="M 376,368 L 504,368" fill="none" stroke="black"/>
<path d="M 192,400 L 376,400" fill="none" stroke="black"/>
<path d="M 192,464 L 376,464" fill="none" stroke="black"/>
<path d="M 96,480 L 192,480" fill="none" stroke="black"/>
<path d="M 376,480 L 504,480" fill="none" stroke="black"/>
<polygon class="arrowhead" points="384,400 372,394.4 372,405.6" fill="black" transform="rotate(0,376,400)"/>
<polygon class="arrowhead" points="384,208 372,202.4 372,213.6" fill="black" transform="rotate(0,376,208)"/>
<polygon class="arrowhead" points="384,64 372,58.4 372,69.6" fill="black" transform="rotate(0,376,64)"/>
<polygon class="arrowhead" points="200,464 188,458.4 188,469.6" fill="black" transform="rotate(180,192,464)"/>
<polygon class="arrowhead" points="200,272 188,266.4 188,277.6" fill="black" transform="rotate(180,192,272)"/>
<polygon class="arrowhead" points="200,128 188,122.4 188,133.6" fill="black" transform="rotate(180,192,128)"/>
<polygon class="arrowhead" points="176,368 164,362.4 164,373.6" fill="black" transform="rotate(90,168,368)"/>
<polygon class="arrowhead" points="128,288 116,282.4 116,293.6" fill="black" transform="rotate(270,120,288)"/>
<g class="text">
<text x="212" y="36">1.</text>
<text x="280" y="36">Authorization</text>
<text x="272" y="52">Request</text>
<text x="436" y="84">Resource</text>
<text x="212" y="100">2.</text>
<text x="280" y="100">Authorization</text>
<text x="440" y="100">Owner</text>
<text x="264" y="116">Grant</text>
<text x="140" y="164">Client</text>
<text x="212" y="180">3.</text>
<text x="280" y="180">Authorization</text>
<text x="264" y="196">Grant</text>
<text x="440" y="228">Authorization</text>
<text x="212" y="244">4.</text>
<text x="268" y="244">Delegation</text>
<text x="444" y="244">Server</text>
<text x="264" y="260">Token</text>
<text x="180" y="308">5.</text>
<text x="232" y="308">Delegated</text>
<text x="12" y="324">6.</text>
<text x="64" y="324">Delegated</text>
<text x="236" y="324">Access</text>
<text x="84" y="340">Resource</text>
<text x="232" y="340">Token</text>
<text x="212" y="372">5.</text>
<text x="264" y="372">Delegated</text>
<text x="268" y="388">Access</text>
<text x="320" y="388">Token</text>
<text x="144" y="420">Delegated</text>
<text x="436" y="420">Resource</text>
<text x="144" y="436">Party</text>
<text x="212" y="436">6.</text>
<text x="264" y="436">Protected</text>
<text x="436" y="436">Server</text>
<text x="276" y="452">Resource</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
           +-----------+ 1. Authorization     +---------------+
           |           |      Request         |               |
           |           +---------------------->               |
           |           |                      |   Resource    |
           |           | 2. Authorization     |     Owner     |
           |           |      Grant           |               |
           |           <----------------------+               |
           |           |                      +---------------+
           |  Client   |                                       
           |           | 3. Authorization     +---------------+
           |           |      Grant           |               |
           |           +---------------------->               |
           |           |                      | Authorization |
           |           | 4. Delegation        |     Server    |
           |           |      Token           |               |
           |           <----------------------+               |
           +--^-----+--+                      +---------------+
              |     |5. Delegated                              
6. Delegated  |     |     Access                               
      Resource|     |     Token                                
              |     |                                          
           +--+-----v--+ 5. Delegated         +---------------+
           |           |      Access Token    |               |
           |           +---------------------->               |
           | Delegated |                      |   Resource    |
           |   Party   | 6. Protected         |    Server     |
           |           |      Resource        |               |
           |           <----------------------+               |
           +-----------+                      +---------------+
]]></artwork></artset></figure>

<t><list style="numbers" type="1">
  <t>The client requests authorization from the resource owner. The client indicates in the authorization request that the requested authorization grant is for delegated authorization.</t>
  <t>The client receives an authorization grant.</t>
  <t>The client requests a delegation token by authenticating with the authorization server and presenting the authorization grant and its delegation key as defined in Section 3.</t>
  <t>The authorization server authenticates the client and validates the authorization grant, and if valid, issues a delegation token.</t>
  <t>The client calls the delegated party's API, presenting the delegated access token generated from the delegation token. The delegated access token is issued by the client using the delegation key. The delegated party requests the target protected resource from the resource server and presents the delegated access token.</t>
  <t>The resource server validates the delegated access token, and if valid, serves the resource. The delegated party receives the resource, optionally transforms it into a service-specific response (also known as delegated resource), and returns it to the client.</t>
</list></t>

<t>Both delegation token and delegated access token can be JSON Web Tokens (JWTs) <xref target="RFC7519"/> or CBOR Web Tokens (CWTs) <xref target="RFC8392"/>.</t>

</section>
<section anchor="delegated-party-metadata"><name>Delegated Party Metadata</name>

<t>Before the OAuth 2.0 client retrieves a delegation token and generates a delegated access token for the delegated party, the client needs to obtain the authorization server endpoint and the permissions needed by the delegated party. Such information can be manually configured into the client, or it can be dynamically discovered through delegated party metadata.</t>

<t>Delegated party metadata enables OAuth 2.0 clients to obtain information needed to interact with a delegated party. The structure of the metadata format is similar to "OAuth 2.0 Authorization Server Metadata" <xref target="RFC8414"/> and "OAuth 2.0 Protected Resource Metadata" <xref target="RFC9728"/>.</t>

<t>The delegated party metadata is retrieved from a well-known <xref target="RFC8615"/> location as a JSON <xref target="RFC8259"/> document. By default, the well-known URI string used is <spanx style="verb">/.well-known/oauth-delegated-party</spanx>.</t>

<section anchor="delegated-party-metadata-attributes"><name>Delegated Party Metadata Attributes</name>

<dl>
  <dt><strong>resources</strong>:</dt>
  <dd>
    <t><strong><bcp14>RECOMMENDED</bcp14></strong>. JSON array containing a list of target protected resources' resource identifiers, as defined in <xref target="RFC9728"/>. Either this attribute or <strong>authorization_servers</strong> defined below <bcp14>MUST</bcp14> be present.</t>
  </dd>
  <dt><strong>authorization_servers</strong>:</dt>
  <dd>
    <t><strong><bcp14>OPTIONAL</bcp14></strong>. JSON array containing a list of OAuth authorization server issuer identifiers, as defined in <xref target="RFC8414"/>. Either this attribute or <strong>resources</strong> defined above <bcp14>MUST</bcp14> be present.</t>
  </dd>
  <dt><strong>permissions_supported</strong>:</dt>
  <dd>
    <t><strong><bcp14>RECOMMENDED</bcp14></strong>. JSON object indicating the permissions the delegated party may request. The <spanx style="verb">scopes</spanx> attribute lists supported scope values <xref target="RFC6749"/>; the <spanx style="verb">authorization_details</spanx> attribute lists supported rich authorization request objects as defined in <xref target="RFC9396"/>. These guide the client in constructing valid authorization and token requests. Either the <spanx style="verb">scopes</spanx> attribute or the <spanx style="verb">authorization_details</spanx> attribute must be present.</t>
  </dd>
  <dt><strong>api_permissions</strong>:</dt>
  <dd>
    <t><strong><bcp14>RECOMMENDED</bcp14></strong>. JSON object mapping API endpoints (resource identifiers) to the permissions required to access them. Each value can include <spanx style="verb">scopes</spanx> and/or <spanx style="verb">authorization_details</spanx> to specify the permissions needed for that endpoint/resource.</t>
  </dd>
  <dt><strong>delegated_party_documentation</strong>:</dt>
  <dd>
    <t><strong><bcp14>OPTIONAL</bcp14></strong>: URL of a page containing human-readable information that developers might want or need to know when using the delegated party. The value of this field <bcp14>MAY</bcp14> be internationalized.</t>
  </dd>
</dl>

</section>
<section anchor="delegated-party-metadata-example"><name>Delegated Party Metadata Example</name>

<t>The following is a non-normative example delegated party metadata:</t>

<figure><sourcecode type="sourcecode"><![CDATA[
{
  "resources": [
    "https://res1.example.com",
    "https://res2.example.net"
  ],
  "authorization_servers": [
    "https://as1.example.com",
    "https://as2.example.net"
  ],
  "permissions_supported": {
    "scopes": ["profile:read", "profile:write", "email:read", "email:write"],
    "authorization_details": [
      {
        "type": "payment",
        "actions": ["initiate", "status", "cancel"],
        "instructedAmount": {
          "notMoreThan": {
            "currency": "USD",
            "amount": "500.00"
          }
        }
      }
    ]
  },
  "api_permissions": {
    "/emails/list": {
      "scopes": ["email:read"]
    },
    "/balance/transfer": {
      "authorization_details": [
        {
          "type": "payment",
          "actions": ["initiate"],
          "instructedAmount": {
            "notMoreThan": {
              "currency": "USD",
              "amount": "500.00"
            }
          }
        }
      ]
    },
    "/balance/transfer/status": {
      "authorization_details": [
        {
          "type": "payment",
          "actions": ["status"]
        }
      ]
    },
    "/balance/transfer/cancel": {
      "authorization_details": [
        {
          "type": "payment",
          "actions": ["cancel"]
        }
      ]
    }
  },
  "delegated_party_documentation": "https://dp.example.com/dp_documentation.html"
}
]]></sourcecode></figure>

</section>
<section anchor="www-authenticate"><name>WWW-Authenticate</name>

<t>Upon receipt of a request for a delegated resource that lacks credentials, the delegated party can reply with a challenge using the 401 (Unauthorized) status code (<xref target="RFC9110"/> Section 15.5.2) and the <spanx style="verb">WWW-Authenticate</spanx> header field (<xref target="RFC9110"/> Section 11.6.1).</t>

<t>This specification introduces a new parameter in the <spanx style="verb">WWW-Authenticate</spanx> HTTP response header field to indicate the delegated party metadata URL:</t>

<dl>
  <dt><strong>delegated_party_metadata</strong>:</dt>
  <dd>
    <t>The URL of the delegated party metadata.</t>
  </dd>
</dl>

<t>The response below is an example of a <spanx style="verb">WWW-Authenticate</spanx> header that includes the delegated party metadata URL. NOTE: '\' line wrapping per <xref target="RFC8792"/>.</t>

<figure><artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer delegated_party_metadata=\
  "https://dp.example.com/.well-known/oauth-delegated-party"
]]></artwork></figure>

</section>
</section>
<section anchor="acquiring-delegation-tokens"><name>Acquiring Delegation Tokens</name>

<t>The client requests a delegation token using standard OAuth 2.0 grant types with additional parameters to distinguish delegation requests from standard token requests.</t>

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

<t>For authorization code grant type, the client <bcp14>MUST</bcp14> include a <spanx style="verb">delegation=true</spanx> parameter in the authorization request to indicate that the client is requesting a delegation token instead of an OAuth 2.0 access token.</t>

<t>Additionally, the authorization request <bcp14>MUST</bcp14> include either a <spanx style="verb">scope</spanx> parameter (as defined in <xref target="RFC6749"/> Section 3.3), an <spanx style="verb">authorization_details</spanx> parameter (as defined in "Rich Authorization Requests" <xref target="RFC9396"/>), or both, that define the permissions granted to the requested delegation token.</t>

<t>In the token request, the client <bcp14>MUST</bcp14> include a <spanx style="verb">delegation_key</spanx> parameter with the value of the delegation key. This is normally a public key for digital signature. It can be extended to support encryption public keys, or secret keys for MAC or symmetric encryption.</t>

<t>Additionally, the client <bcp14>MAY</bcp14> include in the token request either a <spanx style="verb">scope</spanx> parameter, an <spanx style="verb">authorization_details</spanx> parameter, or both. The client <bcp14>MAY</bcp14> also include a <spanx style="verb">delegation=true</spanx> parameter in the token request.</t>

<t>In the token response, the authorization server <bcp14>MUST</bcp14> include an <spanx style="verb">access_token</spanx> attribute whose value is the delegation token, and <bcp14>MUST</bcp14> include a <spanx style="verb">token_type</spanx> attribute valued <spanx style="verb">"Delegation"</spanx>, and <bcp14>MAY</bcp14> include a <spanx style="verb">refresh_token</spanx> attribute which is the refresh token for obtaining a new delegation token via the refresh token grant.</t>

<t>Other procedures of the authorization code grant are as described in <xref target="RFC6749"/>. Use of Proof Key for Code Exchange (PKCE) <xref target="RFC7636"/> is <bcp14>RECOMMENDED</bcp14>.</t>

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

<t>Other OAuth 2.0 grant types, such as the refresh token grant or client credentials grant, <bcp14>MAY</bcp14> support delegated authorization by including the <spanx style="verb">delegation</spanx> and <spanx style="verb">delegation_key</spanx> parameters when applicable. The authorization server <bcp14>MUST</bcp14> validate that the client is authorized to request delegation tokens using the given grant type.</t>

</section>
</section>
<section anchor="creating-delegated-access-tokens"><name>Creating Delegated Access Tokens</name>

<t>The client creates delegated access tokens by:</t>

<t><list style="numbers" type="1">
  <t>Validating the delegation token's validity and permissions.</t>
  <t>Generating a subordinate access token with (optionally) reduced privileges.</t>
  <t>Applying cryptographic protection using the delegation key (digital signature, encryption or MAC).</t>
</list></t>

<t>The client <bcp14>MUST</bcp14> include the delegation token in the <spanx style="verb">delegation_token</spanx> attribute of the delegated access token.</t>

<t>The client <bcp14>MUST</bcp14> ensure that the delegated access token's scope, lifetime, audience, and other claims do not exceed those of the delegation token. The client <bcp14>MAY</bcp14> generate single-use delegated access tokens that the resource server or authorization server only consider valid when validating it for the first time.</t>

<t>The client is <bcp14>RECOMMENDED</bcp14> to "sender-constrain" the delegated access tokens by binding the delegated access tokens with public keys or certificates where the corresponding private keys are owned by the delegated parties, via techniques similar to OAuth 2.0 mTLS <xref target="RFC8705"/> or OAuth 2.0 DPoP <xref target="RFC9449"/>.</t>

</section>
<section anchor="using-delegated-access-tokens"><name>Using Delegated Access Tokens</name>

<t>When the client accesses a delegated resource on the delegated party, the client <bcp14>MUST</bcp14> include the delegated access token as a bearer token <xref target="RFC6750"/> in the <spanx style="verb">Delegated-Authorization</spanx> header, used by the target resource server to verify requests from the delegated party. The <spanx style="verb">Delegated-Authorization</spanx> header <bcp14>MAY</bcp14> be used in combination with an <spanx style="verb">Authorization</spanx> header used by the delegated party to verify the request from the client.</t>

<t>For example:</t>

<figure><artwork><![CDATA[
GET /dp-resource HTTP/1.1
Host: delegated-party.example.com
Authorization: Bearer mF_9.B5g1234
Delegated-Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork></figure>

<t>Upon receiving a delegated resource request with a <spanx style="verb">Delegated-Authorization</spanx> header, the delegated party sends a request to the target resource server for the respective target resource. The delegated party <bcp14>MUST</bcp14> include the received delegated access token as a bearer token in the <spanx style="verb">Authorization</spanx> header.</t>

<t>For example:</t>

<figure><artwork><![CDATA[
GET /target-resource HTTP/1.1
Host: resource.example.com
Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork></figure>

</section>
<section anchor="verification-of-delegated-access-tokens"><name>Verification of Delegated Access Tokens</name>

<t>Resource servers verify delegated access tokens through either local validation using pre-configured public keys or remote validation via token introspection <xref target="RFC7662"/> at the authorization server.</t>

<section anchor="local-verification"><name>Local Verification</name>

<t>The resource server verifies delegated access tokens by:</t>

<t><list style="numbers" type="1">
  <t>The resource server is pre-configured with the authorization server's public key, or it fetches the public key via the authorization server's JWKS endpoint <xref target="RFC7517"/>.</t>
  <t>Checking the digital signature of the delegation token (part of the delegated access token) against the authorization server's public key.</t>
  <t>Checking the digital signature of the delegated access token against the delegation key bound to the delegation token.</t>
  <t>Verifying the delegated access token's permissions and validity are within the scope of the delegation token.</t>
  <t>Verifying the delegated access token is within validity period, and the delegated access token's permissions cover the resource request.</t>
</list></t>

</section>
<section anchor="token-introspection"><name>Token Introspection</name>

<t>The resource server sends the delegated access token to the authorization server via the token introspection endpoint. The authorization server verifies the delegated access token against its keys.</t>

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

<t>This specification extends OAuth 2.0 to support delegated authorization through hierarchical token issuance. While this enables fine-grained privilege delegation, it also introduces new trust and security considerations.</t>

<t><list style="symbols">
  <t>Delegation tokens <bcp14>MUST NOT</bcp14> be sent to resource servers without subordinate delegated access tokens. Resource servers and authorization servers <bcp14>MUST NOT</bcp14> treat delegation tokens as regular OAuth access tokens.</t>
  <t>Clients <bcp14>MUST</bcp14> protect the delegation key, as compromise allows an attacker to mint valid delegated access tokens within the scope of the delegation token.</t>
  <t>Delegated access tokens <bcp14>SHOULD</bcp14> have short lifetimes and be bound to specific audiences, methods, and sender keys (e.g., via DPoP or mTLS) to mitigate replay and token leakage risks. Resource servers <bcp14>MUST</bcp14> validate both the delegation token and the delegated access token, ensuring the latter does not exceed the former’s permissions.</t>
  <t>Token introspection CAN be used in scenarios where the tokens are kept opaque from the delegated party and the resource server. If employed, token introspection responses <bcp14>MUST NOT</bcp14> reveal sensitive internal information. Authorization servers <bcp14>SHOULD</bcp14> enforce rate limiting and audit token issuance and validation activities.</t>
</list></t>

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

<t>Deployments of this specification should consider the following operational aspects:</t>

<t><list style="symbols">
  <t><strong>Key Management</strong>: Clients <bcp14>MUST</bcp14> securely store and rotate delegation keys. Authorization servers <bcp14>SHOULD</bcp14> support key rotation for delegation tokens and provide mechanisms to revoke compromised keys.</t>
  <t><strong>Token Lifetimes</strong>: Delegation tokens <bcp14>SHOULD</bcp14> have longer lifetimes than delegated access tokens to reduce authorization server load, and <bcp14>SHOULD</bcp14> be refreshable using refresh tokens.</t>
  <t><strong>Metadata Caching</strong>: Delegated party metadata at the well-known URI /.well-known/oauth-delegated-party can be cached by clients; a reasonable default TTL (e.g., 24 hours) is <bcp14>RECOMMENDED</bcp14>.</t>
  <t><strong>Error Handling</strong>: Delegated parties and resource servers <bcp14>SHOULD</bcp14> provide clear error responses (e.g., invalid token, insufficient scope) without exposing implementation details.</t>
  <t><strong>Interoperability</strong>: Implementers <bcp14>SHOULD</bcp14> ensure compatibility with existing OAuth 2.0 features such as PKCE, Rich Authorization Requests, and sender-constrained tokens.</t>
</list></t>

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

<section anchor="well-known-uris-registry"><name>Well-Known URIs Registry</name>

<t>This specification registers the following entry in the "Well-Known URIs" registry:</t>

<t><list style="symbols">
  <t><strong>URI suffix</strong>: oauth-delegated-party</t>
  <t><strong>Reference</strong>: [this document]</t>
  <t><strong>Status</strong>: permanent</t>
  <t><strong>Change controller</strong>: IETF</t>
  <t><strong>Related information</strong>: (none)</t>
</list></t>

</section>
<section anchor="oauth-parameters-registry"><name>OAuth Parameters Registry</name>

<t>This specification registers the following parameters in the "OAuth Parameters" registry:</t>

<t><strong>Delegation:</strong></t>

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

<t><strong>Delegation Key:</strong></t>

<t><list style="symbols">
  <t><strong>Name</strong>: delegation_key</t>
  <t><strong>Parameter Usage Location</strong>: token request</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Reference</strong>: [this document]</t>
</list></t>

</section>
<section anchor="oauth-access-token-types-registry"><name>OAuth Access Token Types Registry</name>

<t>This specification registers the following parameters in the "OAuth Access Token Types" registry:</t>

<t><list style="symbols">
  <t><strong>Name</strong>: Delegation</t>
  <t><strong>Additional Token Endpoint Response Parameters</strong>: (none)</t>
  <t><strong>HTTP Authentication Scheme(s)</strong>: Bearer</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Reference</strong>: [this document]</t>
</list></t>

</section>
<section anchor="http-field-name-registry"><name>HTTP Field Name Registry</name>

<t>This specification registers the following parameters in the "Hypertext Transfer Protocol (HTTP) Field Name" registry:</t>

<t><list style="symbols">
  <t><strong>Field Name</strong>: Delegated-Authorization</t>
  <t><strong>Status</strong>: permanent</t>
  <t><strong>Structured Type</strong>: (none)</t>
  <t><strong>Reference</strong>: [this document]</t>
</list></t>

</section>
<section anchor="oauth-delegated-party-metadata-registry"><name>OAuth Delegated Party Metadata Registry</name>

<t>This specification establishes the "OAuth Delegated Party Metadata" registry for OAuth 2.0 dalagated party metadata names. The registry records the dalagated party metadata parameter and a reference to the specification that defines it.</t>

<section anchor="registration-template"><name>Registration Template</name>

<dl>
  <dt><strong>Metadata Name</strong>:</dt>
  <dd>
    <t>The name requested (e.g., "resource"). This name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the designated experts state that there is a compelling reason to allow an exception.</t>
  </dd>
  <dt><strong>Metadata Description</strong>:</dt>
  <dd>
    <t>Brief description of the metadata (e.g., "Resource identifier URL").</t>
  </dd>
  <dt><strong>Change Controller</strong>:</dt>
  <dd>
    <t>For IETF Stream RFCs, list "IETF". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.</t>
  </dd>
  <dt><strong>Specification Document(s)</strong>:</dt>
  <dd>
    <t>Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.</t>
  </dd>
</dl>

</section>
<section anchor="initial-registry-contents"><name>Initial Registry Contents</name>

<t><strong>Resources:</strong></t>

<t><list style="symbols">
  <t><strong>Metadata Name</strong>: resources</t>
  <t><strong>Metadata Description</strong>: JSON array containing a list of target protected resources' resource identifier URLs</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification Document(s)</strong>: [this document]</t>
</list></t>

<t><strong>Authorization Servers:</strong></t>

<t><list style="symbols">
  <t><strong>Metadata Name</strong>: authorization_servers</t>
  <t><strong>Metadata Description</strong>: JSON array containing a list of authorization server issuer identifiers</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification Document(s)</strong>: [this document]</t>
</list></t>

<t><strong>Supported Permissions:</strong></t>

<t><list style="symbols">
  <t><strong>Metadata Name</strong>: permissions_supported</t>
  <t><strong>Metadata Description</strong>: JSON object indicating the permissions the delegated party may request</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification Document(s)</strong>: [this document]</t>
</list></t>

<t><strong>API Permissions:</strong></t>

<t><list style="symbols">
  <t><strong>Metadata Name</strong>: api_permissions</t>
  <t><strong>Metadata Description</strong>: JSON object mapping API endpoints (resource identifiers) to the permissions required to access them</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification Document(s)</strong>: [this document]</t>
</list></t>

<t><strong>Delegated Party Documentation:</strong></t>

<t><list style="symbols">
  <t><strong>Metadata Name</strong>: delegated_party_documentation</t>
  <t><strong>Metadata Description</strong>: URL of a page containing human-readable information that developers might want or need to know when using the delegated party</t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification Document(s)</strong>: [this document]</t>
</list></t>

</section>
</section>
</section>


  </middle>

  <back>


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

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



<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="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="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="RFC7516">
  <front>
    <title>JSON Web Encryption (JWE)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Encryption (JWE) represents encrypted content 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 IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7516"/>
  <seriesInfo name="DOI" value="10.17487/RFC7516"/>
</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="RFC7636">
  <front>
    <title>Proof Key for Code Exchange by OAuth Public Clients</title>
    <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
    <date month="September" year="2015"/>
    <abstract>
      <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7636"/>
  <seriesInfo name="DOI" value="10.17487/RFC7636"/>
</reference>
<reference anchor="RFC7662">
  <front>
    <title>OAuth 2.0 Token Introspection</title>
    <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
    <date month="October" year="2015"/>
    <abstract>
      <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7662"/>
  <seriesInfo name="DOI" value="10.17487/RFC7662"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC8259">
  <front>
    <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
    <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
    <date month="December" year="2017"/>
    <abstract>
      <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
      <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
  <seriesInfo name="DOI" value="10.17487/RFC8259"/>
</reference>
<reference anchor="RFC8392">
  <front>
    <title>CBOR Web Token (CWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="May" year="2018"/>
    <abstract>
      <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8392"/>
  <seriesInfo name="DOI" value="10.17487/RFC8392"/>
</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="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="RFC8705">
  <front>
    <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8705"/>
  <seriesInfo name="DOI" value="10.17487/RFC8705"/>
</reference>
<reference anchor="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>



    </references>

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



<reference anchor="RFC8792">
  <front>
    <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="Q. Wu" initials="Q." surname="Wu"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8792"/>
  <seriesInfo name="DOI" value="10.17487/RFC8792"/>
</reference>



    </references>

</references>


<?line 478?>

<section anchor="token-format"><name>Token Format</name>

<t>The example tokens in this section are shown in Flattened JSON Serialization <xref target="RFC7515"/> <xref target="RFC7516"/>, un-base64url-encoded/unencrypted, and with comments for ease of reading. When used as JWTs <xref target="RFC7519"/>, they should be represented in Compact Serialization <xref target="RFC7515"/> <xref target="RFC7516"/>. Similarly, they can be represented as CWTs <xref target="RFC8392"/>.</t>

<section anchor="example-1"><name>Example 1</name>

<t>In this example, the delegation token is a JWS token signed with HS256, and the delegated access token is a JWS token signed with RS256.</t>

<t><strong>Delegation Token</strong>:</t>

<figure><sourcecode type="sourcecode"><![CDATA[
{
  "protected": {
    "_comment": "to be base64url-encoded",
    "alg": "HS256",
    "typ": "JWT",
    "kid": "as-key-1"
  },
  "payload": {
    "_comment": "to be base64url-encoded",
    "iss": "https://as1.example.com",
    "sub": "user@example.com",
    "aud": "https://res1.example.com",
    "iat": 1760946495,
    "exp": 1763538495,
    "scope": "email:read email:send",
    "delegation_key": {
      "kty": "RSA",
      "n": "xoGV-drpIhwQ9Q3M5ouoA4Y76j4r0c2YcJoPT2qUd8UxV1PZH61TGZUbdUAdQLqi7Pik3GwTk34b6Xxb2-UkW3zoaBx_2FXXfVWwSVbfxi4RCbFP-rWGlbyYTRILj6CJM5JXI8VQdcSF8yfPZVytw-aKU-5k4RddKxgyMwkWNCShWPa_H2WRsDzcy88pE-8q1cg6hbaq5GTywdiSeGWrjMYebQqIN-V63bX2aiOHhFvPVpEoI7AlxlrQd7aJtFwfuRl-0FxJH-2ITrnHFZaFAdoJqvFSD3OKZNkECBpuDL-DHcZUZfEyr4Rvb3WB0iuHHfHXzhbzqAt3NbZalmdQNw",
      "e": "AQAB"
    }
  },
  "signature": "1gR7TSa8ft8Wt4ZA9HuLFTYW2uAw86X2pFRrq9jDoQQ"
}
]]></sourcecode></figure>

<t><strong>Delegated Access Token</strong>:</t>

<figure><sourcecode type="sourcecode"><![CDATA[
{
  "protected": {
    "_comment": "to be base64url-encoded",
    "alg": "RS256",
    "typ": "JWT",
    "kid": "delegation-key-1"
  },
  "payload": {
    "_comment": "to be base64url-encoded",
    "iss": "user@example.com",
    "sub": "https://dp1.example.com",
    "aud": "https://res1.example.com",
    "iat": 1760950095,
    "exp": 1760953695,
    "scope": "email:read",
    "delegationToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImFzLWtleS0xIn0.eyJpc3MiOiJodHRwczovL2FzMS5leGFtcGxlLmNvbSIsInN1YiI6InVzZXJAZXhhbXBsZS5jb20iLCJhdWQiOiJodHRwczovL3JlczEuZXhhbXBsZS5jb20iLCJpYXQiOjE3NjA5NDY0OTUsImV4cCI6MTc2MzUzODQ5NSwic2NvcGUiOiJlbWFpbDpyZWFkIGVtYWlsOnNlbmQiLCJkZWxlZ2F0aW9uX2tleSI6eyJrdHkiOiJSU0EiLCJuIjoieG9HVi1kcnBJaHdROVEzTTVvdW9BNFk3Nmo0cjBjMlljSm9QVDJxVWQ4VXhWMVBaSDYxVEdaVWJkVUFkUUxxaTdQaWszR3dUazM0YjZYeGIyLVVrVzN6b2FCeF8yRlhYZlZXd1NWYmZ4aTRSQ2JGUC1yV0dsYnlZVFJJTGo2Q0pNNUpYSThWUWRjU0Y4eWZQWlZ5dHctYUtVLTVrNFJkZEt4Z3lNd2tXTkNTaFdQYV9IMldSc0R6Y3k4OHBFLThxMWNnNmhiYXE1R1R5d2RpU2VHV3JqTVllYlFxSU4tVjYzYlgyYWlPSGhGdlBWcEVvSTdBbHhsclFkN2FKdEZ3ZnVSbC0wRnhKSC0ySVRybkhGWmFGQWRvSnF2RlNEM09LWk5rRUNCcHVETC1ESGNaVVpmRXlyNFJ2YjNXQjBpdUhIZkhYemhienFBdDNOYlphbG1kUU53IiwiZSI6IkFRQUIifX0.1gR7TSa8ft8Wt4ZA9HuLFTYW2uAw86X2pFRrq9jDoQQ"
  },
  "signature": "r5O4a3d3NMN7vZlOB9P4qPLbHyy12bZH5Ha3DZATa8NUdHYPJBMieiS1tqbhwfnTvwcSR_0Ac42dRHDrk8MWPkCl_9-bfYNvf9eGrcwSRn7889-pleH-QphxZG4Tsr8m2WlGM8VFnC9sjkhqGvmM9ZdC02GEaiptU9D859QU3-u-tvRdSgrHXeuLY2a3hgpWnj0j4gfgpug-VSvNB26vqCWwM4mwMGWYUPDabBaPp-KL38_M1T7q4wvFE0_KLvTSdozMe1ngkLewvSTBrnW1rULhXFk54j381wQ_ovaJhM1aAbWshb1AMzu-aiv0EZJjB1XlgORVh-KbId01TZQLwA"
}
]]></sourcecode></figure>

</section>
<section anchor="example-2"><name>Example 2</name>

<t>In this example, the delegation token is a JWE token encrypted with A128CBC-HS256, and the delegated access token is a JWS token signed with ES256.</t>

<t><strong>Delegation Token</strong>:</t>

<figure><sourcecode type="sourcecode"><![CDATA[
{
  "protected": {
    "_comment": "to be base64url-encoded",
    "alg": "dir",
    "enc": "A128CBC-HS256",
    "typ": "JWT",
    "kid": "as-key-2"
  },
  "iv": "s99tD84KH1_kgbA2ArpUZg",
  "ciphertext": {
    "_comment": "to be encrypted",
    "iss": "https://as1.example.com",
    "sub": "user@example.com",
    "aud": "https://res1.example.com",
    "iat": 1760946495,
    "exp": 1763538495,
    "scope": "email:read email:send",
    "delegation_key": {
      "kty": "EC",
      "crv": "P-256",
      "x": "iZgQ3t5EK4rVdkex6LAGfxB0deOHtE3-vb-OBxoFv88",
      "y": "RQVYHkEWrTR6jckD7iHXnRRs60-u9ikSfVnM4epiOLY"
    }
  },
  "tag": "9Z4ONkwLwv3szT-eIKa4uQ"
}
]]></sourcecode></figure>

<t><strong>Delegated Access Token</strong>:</t>

<figure><sourcecode type="sourcecode"><![CDATA[
{
  "protected": {
    "_comment": "to be base64url-encoded",
    "alg": "ES256",
    "typ": "JWT",
    "kid": "delegation-key-2"
  },
  "payload": {
    "_comment": "to be base64url-encoded",
    "iss": "user@example.com",
    "sub": "https://dp1.example.com",
    "aud": "https://res1.example.com",
    "iat": 1760950095,
    "exp": 1760953695,
    "scope": "email:read",
    "delegationToken": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwidHlwIjoiSldUIiwia2lkIjoiYXMta2V5LTIifQ..s99tD84KH1_kgbA2ArpUZg.DS5aM1uuKpFFacu7rIvKOYnA-6BRPy6jyZ-3uF8bpplWJkCQmsAi8KqS-qTZuHWNfIWw7ulK-a8rWhfPPfLrgdXky6Ujc_3vm5YXRXmwxlaNJlhr2LexPXsTX2wA_3aIo9c0b5kQB2MHqeI5ucJDSdERCV2AaQTgl7vRmJhZ_FAY5cnd2URHEsqnm5usrywzGMLw5CnXg2MBl1jWxiHp-PmzOmRPHks4jFV2es2jjr-yB5PlX2d-OBCU2hauM_JjtnYOhByiXmAVVE6XKjJHXYM-d5q3JheTDg5gA4f1Io38_r2KA3pW07CF94Nx3i7VRxaFRSVYuNxlEhUx0vxOIlwRBa3_ZOK4Kkg-og66ADs73RuBg91cCthbr63NfIdEXmmYKG2Nx3DehojbVKZQrg.9Z4ONkwLwv3szT-eIKa4uQ"
  },
  "signature": "hlxIMOUb_Wdjh53VPcvuXBwTDiGzC7O8-ofV2LAvkws-LRIqKF6WRZ3KoPG1iTEDDhel3XXAGCyfRFCMXH3KiQ"
}
]]></sourcecode></figure>

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

<section anchor="delegating-subset-of-access-rights-to-specialized-ai-agents"><name>Delegating Subset of Access Rights to Specialized AI Agents</name>

<t>Enterprise Identity and Access Management systems often employ Role Based Access Control (RBAC) or Attribute Based Access Control (ABAC), assigning a set of minimal permissions to the employee based on its role, department, or other attributes. AI Agent can be an employee's personal assistant, or a virtual employee of a certain department in general. An Agent's delegated permissions CAN be long-termed, but <bcp14>MUST NOT</bcp14> be a direct inheritance of all its owner's access right. Rather, they <bcp14>SHOULD</bcp14> be a subset of its owner, bound to specfic service/API/database/codebase according to its specialty and dedicated workflow.</t>

<texttable title="AI Agents" align="center">
      <ttcol align='left'>Role</ttcol>
      <ttcol align='left'>Service / Component</ttcol>
      <c>Resource Owner</c>
      <c>an enterprise, individual or a department</c>
      <c>Client</c>
      <c>agent's client application</c>
      <c>Delegated Party</c>
      <c>CI-CD agent, test agent, DEV agent, research agent</c>
      <c>Authorization Server</c>
      <c>enterprise IAM system</c>
      <c>Resource Server</c>
      <c>enterprise IT systems</c>
      <c>Target Protected Resource</c>
      <c>DEV/STAGE/PROD environments, internal knowledge database</c>
</texttable>

</section>
<section anchor="thirdparty-analytics-platform-integrated-in-an-enterprise-saas"><name>Third‑Party Analytics Platform Integrated in an Enterprise SaaS</name>

<t>In this scenario, a corporate customer uses a Software-as-a-Service (SaaS) Customer Relationship Management (CRM) application. The customer wishes to gain business insights by granting a specialized third-party analytics platform limited access to its CRM data.</t>

<t>The CRM application obtains a delegation token from the enterprise's identity provider. It then creates a narrowly scoped delegated access token for the analytics service. This token only permits read access to a predefined, non-sensitive subset of customer data (e.g., names and identifiers, but not personal email addresses). The analytics platform uses this token to pull data, generates an aggregated business intelligence report, and delivers it back to the CRM application for the corporate customer to view.</t>

<texttable title="Enterprise-SaaS" align="center">
      <ttcol align='left'>Role</ttcol>
      <ttcol align='left'>Service / Component</ttcol>
      <c>Resource Owner</c>
      <c>company A (the tenant)</c>
      <c>Client</c>
      <c>SaaS CRM application</c>
      <c>Delegated Party</c>
      <c>analytics service</c>
      <c>Authorization Server</c>
      <c>enterprise IdP</c>
      <c>Resource Server</c>
      <c>CRM application server</c>
      <c>Target Protected Resource</c>
      <c>CRM application's data retrieval API</c>
</texttable>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1923riSNLgPU+hdV9UucZgzj78M/MPYDDYgDFHw0yvS0gJ
yAgJSwKMu2q+eYW93Lt9g32HfZR5ko3Ig5QCYbt7qv+52K3v6zZIeYiMjHNE
JvF4PBbzDM8kl8qnu8LKmynpRFK5IiaZqh7RFXxkO8ar6hm29SmmjscOWUNb
v0UcW3yK6bZmqQscRXfUiRc3jbitwpu47jdU5aHiyeSnWMz1VEt/VE3bgp6e
syKxzfRSoR1jxtKhz1wvnUxeJNMxdzVeGK4Lnb3tEtrXyt1KTFO9S8WwJnYs
tibWilzGFGXq2KvlpTK4hs+s6cB25oY1Va7xDTxdqIbJ5/mLQbxJwnam8Fh1
tNmlMvO8pXt5eqqrnuo5qjYnTkI0Ot1MT2m3U3Vsr7zTWIyt6jIWByjcS6Wd
UOoGDMWQ0V7Z2oxY7BF0v1SqK3VDDKVmeQml5RGl7unwijCATCPhsB5/mcWX
quNZxHETmr0Qo1cTykC1pv74VdWYruCBePr+FBtomJjxbgl3ZhBTN9XxX2a0
kzxXCVey8qcqzVaWNjOUFvGIw9/I03WJNrNs054axJVXtNJYx4gZuiFcdQ2y
VT+MqrqRYB3kcWOW7SyAvNaUDNqVUjqVuuAf82fZ4GMuyT+e5VK54GM++HgW
fBTdzvIZv0E+n+Yfz1NnWfExnRNtzzMXfoNsym+Q92c7P0uKjxeplADnInMh
prjI+vBenCX9Bmfp88tYDAk+vNLzM5wwFo/HFXXsItl6sVjAxiHeU4iljk3i
KqqimQaxPMWzFcGn8BAYzSWeYk8Uw3OBm1QLh1g6xtqANtAPmtNWtqMbFu2j
acTF53Mg9s+q6drK3LI3lqLiJHoAhtTuOKF0Z4arLIBwVMtwF4pqmvYG3s6I
BJdLtJVDzK0EYGgtFJZgBuSarbKZAaTI5ZYH/yHnTwyLxGEp8EdXNBAhjm0q
9hpIWepLHC5g3ARD5cLQdZPEYj8hFTq2vtJwzlgskJS//MJp6/t3wJC9NnSK
14kDNL0BqaPARvkQIyDezHD0OANTXS5NQ6PrYEhl6IFxPKIhRA5x7ZUDDxVY
6ZjMVHOC26L6LxRAMognpWpvCCzmBBhLIS+G6+FUxmJpkgXgkc1wEkK/q8BS
VzAHzMuwDZNMPNg/xI5Kx8HWQGIyYgB+1aOv6HZ6K9UEYJ5XhkNngkk0h6h0
erpzBixzvTIBSHVsmIZnIHoswDUs0fIM6I1iFgZc2i7ss+IY7hyxT0nDXRLN
mHAMQRvoortKgPyNAR9C9BUijWATGNCc6sVqceEIKzlIyi6bAZDtOYa2SyKM
fGEPHVvVAA5dh4YuYQQMD2GyBe4WUlnc5x59Z4bxNtgnxJqqeBs7zjgJ9ZGB
pICYoWvQiQYaDFcBZE3Rt7tke4G0TneFkwibL4FU3JZ2SqmDBlipU4LIJsqc
ANsAFlzlqNHrdI9O2F+leUc/t8v3vVq7fIWfO9VCve5/iPEWnepdr34VfAp6
lu4ajXLzinWGp0roUeyoURjCG6SKo7tWt3bXLNSPkJA9xC8YFiuEF5BBcMvG
BF6BClo6hO64GwOO0xxjDF+gT7HU+j//K5UFvvxvXP4DY7IvKKnhywbUK5vN
tswt/wpbto3BVhLVwVFAEimaujQ8EGUnKMTcGUqzGXEI4PHLXxEzP18qfxxr
y1T2z/wBLjj0UOAs9JDibP/JXmeGxIhHEdP42Aw938F0GN7CMPRd4F16+Mf/
NEFYKvHU+X/+OYbE00Xapyp+G8mfK0H7ExsFORV20AW2kEyo2AXERgrOyx0i
dolDZRlj1JOAksUL3LwdCciIOJgZuNHAwYARGBBIPgAhyLsZGIHTGVhvYQID
7fnlS6AxW1RCf75qHX/5chm7VAqoNj0UZ59JYpo4QQ0I4BgaAUDtxRJMWIQV
pX0g1Y/9lcGIwOlh1fZRcY+99pYrw9rmLzmkUmNHKbRqALi+tIFrlJntegEk
u1qTShguzN1ATEXM/89//E8ZbirCoS/ILtWZEm93x2RwcYO7KN0EsEzUcWXE
IYuiB6pJZQTKMj2MWC7Wo+0Odwd5BfYuAiY2zO7GrVymxv3xmRUyRzFC1YWs
LceEyfTApIrq+MmVrSukblVZ2ECwprEwEALTmBB3qVq7iLwlWwGy5myXng0W
znJmaFSag4Ni6WL/9mGlzLBHk64xtZBsiEUHPIhDpRseFCc0cBnEJdRcpPKb
cEwiUYESRUmKD78GHR+h41ekP1DVHqWUn5S7NTIW2TCefl+7G9w2o5YXeDQO
1Zsasj6dHbT3iunQDUrwwOzVwN+wx9TYUfcwxHQptIgkRtwkwCBYyIg1Sr3v
mxEIY5QNIag4ZKTyEYStum/SIiZ9GwuYEcal5hUnMgB5Sg2BMPzUnAc0//3v
f1dVd41eo//vD/Hg3x+UVCLs/e81oc3k/t/2P7f5zkc1od8P9d+diP/780f7
704kPRbi8p3+6aj1syZ3KAQ/NP81ovsNsA72/2P0+v/w0f4H1v/e/pUYZxzs
v/fv8PyZH0E/vxl/vxv9hNf0Rv9sQpFEdahJhwmRD8xP1dIbYP1Q+gGc/XfW
ar9h0OTw/vkgfMslpBjim/9i+VDTb9IoXDO/05/9ETwt99/F3Vv9d+B/r1d0
/z9QzMG/NeIvEge/lv5l6yQKsh9M/wHAv1V+MrsZP8PGtnwTMQRiQP7v0r88
169a/2+k/4MNI5qw/QNFGvvlUvlpYkzjYYcdw+p/OjoQS1cqvv1SkHodge8J
JtifjjQ0o5yj77FYihlb3GbhppQb5fhHOApyV8PS0S+hwYMIM1sYadSwZkPR
B3uWFzUh0NpDi/yAeQYWRnoHbo0Ya2reHrBIMgfWuW+ZgdWKQ6A/prFYEzWw
DnoONODELFNhOEWtCJthxHPHrFVDHmyH0BggaLdYLMsgjp4zADDsn+Asa9hk
3X8RAQvzcY0Ja3nCDMwoXAAUuRDewOw13Sj3DpwM8AVPdhERbeArU4IhO3zs
U9be1Er3cH/D3XHp3vKeAMu7gzGP1CcC6kow33LfXY4g/v2N38WJDC0gMc8A
2B0gvFHRvXf3inZ1Q/AcWh1nCbnpiWIvWeDCBMQBLbgY6nfR0QDT3w7CDnER
fcGuS3AmyG7kPZhPDH4sYicgaiyXOy/B7gAeijYw0h7DYacDG40+1JgoN527
pjIgY6apXOXzzaDrHrMoD+ZQvn9Hr7JUvGuHWpWCVpgy+f6dOoC7UZgG8VSM
MQB4ZGLTWCiRQkm+xPAcg6wj2YSuQND04ZyEH2PY2aoTmYQtQnQaF+Gu40Gx
44ddcHIaFJYiAzjKwVBMQumstJnip3lsH88L1VpR0gC/EDQOaAyd0UUAIA1C
GZ7ooW8tdYHeMOZQDFfDcHQQBtsjygXHdUJOH4Vf+f7q7hbIWJFh52tFRxmV
mqp5+6F7vm7kk8Bf566sPzEbEoWLaywMU3VwzKMAjLCG5WaGoJ4jTmfZFIaB
WbjZ7xlYKr7FsdMPU2+UPqNY2YcQQBN0yEWnqmyIacYZVzII8qkcQGDaPHBK
k2SUgdjrdA7ZRcQlE0oRk18TdWV6jA6l8XrtGqILZSqN58D0X08TQYPT3SQ8
BfcrctlhNlMKHgw5XgGnYLzJj0qyUNOXL1JQ+cuXBINcdRx1K1JHLOZlGi6L
eB2S2+6nQN4aOuqkiUEcFnCXNK6MfaUMdEMcFrlVBZhI8F++hHjwkfEgwOwP
NSamvVFopH5MhFqgEbUDPdlqRWj8I0tl9BQpDKg2dN5dJ6PON9cp7YffXR0D
W0euTZI5j+5qubQd2IK3dtIeP8E2CWNRaOtwCjCCAVRfWzMm/gqSZkncrxL0
iCXgXAGEQlug1kTTRsoH/AcLEoZ3RQfiNMw3x3MMbRf5wqZli3IjKStzkUeM
A9CgQqcr2CFZ2hs0IcpEEiKDKvmdWah8lwOdrrSBkajgaub9NS5WAP0uuS6N
R2k/PrCZC3W5RODlZABo3yjuOxYmgbzjPCmgS1kLaLKAVWLmk+4gVTeGpZkr
XV6xpZ/CWg+tEwPO1IrZHtKPTCHTSD8D+9S3qRAVPhk+UjJ8FEKTzrPPwZcg
MOssg75Up0Rm4tkKVGvcISABQbeF1BfPvK5BfgCErrIwpjMPK2k83EcEFBeC
8pZmE/dt3LB6Y+iiqg19KKzAURqFoZ/ZtFRm/2HS6B1BXX5RMXe8m/xCmaFY
thX362EUwloeVFyXNCLMMKvZOon9Ao7xkS9qji6Vv1JP+UhUR8GrVIKPisU3
Ryd779P+e4t4R/D6Z2xzFClt9ydQ3x5fPTR8pMCD4X9h/Rll4nRHoJEmhkku
cdMxNS2+bxzwxvEBqzUSr9k39vJnDk0kXftrUfiktClWosGbo6W6RQrl62Gj
UJeSAcXy+mx+F+h45eInYC6NmGJa2sngQonohYW9ggEvpdngvWV7DbCVuzPV
2nkFL7WV4xBL2yJAvc6VBAwDSIx4lEsmE8nkkfT6e2z3E/v7M/z/O9vgsHwK
cH9KUeieouCWYJL3REL5z/T1d47p07FqIhJOmU9EHHmA97ZBCaPm8FYc2oyf
Q03eQf07yH8X/e9sgLwFUdvxDt5OOVX9F6CPz/TzrwaRk/t/AYiCsQ6B6BP1
m5oGp/LLRpey2IKv4aaJmbcwj2LfadwQhftgMKA1tCJYFIv1ltRy0Yix9ES5
FzNjaDFZhF/PVJSpanMXs9Y6K61yTyJNNVTUDlli7QtzwrQZOIfEmhJJc2WT
KeVzzwrKF44VtpsKagflMzOdUqkkeCoiJJbKJXKJ9LHv7n7dXdpXZQaMjal8
qvSiB0kl8onUcXQJWCjTa5FNkDgWIc2IOavdbiuIkYQgoB4pC4pGW7VC0YLZ
cBllb4gGzNRALcwNjLdG4z6kDxJzTAwaGhV6mm77YQTS/ebW1gGDXAI9gTVD
5Uvl09/+9kmhVT0bh1uEIKe543HGwy9Il4iy01QiRclApoLYLkSXSpGojlxG
uYOZP/0tphxkjnc91SPOJkpBQwsUId6tI3EZNj8QNmbUTWvOVUeXohcs/Isy
g6fqpeohn8JocENnpZUrww1FyfxZqcfvz7DjE1B2D4coSshMNMcZi1WkSlEe
88G3AXChKBT19YS9rcolFX/CQvqv+6xxINofYgEe+Re+jyuaMTd3D6OoCIEg
KbXKxV07wdWCj06Th9KiYQmtiTAHSuXOhLygzxFuHK/BDcLzGRrsPOh6HBzt
qI1uZHibeBWDeyS7jMc00Da2vdmJcBFwkD1PRhRQ+5VUIqsSEcuvRVTNfHDb
dyppgpSI5G9ERd1ppF6hngKGCMEzWo1NXkJEEzzGFOsgaWWQilG5hFLzg4us
JpctjhvbonQIpwiGcimyXALayaPf6diNQok+3i4WGDTTpL6RZCOQAN6SwEFk
ndFh2vkYTfg7G0qt4LQ0wv6r2C4E2f4WMx0QxRU8cBTecQSeMtcjHUAOFWxm
tit223B3d1tKVezSEH31iBJGHo4OpCtfjwKBe/SVDyDhH/o7ZALrmEVBhKxk
iAQHbSUF2lmkmIkWVOZ74mVtqBFdRb7wju4xOG0a0VdOUPh0UIZiCSjldale
WJIdCaXnUj5pOTb8/5bTPxXR5Rc8pAAW0ufWbaks8hr5DIgBXJ8UemFSnsHG
ile6qFcEuJFK5wR4B0NXUYhizQAOkd8LzDuRKsTtEMx3qFoOy8zpjgkDT6Jc
GqZ5Q5S4LKzB61rHJnkj7UlpS2TNohSKVBALMkMw7O7Wu5IpOjXWPh4QXTRF
VBKnDKILOcNGASvklBNiuzX4lzTN3mdwH6rv/OSylWG9Hc0syudF0gnlmuWX
/IrP6OMxVC5/DpJ8x0FhoF8DmsBkeAHwvcXBwqWdPI7OKq6jk6nK5z2hfSKL
ZSZ5jxMhJIWkQtTyfRNbIpQ9lt8zfXdMgd0JAf3+4YbDHQHzVJCf0EpYz1jA
JxVoGdZEeC0/5S7NVA0sOLdBn/mnVDwqFw+U3u4JeJEkVBC3JoljkechupEq
JcJp4z1LTjy3WObONXSRXGa8tQ4oz/D8LOTEcNBCg+WGMReWODQH5qIaduIs
VA1S9egNbNJDJ2O0+t6sAeC2sKTDqRjCKtMJL2tg9bSUwW2H6TI6KFIy4pB2
QrGLxSgHkp0Gyj8q6fEEoYHyQM7uBQJz0a13hK+SzLGEsnRktWW3uHWWpdIc
pUTPfVNEDBD1cmkGfb2THw4Kaqx3U8OHeGg3zUwzfmPmOLEnXA/l0BUWfBY+
Y+sTk3ACwyXc0ZX3iEH4gwH2sI9yMDr93qwiVM3SjahfF2ODhay57wQmSnRP
Gdy9swc+nJKNHIDq1yegk8Q9SBayjl2Xuwr4lXF/5cJ5jVVt17sMZmIepex/
xkJw+q7sovJ4kSjmpql0Jhs7gI7dxpN4NpG6eW4wfzWI4KxDnpNMTmKNPAjz
/m5Hoc2lJ+JU2Zt7gxiEXEFORRWy3msZXaiyR9a8cuVgUcg+fQuajlzb4X1l
4B3cWx/sD29qeJ9+UvpIdCK8BDrioKxoh3HpCnI9rBtYfQV3RTDZb/pi3tfd
S4fEpUqOHVnrkIXNLHHRi8pJjlDPsdk22pawR/NprGzwDjoTzDitU1jklfsB
qXDxE23xAbspqjM7DCIv7s0aPTwC4y9eVLCAqtdm4kBl4JUKt+DAODeD205Q
eyMqkM5QJYCRVpoRbe4rvl0z6ZCZoHxGTnjbujlW1KmKEZGPLZLaeL8Kmj0u
k6bbMQDfPPuTwMJFuv3bty0AhFcKZPiVi9QAxuM0sKOcsVku/5CRhTWKH5kQ
qYYP6k8EEBi2fuJHlT8EKq1yCptmgQcOLMDqqWsyD0XzABOwb0DMcRxp7glC
jeJYQaBv+FI+/32ABrBuFcUGNXs64lRQiZua7AD4B09VS6GcQ96kEG4Rh62w
zgVzKgllQE8seQcPOPnujkQvJ8j2PMbih/oxNkAvAqE04B950kKLwxP7cmyY
iyhxMBdNFpefcXN2RTmSHJ4HlX22gwff9hQBPa8XsX/S5B46oBFOrooB1ukK
TV1eOhQ+qBjn53H4UNz1i2B4WkuEx1DBYDLAY+FXKWCttefRK0xw4QsUiMzr
eMvk/xhLxyVdGR6Dn1OeqWBfuDOkI+G1MWTBVvjyyS9iFe4cOAMLAsjU3RO+
3ejYMJXIT94iW1FzH7QEOgXHbG2egcDQ1Ja6lWpyTKLOsdiDXS2wv3/hkAVG
/aJVwNsC6IS5skK+mYB3zIrYSL+yL0poEaM4QitHEOJcKoXlRKnQlM1tVwNe
AoEo+16CmBx0uDBluFRB1B208/2F7J7SVWoThYAZZW8JyNsooSXClRJpO2RN
UGcBBAa1KHkNiymX0OyeBBOo55RCsCWKaNXjZ16p1Uz5SqdFyrJkkSvoafUV
WrL0Zgl2enTJRQKAsCv/rgiubsEvu2CyKSwOgV5Xph746F6osMaWxlYpVly8
dEX58gWjhQ3VAjrD0bHSKMS5/i0mrof1y7QI2/YkOcP52H0HU0Iwo46nA2Ab
6RiGLFto7Tu9kSS4Y8Vl8m8NTSRxoXPVgQthNFgXDIsr2ZeqMoebtjVFA9dn
cQ+mOmwW2zzcFa3yTFvlqp5PMfbjobQsi1nNoQgph9uviSqpoI+sqQT4fk6U
m8g7hbTvpyNF2kODOZgvywuf/4P6YKprU0UnynWVbrcuhFY6qwBpYX3dbrwY
oS87DmxiFRZuRsIurk3ZU10cTWKjNRNvsCB0tIBZOQiGxWQ/l1dgN6wmQPg0
ckGF/bGvCel9LPt3yCg8VcKAriGnU5agV7vgUXSlJtqH2JvG+JDeYBTWlnkD
/lU1gfUxIdT0df2QOAbcT5Q3knKynggCYEQPjvv/pNQKzcKeNMDiC9zwW0EB
sDFkChA50RdcOPQlzQSHpAKs1tkKD/doZ8gj3s3ZcklBS7YR8S+Ir0gyo+3a
ZEKwSAhvdVD+Grqq4mfaoEPrMfAtqhEV75+gz0ssU8EPjpvEofuCl6WxYU2V
nc/3pTO+/2zZFjlmuQu6F60g+v+bkCJlDwRmdgcOoUa+1+DyyxeGqya0ROgC
6UYf+0MoPRc1e51X0mPTyMyy0Gb8q4ym0iE0vYH9vUsY3gAYcynvAv1jofP3
MHR4lKahfvBe7k+wR+4CI1fhLQxyu7x3WTjsbVEWExCKRKDYlxb0SEUoCHoH
BPKCfHbxthYe8vkReKRTVWitEC7kh6GvusXbGsD3Urq85o2eQLE121Q+46TH
0qx7OA1ehTRFOHD4pozoiCM2Ot22HQR/kLwOliW/iSWgcNCRhisCO0dvDxYs
nto5gaLQVVONVO54naArglK8q0M0ercVNYcPdQxS9+wKFkegQTj54YVINR94
lI4GFn4Sa+cFSmhO05o+yUDh+8brxRBaqSaEq2q/8vpIXJNH28FfTXVJYG0n
6GguPX6BbgYIdNCTLBkmyBFGpSihF1vR/nFQ/b69DlSBl1msLJOX9WOCnEag
oCPYAUCnLq39C7J0DmEl5qjRQdsxkwyNH3o+AMmelbJpRJRySMu/oun3JRd9
gIWiY5AJz8ovRRwW4fA3RiClvX9eAcvbjo7pDFGsDsNjZBkZXumgF77AyxLd
E3Zi5wifHyVoE4ozeDGlUXGxMcHtSyiTDLTteK6EpfO5PSQgBKMJA3j8KrgT
dlll8HVmLwg7eABGwDHdNBrroJX/NLqu05V0QnR2xVmPCTdYUXuXLv070tAR
4J95djJ0vCIob1lS2gY+lMsCqAVEe3Ezl92XZfsn2mDDl9INM/5UCbwdSxwY
CvYPHB6yxqy9y9xHN3LFynjlsQok//IpnfNSjd9xJ+QJ3VucEJEkiMH1le8u
hwUHzcKvwxT4o8+vIUW6H9A9b21ylMURdbbxjbVHnrL4l/DwwWNtv8PSO/4R
r1YQMDm89MgTIO8v/V8++PZ7bHqr9rE175y5+PBqf6eTYb8DKnYNhCu5qv4w
Yt6s238TTf/Wo2I/HIHxeFwZq9qc3uRILe4KhZqlPUTZubgall++yQU3DS2y
KzDhTYXGNtHBpoQEksjAw2qqlIjM0QPO4nP++/cTsC/iYzA98tmVY8ZBedkg
+k9XFq9KIjzqQ6MCYFYwDYYGH1FZ8Q6iG3CFaQWKN4wsYa6v68qXDLCbPEUU
jwaPQlfSlTAGAWT/IaATSofVofDyUz/8Iw8KQJR8III7DH4SZ/OUFC/5xDQI
exRK5UvlVfQY+KAjbq0DG0xkTauddC7/XgrsrQHaOMDBaxijjv756i44vvXI
NwZPu7CbWPd2VJzSU80ptqJwi2fedonPYMvEk7mBox+pbhyc5HjqyD9ss1S3
GAn8TVODZJKP4xw4RuiuxtgK6Mj5S8RrdaXLgxw67GioCFHqLJ+8yOazFzn+
GKxm9jiTy5wHj2mMDYcNDrnx68wxeCXGDIcO5DNQc48eGGt3Cv55piN69OjF
vu7HdWdZm23uL+4zjZy9sgvZ4Vn+KesktfRQu7Fb3fRzTz/vvfRTrVE1n+pe
j3pjvVfQ7+vPxlnLmGeuN915JjvOP7yM0/HefJB5tdXiy2O68vAw6Q82nf54
8mJk26VxpRV3BtfmeDvstmv1p3zpppG7eaid9+91rVM5305ao/7W28TV2148
N8+2df32ZbptbOaDZqkzG7TUx2p60HavXrXt+fmyHD9/TmnT/GysPueuu9uN
bnTI9cB5agzJ+P651oz385nxQ1o17qqzyrrVX5bt2lnBfDGde/1MvfEqm8mq
bcaTlZebajxd6zpWtTJSKwXdvnleVzpXmbvbUXNeLhWXq6t6/KqqjXqjSXnr
ZNvrcWZQTBqranVSfXidjV+fC16mOR6p5kK/b24CJNNNK9wXikc7h8L8TD02
SE3bZ92Oej7xzgdedlS4qK7qle5wkF4VNuf5h/Sy0naeL56u7Pt7//zXWxeR
/m5c2f4QVwZ0+Dtw5yG+42wZHBeKZLtfz525ZHKfO+FRJv8Wd+6zJN0c2mh7
Mxtfa8adcVPrvdZSTaPm1qx2TivV8rX58qFfgu8LbznC74vKa33gmaSTfKlZ
yQT0XWqZBva19Wp7o73a63q68tro5ExyXfG06xezvmiuxx0cs5kaGjCG1X8d
PdwURg+z2fih6I46uadxOmnUSzczfXAfHitzY2qv5VVE2+XwAdo+lTPNp0Ku
eTVM3nV7AGc/i3A3ulq68dp7vbu6zzU7G0NLN9fadQ/HNseDynJ8tdyOBpV5
7brvDQeme2c1zfHiHsedjwYv5ihdSaqDi9VDGtday8M6Hb06x/6dXrKM7Va1
J9sg1xfVvpGaa1bxRq3q7bt++bXb7a/1wUWxWZlnmgs7qT0Vnxqm+dRZXNz3
r25e+oP7bP9hNmj0i2rnavjSL+tqf3Az7/cq817v5UXt6vfqwH1tZ/Se+tpI
Dp9GQ3Jd29b7faf/2syP05USAeHUNmfDkTl60FPNwXAxyqrdduc+fXPdK6W2
/aTuDi1z1K/c3HSv7fR9ctls9pbDTnc26A3aT73kMEsGo/uBOcrpVc0b9rx+
vdt3mhVYfxlYPmM29bT30J03u2pFvx/2L2oNU+9oyXZ+mJln76rFSr07e2kM
mlZzMTOGD+VUO9XO6en2spfuV/uZm+du3zSHZuWl08t6/afh69CcbgHXrc71
7Fo3iwOt3F93unpxXJ25mlmZN9OVW708yoysfmdcSm7a1uy2U0puO/32djyf
XQ8Wlev7QXvdsSrpttksN5IX9cE857R7zZJW7Ze7pVS5c91U+/3lov1gbmEt
6eFT8+H+qbjUe7PaaD4bEoCVWJWiftW8G5pLoPsU4DyXqRkbY9RBeq+073s1
Y/KQTPwqIRgpRp3cXVbN6Jlmo3m2Hpl3xYtW9rlVH1e321R6PKrmqmrmalTo
qufNnl4dtm6KDYMYnZT3PJ5tJlZ3vdE67cdkQcum9Xb1ypmfNwatecl8vIiP
J8PmenJBrh1t02lbZ+fnF3GQGdX4/XL2MrrOdl3nfJEemNeN837FKl24T/PZ
8/V60bgY6aVk+rqsgnfQu7g6z13c9zLxVdxbt/XO1Kk+kFV9mFYzs+lyYD0l
n7LTyXS5msb7nXWzmM6vn0uDTSO72DSuB8Ne60odF9XWMn5bz5w/NlLds+fs
Zl0pJx9v6+tuR7dfGyRlTed1soGtLjrWIOX06rOHyjyXfcqcpzb3j/ZavZk1
UmphPHBn41Sh8bqKq8Y6WR7dPBVTD+b0rt2fxW/HNT2Z6o7u65uCfOJYWKbp
X2mZlvlX32ZntmUhlT4vFUvxf9lILf97jFTdcMQTaEBVvbyij5qv6YCejTU+
dy8uvKvz7G019TifjgvpgrPsjaa085FmLGcsAfAW5D6i/5+xbculwOrSHIrG
VjzYBHj6gs+M0fQ+4+XKt1mnr8/JS75euJ68FJM6uat65Ux8PY7fFV/syvr8
POjJjOf7/rA6Lw+cbjv/pM2vzozqg9Vuu/lkfHVhzDuTvtXIkqVxVx/uGnue
SsnlYpS9a8439c06475246R2q2ZX/2aLrvxbLLr0/7foDlh0c/WhhtYKWDfU
Sis2urXsffLmqt6bdRtPvTRqPr1qbtCa6Zh6D7+raXOO34cPDU9N93P1LmjE
+0QiWgwkrjo5tZFarW6XlYqqrc6c2vr2bmgV4vliu7XNP21H8cyqcj5eLk0w
c0r3C7dgnN8+d+LP3dGqOmhOaoPN2cq8javnzmA2abUmdWeqP8y3+d6T9phZ
L3LDh/bDYvNiqs0bc+ak6+Sl9eB2H9KbwmNGrdkXWnKcm98X043qM6nlVtrN
VUcvt0v9dEG9707Ns3V7cTMbPVYKw5xm6eleu1p2n61FbuU6283rdaO+yZWs
h2m6UTRTT4MXo7qMtxavd4t2qzp3s0+Vfpq46acnJ74t5lrmQ1oHniz10jN1
1Xi8efKs4d2suDUeFoV+v5x/uH26qT4MG3E995y5mZHu1TQ3LWQnqZoNStJJ
3xYyy0HyrFS5yDZfMsZZv/2iVtqd/nDVfDHLs95Lcv1yVzM37aKaeRzd3WZv
59O4Pc3nC1fuWaa9Kk4vUlrJm42dfAZwp5cfFovh7XUaBrsiM/tp3L8d3TvT
xCHujjRVZuZLrXHXGz8O9KdZLtNvaevVQ3HTvTKuX0tnd+dxe9JP1wvr+caN
19u159tKftAeZW7t1nXK6JavrmbEzDw8FK5L20m7Umo8VDO3RiBKfqIHUkvA
eK58DRRGDDv+70lwGdPGQCMtr6JhQXZ7lFKoKYUpS5iU2Y/mYHFoTee/ZIKq
mvcPatcUd+t6ZCF+DYoVBCptGwyGouoGUo1HJZXP7WKhdEx/asQ/BRjdsIAN
sVIVkchPSbJFLAzLWOBlC3KwnQWbeUEiE0D4mz201BnGA2NFJxgrXYg7L1na
0z+LiGkpvn4RuFMtfzxWMO7yUj7XwEsb+O+3KGvDoT9s5c9Nw8B48g1vtgxm
xYgiOy9o0hQYneuTfF5CXhCv5MR6uTj+Jg3GPDH3JZcoqwpYIywLAWsxPFrv
iLObJl03vdT5k//jLA7uekJpq7hyHqMMCud2f8mNdj4J195i6S2/UPa00KrR
Hz1ETJ+ijMcPOBUtip7SqyI8ns5XTU4/oAnoYUAdfz1qPjHtDVhw3xi9fKNp
KhhaOaWRV/obOco3eI3RaP5/bCyyDex3Fb7RffLp9YSmZNaGjlvCL8DxdwC7
898sgG4c/+I4X/BDPLTdbgYBetbipSvWDbBHf6GEfb4q98VHjPRijTv7TgeK
vGb0mwSyUis0OB+FFxjZtuuzHLbtsnRjxIWk3xCs0063cF0+bbXvsLAOKNW2
+A+v+YW3mF4wiY6F9Xw3YeBfLsWF5L5QiLhrHI9G4A/U/fMf/4PhqAADbj1D
c5WWqXqY6MBTE2Tq8CIy3CpJtHRUtRN4FaJY+YTWCjhLmxb4aivXsxfsPCA6
Ax0QNBvVIXEwpNW4oJjPONSxUhKNad0a8tHMWMrS6nOp3TiWt5qf6BX9NrzS
xFbwpAQwnIv1GpjicJnIHG/Z2XIukCTpGfqpPh8PS4EH8eM8wQ8lIXcAOIp0
yQ9+lemQ3XkQeT2NX68d0AbQsiGENS/xdOj1G1j75B9rx5IXx4E937IyzoPH
8sT5v2AxnPV5jQlrRQ8pU8GFghYN+WCFKlYO8MtSTugVg0EhSSBsfOTL1Rus
BoVelS3fgYoSEFP/vjAO1UwQ95gfkNnHP/+9MR9uAG+5MtkPCp7Ilz3jKZmp
wxEiEYCHtStTWkjhEMwSn4iLrg1aW2t4NGMmNNHuVvq/R7VP2Xia1SA/QhLS
ollr+89//O+C8pkW+wNLWd5xWPAhr+zBFy3y9vb+oxJNbx0QZbvz8sqA92TZ
TjdUm0gtvNYECAFT0lRuCcEVyJk4LnhffP1fnrNU0M54AAA=

-->

</rfc>

