<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-oauth-resource-token-resp-01" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Resource Token Response Parameter">OAuth 2.0 Resource Parameter in Access Token Response</title>
    <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-resource-token-resp-01"/>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Jared Hanson">
      <organization>Keycard Labs</organization>
      <address>
        <email>jared@keycard.ai</email>
        <uri>https://keycard.ai</uri>
      </address>
    </author>
    <date year="2025" month="December" day="22"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth 2.0</keyword>
    <keyword>Resource Indicators</keyword>
    <keyword>Authorization Server</keyword>
    <keyword>Token Response</keyword>
    <keyword>Mix-up Attack</keyword>
    <abstract>
      <?line 49?>

<t>This specification defines a new parameter <tt>resource</tt> to be returned in OAuth 2.0 access token responses. It enables clients to confirm that the issued token is valid for the intended resource. This mitigates ambiguity and certain classes of security vulnerabilities such as resource mix-up attacks, particularly in systems that use the Resource Indicators for OAuth 2.0 specification <xref target="RFC8707"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mcguinness.github.io/draft-mcguinness-oauth-resource-token-resp/draft-mcguinness-oauth-resource-token-resp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-resource-token-resp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mcguinness/draft-mcguinness-resource-token-resp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 53?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 defines a framework in which clients obtain access tokens from authorization servers and present them to protected resources. In deployments involving multiple protected resources or resource servers (APIs), clients often need to determine whether a given access token is valid for a specific resource.</t>
      <t>The Resource Indicators for OAuth 2.0 specification <xref target="RFC8707"/> introduced the <tt>resource</tt> request parameter, which allows a client to indicate the protected resource or resources for which an access token is intended to be used. An authorization server can use this information when issuing an access token, for example by applying resource-specific restrictions based on policy or configuration.</t>
      <t>However, <xref target="RFC8707"/> does not define any mechanism for an authorization server to confirm, in the access token response, which resource or resources were ultimately accepted. As a result, a client has no interoperable way to validate the effective resource scope of an issued access token.</t>
      <t>When an authorization request includes one or more <tt>resource</tt> parameters, authorization servers in deployed systems may exhibit a range of behaviors depending on their capabilities and policy configuration. An authorization server <bcp14>MAY</bcp14>, for example:</t>
      <ul spacing="normal">
        <li>
          <t>Ignore the <tt>resource</tt> parameter and issue an access token that is not restricted to any specific resource.</t>
        </li>
        <li>
          <t>Ignore the <tt>resource</tt> parameter and issue an access token that is valid for a default resource or set of resources.</t>
        </li>
        <li>
          <t>Accept all requested <tt>resource</tt> values and issue an access token that is valid for the complete requested set.</t>
        </li>
        <li>
          <t>Accept only a subset of requested <tt>resource</tt> values and issue an access token that is valid for that subset, without explicitly indicating that other requested resources were rejected.</t>
        </li>
        <li>
          <t>Override the requested <tt>resource</tt> values and issue an access token that is valid for resources determined by authorization server policy or client configuration.</t>
        </li>
        <li>
          <t>Reject the request by returning an <tt>invalid_target</tt> error response as defined in <xref target="RFC8707"/>.</t>
        </li>
      </ul>
      <t>In the absence of explicit confirmation in the token response, a client cannot determine which of these behaviors occurred and may incorrectly assume that an access token is valid for a particular resource.</t>
      <t>This ambiguity is especially problematic in deployments that rely on dynamic discovery of protected resources and authorization servers. In such environments, a client may learn the protected resource URL at runtime and discover an authorization server using OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>, without any pre-established trust relationship between the client and the resource. See <xref target="resource-mix-up-via-dynamic-discovery-example"/> for an example of how this can lead to resource mix-up attacks.</t>
      <t>A key challenge in these deployments is that the client has no reliable way to validate whether a discovered authorization server is actually authoritative for a given protected resource. While <xref target="RFC9728"/> allows protected resource metadata to be cryptographically signed, this would require clients to be pre-configured with trust anchors for signature verification, which defeats the purpose of runtime discovery.</t>
      <t>Similarly, an authorization server could publish a list of protected resources it supports in its metadata <xref target="RFC8414"/>, but this approach does not scale in practice for large APIs or resource domains with many distinct resource identifiers, nor does it address cases where authorization server policy dynamically determines resource validity.</t>
      <t>Some clients attempt to determine the applicability of an access token by examining audience-related information. A client might call the token introspection endpoint <xref target="RFC7662"/> to obtain an audience value, or might locally inspect the aud claim when the access token is self-contained, such as a JWT <xref target="RFC7519"/>. OAuth treats access tokens as opaque to the client (<xref section="1.4" sectionFormat="of" target="RFC6749"/>). As a result, neither token introspection nor local inspection of a self-contained token provides a reliable or interoperable mechanism for determining the protected resource for which an access token is valid.</t>
      <t>Audience values are token-format-specific and policy-defined. They do not have standardized semantics across authorization server implementations. As described in <xref target="resource-vs-audience"/>, audience values commonly identify authorization servers, tenants, resource servers, or other logical entities rather than concrete protected resource identifiers. A protected resource may accept access tokens with broad, narrow, or indirect audience values. There is no predictable or discoverable relationship between such values and the resource’s URL. Clients therefore cannot rely on audience information, whether obtained from a token introspection response or from local inspection of a self-contained access token, to determine whether an access token is applicable to a specific protected resource.</t>
      <t>As a result, learning the audience of an issued access token does not provide a reliable or interoperable way for a client to determine whether the token is valid for the intended resource, particularly when multiple protected resources share an authorization server or when the client interacts with resources discovered dynamically at runtime. This document uses the term <em>resource</em> as defined in <xref target="RFC8707"/>. The relationship between resources and token audience values is discussed further in <xref target="resource-vs-audience"/>.</t>
      <t>Consequently, existing OAuth mechanisms do not provide a practical, interoperable way for a client to confirm that an issued access token is valid for the intended resource.</t>
      <t>This specification defines a new <tt>resource</tt> parameter to be returned in OAuth 2.0 access token responses that is orthogonal to the token format issued by the authorization server. The parameter explicitly identifies the protected resource or resources for which the issued access token is valid, enabling clients to validate token applicability before use and reducing ambiguity across deployments.</t>
      <section anchor="resource-mix-up-via-dynamic-discovery-example">
        <name>Resource Mix-Up via Dynamic Discovery Example</name>
        <t>The following example illustrates how ambiguity about the effective resource scope of an issued access token can lead to a resource mix-up attack in deployments that rely on dynamic discovery.</t>
        <t><strong>Preconditions:</strong></t>
        <ul spacing="normal">
          <li>
            <t>A client wants to access a protected resource at <tt>https://api.example.net/data</tt> and is not statically configured with knowledge of that resource or its authorization server.</t>
          </li>
          <li>
            <t>The client uses OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/> to dynamically discover an authorization server for the resource.</t>
          </li>
          <li>
            <t>An attacker controls the protected resource at <tt>https://api.example.net/data</tt> and publishes Protected Resource Metadata claiming <tt>https://legit-as.example.com</tt> as the authorization server, advertising legitimate-looking scopes such as <tt>data:read data:write</tt>.</t>
          </li>
          <li>
            <t>The client has an existing client registration with <tt>https://legit-as.example.com</tt>.</t>
          </li>
          <li>
            <t>The authorization server at <tt>https://legit-as.example.com</tt> does not support <xref target="RFC8707"/> and ignores the <tt>resource</tt> parameter, issuing access tokens based solely on requested scopes.</t>
          </li>
          <li>
            <t>The user trusts <tt>https://legit-as.example.com</tt> and would consent to the requested scopes for a legitimate client.</t>
          </li>
        </ul>
        <t><strong>Attack Flow:</strong></t>
        <ol spacing="normal" type="1"><li>
            <t>The client retrieves Protected Resource Metadata from <tt>https://api.example.net/data</tt> and discovers <tt>https://legit-as.example.com</tt> as the authorization server.</t>
          </li>
          <li>
            <t>The client sends an authorization request to <tt>https://legit-as.example.com</tt>, including <tt>resource=https://api.example.net/data</tt> and scopes <tt>data:read data:write</tt>.</t>
          </li>
          <li>
            <t>The authorization server processes the request based on scopes, ignores the <tt>resource</tt> parameter, and—after user consent—issues an access token without confirming the selected resource.</t>
          </li>
          <li>
            <t>The client receives the access token but cannot determine whether it is valid for <tt>https://api.example.net/data</tt> or for some other protected resource.</t>
          </li>
          <li>
            <t>The client presents the access token to <tt>https://api.example.net/data</tt>. The attacker intercepts the token and reuses it to access a legitimate protected resource that trusts the same authorization server and accepts tokens with the same scopes.</t>
          </li>
        </ol>
        <t>Without explicit confirmation of the resource in the token response, the client cannot detect that the authorization server ignored or overrode the requested resource indicator. User consent alone may not prevent this attack, particularly when authorization servers do not prominently display resource information during authorization.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</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 anchor="terminology">
        <name>Terminology</name>
        <t>The terms "client", "authorization server", "resource server", "access token", "protected resource", "authorization request", "authorization response", "access token request", "access token response" are defined by the OAuth 2.0 Authorization Framework specification <xref target="RFC6749"/>.</t>
        <t>The term "resource" is defined by the Resource Indicators for OAuth 2.0 specification <xref target="RFC8707"/>.</t>
        <t>The term "StringOrURI" is defined by the JWT specification <xref target="RFC7519"/>.</t>
      </section>
      <section anchor="resource-vs-audience">
        <name>Resource vs Audience</name>
        <t>This specification uses the term <em>resource</em> (as defined in <xref target="RFC8707"/>) rather than <em>audience</em> (as commonly used in access token formats such as JWTs) to describe the protected resource for which an access token is valid. This distinction is intentional and reflects a fundamental separation in OAuth between resource identification and token representation.</t>
        <t>In OAuth, a client interacts with a protected resource by making requests to a specific resource URL. The client may not know how that resource is represented internally by the authorization server, including which audience values a resource server will accept. As a result, a client cannot assume any fixed or discoverable relationship between a protected resource’s URL and the audience values that may appear in an access token.</t>
        <t>While a resource identifier and an access token’s audience value may coincide in some deployments, they are not equivalent. A resource server protecting a given resource may accept access tokens with audience restrictions that are:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Broad</strong>, such as <tt>https://api.example.com</tt>, representing an API-wide identifier.</t>
          </li>
          <li>
            <t><strong>Narrow</strong>, such as <tt>https://api.example.com/some/protected/resource</tt>, representing a specific protected resource.</t>
          </li>
          <li>
            <t><strong>Logical or indirect</strong>, such as <tt>urn:example:api</tt> or <tt>https://example.net</tt>, which have no direct correspondence to the resource’s URL.</t>
          </li>
        </ul>
        <t>Audience assignment is a matter of authorization server policy. A client therefore cannot reliably predict which audience value will be used in an issued access token or which audience values a resource server will accept. This limitation is particularly relevant in dynamic environments, such as those using OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>, where a client can discover the protected resource URL but cannot discover the authorization server’s audience assignment policy.</t>
        <t>Some deployments attempt to encode protected resource identifiers into scope values and rely on the <tt>scope</tt> parameter in the access token response <xref target="RFC6749"/> to infer the applicability of an access token. This approach conflates two distinct concepts in OAuth. Scope expresses the permissions or actions that an access token authorizes, while the <tt>resource</tt> parameter <xref target="RFC8707"/> identifies the protected resource at which those permissions may be exercised. Encoding resource identifiers into scope values obscures this distinction, limits the independent evolution of authorization and resource targeting, and does not compose well in deployments where a single resource supports multiple scopes or where the same scope applies across multiple resources.</t>
        <t>Some deployments also rely on protected resource metadata <xref target="RFC9728"/> or authorization server metadata <xref target="RFC8414"/> to discover which authorization server is authoritative for a given protected resource. While these mechanisms support discovery, they do not provide issuance-time confirmation of the resource or resources for which an access token is valid. Metadata describes static relationships and capabilities, not the authorization server’s resource selection decision for a specific token. As a result, metadata alone cannot be relied upon to determine whether an authorization server honored, restricted, or substituted a requested resource when issuing an access token.</t>
        <t>For these reasons, returning audience or scope information in the token response is less useful to a client than returning the resource or resources for which the access token was issued. By returning the <tt>resource</tt> parameter, this specification enables a client to confirm that an access token is valid for the specific resource it requested and to detect resource mix-up conditions in which an authorization server issues a token for a different resource than intended.</t>
        <t>This approach is consistent with Resource Indicators <xref target="RFC8707"/> and Protected Resource Metadata <xref target="RFC9728"/>, which define the <tt>resource</tt> parameter as the client-facing mechanism for identifying the target protected resource, independent of how a resource server enforces audience restrictions internally.</t>
        <t>This specification does not define, constrain, or replace the use of audience values in access tokens, nor does it require any particular token format. How authorization servers encode audience information and how resource servers enforce audience restrictions are explicitly out of scope.</t>
      </section>
    </section>
    <section anchor="resource-parameter-in-token-response">
      <name>Resource Parameter in Token Response</name>
      <t>Authorization servers that support this specification <bcp14>MUST</bcp14> include the <tt>resource</tt> parameter in successful access token responses, as defined in Section 5.1 of <xref target="RFC6749"/>, to identify the protected resource or resources for which the access token is valid, according to the rules in <xref target="authorization-server-processing-rules"/>.</t>
      <t>The value of the <tt>resource</tt> parameter <bcp14>MUST</bcp14> be either:</t>
      <ul spacing="normal">
        <li>
          <t>A single case-sensitive string containing an absolute URI, as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>, when the access token is valid for exactly one resource.</t>
        </li>
        <li>
          <t>An array of case-sensitive strings, each containing an absolute URI as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>, when the access token is valid for more than one resource. The array <bcp14>MUST</bcp14> contain at least one element, and each element <bcp14>MUST</bcp14> be unique when compared using the URI comparison rules in <xref section="6.2.1" sectionFormat="of" target="RFC3986"/> after applying syntax-based normalization as defined in <xref section="6.2.2" sectionFormat="of" target="RFC3986"/>.</t>
        </li>
      </ul>
      <t>When an access token is valid for exactly one resource, the authorization server <bcp14>SHOULD</bcp14> represent the <tt>resource</tt> parameter value as a single string to improve interoperability and ease of processing. When the access token is valid for more than one resource, the authorization server <bcp14>MUST</bcp14> represent the <tt>resource</tt> parameter value as an array.</t>
      <t>This representation is determined solely by the number of resources for which the access token is valid and applies regardless of how many <tt>resource</tt> parameters were included in the request.</t>
      <t>The <tt>resource</tt> parameter uses the same value syntax and requirements as the <tt>resource</tt> request parameter defined in <xref target="RFC8707"/>. Each value <bcp14>MUST</bcp14> be an absolute URI, <bcp14>MUST NOT</bcp14> contain a fragment component, and <bcp14>SHOULD NOT</bcp14> contain a query component.</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "token_type": "Bearer",
  "expires_in": 3600,
  "resource": "https://api.example.com/"
}
]]></artwork>
      <section anchor="resource-identifier-comparison">
        <name>Resource Identifier Comparison</name>
        <t>This section defines the canonical rules for comparing resource identifiers when determining uniqueness, evaluating requested resources against authorization server policy, or validating that returned resource values correspond to client expectations.</t>
        <t>When comparing resource identifiers, implementations <bcp14>MUST</bcp14> apply the URI comparison rules defined in <xref section="6.2.1" sectionFormat="of" target="RFC3986"/>, after applying syntax-based normalization as defined in <xref section="6.2.2" sectionFormat="of" target="RFC3986"/>. Resource identifiers that are equivalent under these rules <bcp14>MUST</bcp14> be treated as identical.</t>
      </section>
      <section anchor="authorization-server-processing-rules">
        <name>Authorization Server Processing Rules</name>
        <t>Authorization server processing is determined by the number of <tt>resource</tt> parameters included in the authorization request or token request, as defined in <xref target="RFC8707"/>.</t>
        <t>The following rules describe how an authorization server evaluates requested resources and determines the effective resource or resources associated with an issued access token.</t>
        <t>When issuing an access token, any <tt>resource</tt> parameters included in the token request represent an additional restriction on the resources permitted by the underlying authorization grant. The authorization server <bcp14>MUST</bcp14> ensure that each requested resource in the token request is within the set of resources authorized by the grant, or otherwise acceptable under local policy consistent with <xref target="RFC8707"/>. If this condition is not met, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error and <bcp14>MUST NOT</bcp14> issue an access token.</t>
        <t>If the client includes <tt>resource</tt> parameters in both the authorization request and the token request, the values in the token request <bcp14>MUST</bcp14> be treated as a further restriction and <bcp14>MUST</bcp14> be a subset of the resources permitted by the underlying grant. If no <tt>resource</tt> parameter is included in the token request, the authorization server <bcp14>MAY</bcp14> issue an access token for the resource or resources previously authorized by the grant, subject to local policy.</t>
        <t>When issuing an access token in response to a refresh token request, the authorization server <bcp14>MUST NOT</bcp14> expand the set of authorized resources beyond those previously bound to the underlying grant. If the client supplies one or more <tt>resource</tt> parameters in the refresh token request, each requested resource <bcp14>MUST</bcp14> be within the previously authorized set or otherwise acceptable under local policy consistent with <xref target="RFC8707"/>. If this condition is not met, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error and <bcp14>MUST NOT</bcp14> issue an access token.</t>
        <t>An authorization server <bcp14>MAY</bcp14> require clients to include a <tt>resource</tt> parameter. If a <tt>resource</tt> parameter is required by local policy and the client does not include one, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error as defined in <xref target="RFC8707"/> and <bcp14>MUST NOT</bcp14> issue an access token.</t>
        <section anchor="summary-table">
          <name>Summary Table</name>
          <table>
            <thead>
              <tr>
                <th align="left">Client Request Shape</th>
                <th align="left">Authorization Server Outcome</th>
                <th align="left">Authorization Server Processing Rules</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Exactly one <tt>resource</tt> requested</strong></td>
                <td align="left">No acceptable resource</td>
                <td align="left">
                  <bcp14>MUST</bcp14> return <tt>invalid_target</tt> and <bcp14>MUST NOT</bcp14> issue an access token.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">One acceptable resource</td>
                <td align="left">
                  <bcp14>MUST</bcp14> include <tt>resource</tt> as a string containing the accepted resource.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Multiple <tt>resource</tt> values requested</strong></td>
                <td align="left">No acceptable resources</td>
                <td align="left">
                  <bcp14>MUST</bcp14> return <tt>invalid_target</tt> and <bcp14>MUST NOT</bcp14> issue an access token.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">Subset of requested resources acceptable</td>
                <td align="left">
                  <bcp14>MUST</bcp14> include <tt>resource</tt> as an array containing only the accepted subset.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">All requested resources acceptable</td>
                <td align="left">
                  <bcp14>MUST</bcp14> include <tt>resource</tt> as an array containing all accepted resources.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>No <tt>resource</tt> requested</strong></td>
                <td align="left">Default resource(s) assigned</td>
                <td align="left">
                  <bcp14>SHOULD</bcp14> include the assigned resource(s) in the <tt>resource</tt> parameter.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">No resource-specific restriction</td>
                <td align="left">
                  <bcp14>SHOULD</bcp14> omit the <tt>resource</tt> parameter.</td>
              </tr>
            </tbody>
          </table>
          <t>When comparing resource identifiers, the authorization server <bcp14>MUST</bcp14> apply the rules defined in <xref target="resource-identifier-comparison"/>.</t>
        </section>
        <section anchor="client-requested-exactly-one-resource">
          <name>Client Requested Exactly One Resource</name>
          <t>If the client included exactly one <tt>resource</tt> parameter in the authorization request or token request:</t>
          <ul spacing="normal">
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> evaluate the requested <tt>resource</tt> value according to local policy.</t>
            </li>
            <li>
              <t>If the requested <tt>resource</tt> value is not acceptable, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error response as defined in <xref target="RFC8707"/> and <bcp14>MUST NOT</bcp14> issue an access token.</t>
            </li>
            <li>
              <t>If the requested <tt>resource</tt> value is acceptable:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The authorization server <bcp14>MUST</bcp14> include the <tt>resource</tt> parameter in the access token response.</t>
                </li>
                <li>
                  <t>The <tt>resource</tt> parameter value <bcp14>MUST</bcp14> be a string containing the accepted <tt>resource</tt> value.</t>
                </li>
                <li>
                  <t>The returned <tt>resource</tt> value <bcp14>MUST</bcp14> match the requested <tt>resource</tt> value according to the rules defined in <xref target="resource-identifier-comparison"/>.</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="client-requested-multiple-resources">
          <name>Client Requested Multiple Resources</name>
          <t>If the client included more than one <tt>resource</tt> parameter in the authorization request or token request:</t>
          <ul spacing="normal">
            <li>
              <t>The authorization server <bcp14>MUST</bcp14> evaluate the requested <tt>resource</tt> values according to local policy and determine which requested values are acceptable.</t>
            </li>
            <li>
              <t>If none of the requested <tt>resource</tt> values are acceptable, the authorization server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error response as defined in <xref target="RFC8707"/> and <bcp14>MUST NOT</bcp14> issue an access token.</t>
            </li>
            <li>
              <t>If one or more requested <tt>resource</tt> values are acceptable:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The authorization server <bcp14>MUST</bcp14> include the <tt>resource</tt> parameter in the access token response.</t>
                </li>
                <li>
                  <t>The <tt>resource</tt> parameter value <bcp14>MUST</bcp14> be an array of strings if there is more than one accepted value.</t>
                </li>
                <li>
                  <t>Each returned <tt>resource</tt> value <bcp14>MUST</bcp14> match one of the requested <tt>resource</tt> values according to the rules defined in <xref target="resource-identifier-comparison"/>.</t>
                </li>
                <li>
                  <t>The returned array <bcp14>MAY</bcp14> contain a strict subset of the requested <tt>resource</tt> values.</t>
                </li>
                <li>
                  <t>The returned array <bcp14>MUST NOT</bcp14> contain duplicate <tt>resource</tt> values, including values that differ only by URI normalization using rules defined in <xref target="resource-identifier-comparison"/>.</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="client-did-not-request-a-resource">
          <name>Client Did Not Request a Resource</name>
          <t>If the client did not include any <tt>resource</tt> parameters in the authorization request or token request:</t>
          <ul spacing="normal">
            <li>
              <t>If the authorization server assigns one or more default <tt>resource</tt> values based on policy or client configuration:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The authorization server <bcp14>SHOULD</bcp14> include the assigned <tt>resource</tt> value or values in the <tt>resource</tt> parameter of the response.</t>
                </li>
                <li>
                  <t>If exactly one <tt>resource</tt> value is assigned, the <tt>resource</tt> parameter value <bcp14>SHOULD</bcp14> be a string.</t>
                </li>
                <li>
                  <t>If multiple <tt>resource</tt> values are assigned, the <tt>resource</tt> parameter value <bcp14>SHOULD</bcp14> be an array.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the authorization server does not apply any <tt>resource</tt>-specific restriction to the access token:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The authorization server <bcp14>SHOULD</bcp14> omit the <tt>resource</tt> parameter from the response.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>If the <tt>resource</tt> parameter is omitted, the access token is not valid for any specific resource as defined by this specification.</t>
        </section>
      </section>
      <section anchor="client-processing-rules">
        <name>Client Processing Rules</name>
        <t>A client that supports this extension <bcp14>MUST</bcp14> process access token responses according to the rules in this section, which are determined by the number of <tt>resource</tt> parameters included in the authorization request or token request, as defined in <xref target="RFC8707"/>.</t>
        <t>When a <tt>resource</tt> parameter is included in an access token response, the client <bcp14>MUST</bcp14> interpret and compare the returned resource identifiers using the rules defined in <xref target="resource-identifier-comparison"/>. If the client cannot determine that an access token is valid for the intended protected resource, the client <bcp14>MUST NOT</bcp14> use the access token.</t>
        <t>If validation succeeds, the client <bcp14>MAY</bcp14> use the access token and <bcp14>MUST</bcp14> use it only with the resource or resources identified in the response. Any returned <tt>scope</tt> value <bcp14>MUST</bcp14> be interpreted in conjunction with the returned <tt>resource</tt> values, and the granted scopes <bcp14>MUST</bcp14> be appropriate for the returned resource or resources, consistent with <xref section="3.3" sectionFormat="of" target="RFC6749"/>.</t>
        <t>If validation fails at any point, the client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</t>
        <t>These client processing rules apply equally to access tokens issued using the authorization code grant and to access tokens issued using the refresh token grant.</t>
        <section anchor="summary-table-1">
          <name>Summary Table</name>
          <table>
            <thead>
              <tr>
                <th align="left">Client Request Shape</th>
                <th align="left">Token Response</th>
                <th align="left">Client Processing Rules</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Exactly one <tt>resource</tt> requested</strong></td>
                <td align="left">
                  <tt>resource</tt> omitted</td>
                <td align="left">Invalid. Client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = string</td>
                <td align="left">Valid only if the value matches the requested resource.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = array (1 element)</td>
                <td align="left">Valid only if the element matches the requested resource.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = array (&gt;1 elements)</td>
                <td align="left">Invalid. Client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Multiple <tt>resource</tt> values requested</strong></td>
                <td align="left">
                  <tt>resource</tt> omitted</td>
                <td align="left">Invalid. Client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = string</td>
                <td align="left">Invalid. Client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = array (subset of requested)</td>
                <td align="left">Valid. Token is valid only for the returned subset.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = array (exact match)</td>
                <td align="left">Valid. Token is valid for all returned resources.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> = array (includes unrequested value)</td>
                <td align="left">Invalid. Client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>No <tt>resource</tt> requested</strong></td>
                <td align="left">
                  <tt>resource</tt> omitted</td>
                <td align="left">Valid. Token is not resource-specific.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> present</td>
                <td align="left">Valid. Client <bcp14>SHOULD</bcp14> treat the returned value as a default resource assignment.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Any request shape</strong></td>
                <td align="left">
                  <tt>error=invalid_target</tt></td>
                <td align="left">Client <bcp14>MUST</bcp14> treat this as a terminal error and <bcp14>MUST NOT</bcp14> use an access token.</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="parsing-the-resource-parameter">
          <name>Parsing the <tt>resource</tt> Parameter</name>
          <t>If the access token response includes a <tt>resource</tt> parameter, the client <bcp14>MUST</bcp14> parse it as follows:</t>
          <ul spacing="normal">
            <li>
              <t>A string value represents a single resource identifier.</t>
            </li>
            <li>
              <t>An array value represents multiple resource identifiers; each element <bcp14>MUST</bcp14> be a string.</t>
            </li>
            <li>
              <t>Any other value is invalid; the client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</t>
            </li>
          </ul>
          <t>When comparing resource identifiers, the client <bcp14>MUST</bcp14> apply the rules defined in <xref target="resource-identifier-comparison"/>.</t>
        </section>
        <section anchor="client-requested-exactly-one-resource-1">
          <name>Client Requested Exactly One Resource</name>
          <t>If the client included exactly one <tt>resource</tt> parameter in the token request:</t>
          <ul spacing="normal">
            <li>
              <t>The response <bcp14>MUST</bcp14> contain exactly one matching resource identifier.</t>
            </li>
            <li>
              <t>The returned resource identifier <bcp14>MUST</bcp14> match the requested resource.</t>
            </li>
            <li>
              <t>If the response omits the <tt>resource</tt> parameter or contains zero or more than one resource identifier, validation fails.</t>
            </li>
          </ul>
          <section anchor="ex-single-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client obtains an access token for the Customers protected resource (<tt>https://api.example.com/customers</tt>) using the authorization code grant.</t>
            <section anchor="authorization-request">
              <name>Authorization Request</name>
              <t>Client makes an authorization request for the Customers protected resource (<tt>https://api.example.com/customers</tt>).</t>
              <artwork><![CDATA[
GET /authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
  &scope=customers%3Aread
  &state=abc123
  &resource=https%3A%2F%2Fapi.example.com%2Fcustomers
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: authorization-server.example.com
]]></artwork>
            </section>
            <section anchor="redirect">
              <name>Redirect</name>
              <t>The authorization server redirects the user-agent back to the client with an authorization code.</t>
              <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=abc123
]]></artwork>
            </section>
            <section anchor="token-request">
              <name>Token Request</name>
              <t>The client exchanges the authorization code for an access token.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&
client_id=client123&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
]]></artwork>
            </section>
            <section anchor="token-response">
              <name>Token Response</name>
              <t>The authorization server issues an access token that is valid for the Customers protected resource (<tt>https://api.example.com/customers</tt>).</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "customers:read",
  "resource": "https://api.example.com/customers"
}
]]></artwork>
            </section>
          </section>
          <section anchor="ex-single-resource-refresh">
            <name>Refresh Token Request Example</name>
            <t>Client refreshes an access token for the Customers protected resource (<tt>https://api.example.com/customers</tt>).</t>
            <section anchor="refresh-token-request">
              <name>Refresh Token Request</name>
              <t>The client uses a refresh token to request a new access token that is valid for the Customers protected resource (<tt>https://api.example.com/customers</tt>).</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=REFRESH_TOKEN&
client_id=client123&
scope=customers%3Aread&
resource=https%3A%2F%2Fapi.example.com%2Fcustomers
]]></artwork>
            </section>
            <section anchor="token-response-1">
              <name>Token Response</name>
              <t>The authorization server issues a new access token that is valid for the Customers protected resource (<tt>https://api.example.com/customers</tt>).</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "customers:read",
  "resource": "https://api.example.com/customers"
}
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="client-requested-multiple-resources-1">
          <name>Client Requested Multiple Resources</name>
          <t>If the client included more than one <tt>resource</tt> parameter in the token request:</t>
          <ul spacing="normal">
            <li>
              <t>The response <bcp14>MUST</bcp14> include a <tt>resource</tt> parameter.</t>
            </li>
            <li>
              <t>The value <bcp14>MUST</bcp14> be an array.</t>
            </li>
            <li>
              <t>Each returned resource identifier <bcp14>MUST</bcp14> match one requested resource.</t>
            </li>
            <li>
              <t>The returned set <bcp14>MAY</bcp14> be a strict subset of the requested set.</t>
            </li>
            <li>
              <t>If any unrequested or duplicate resource identifier is present, validation fails.</t>
            </li>
          </ul>
          <section anchor="ex-multi-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client obtains an access token for the Customers (<tt>https://api.example.com/customers</tt>) and Orders (<tt>https://api.example.com/orders</tt>) protected resources.</t>
            <section anchor="authorization-request-1">
              <name>Authorization Request</name>
              <t>Client makes an authorization request for both protected resources.</t>
              <artwork><![CDATA[
GET /authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
  &scope=customers%3Aread%20orders%3Aread
  &state=abc123
  &resource=https%3A%2F%2Fapi.example.com%2Fcustomers
  &resource=https%3A%2F%2Fapi.example.com%2Forders
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: authorization-server.example.com
]]></artwork>
            </section>
            <section anchor="redirect-1">
              <name>Redirect</name>
              <t>The authorization server redirects the user-agent back to the client with an authorization code.</t>
              <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=abc123
]]></artwork>
            </section>
            <section anchor="token-request-1">
              <name>Token Request</name>
              <t>The client exchanges the authorization code for an access token.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&
client_id=client123&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
]]></artwork>
            </section>
            <section anchor="token-response-2">
              <name>Token Response</name>
              <t>The authorization server issues an access token that is valid for both protected resources.</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "customers:read orders:read",
  "resource": [
    "https://api.example.com/customers",
    "https://api.example.com/orders"
  ]
}
]]></artwork>
            </section>
          </section>
          <section anchor="ex-multi-resource-refresh">
            <name>Refresh Token Request Example</name>
            <t>Client refreshes an access token for the Customers and Orders protected resources.</t>
            <section anchor="refresh-token-request-1">
              <name>Refresh Token Request</name>
              <t>The client uses a refresh token to request a new access token that is valid for both protected resources.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=REFRESH_TOKEN&
client_id=client123&
scope=customers%3Aread%20orders%3Aread&
resource=https%3A%2F%2Fapi.example.com%2Fcustomers&
resource=https%3A%2F%2Fapi.example.com%2Forders
]]></artwork>
            </section>
            <section anchor="token-response-3">
              <name>Token Response</name>
              <t>The authorization server issues a new access token that is valid for both protected resources.</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "customers:read orders:read",
  "resource": [
    "https://api.example.com/customers",
    "https://api.example.com/orders"
  ]
}
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="client-did-not-request-a-resource-1">
          <name>Client Did Not Request a Resource</name>
          <t>If the client did not include any <tt>resource</tt> parameters in the token request:</t>
          <ul spacing="normal">
            <li>
              <t>If the response includes a <tt>resource</tt> parameter, the client <bcp14>MAY</bcp14> treat it as a default resource assignment.</t>
            </li>
            <li>
              <t>If the response omits the <tt>resource</tt> parameter, the token <bcp14>SHOULD</bcp14> be treated as unbounded.</t>
            </li>
          </ul>
          <section anchor="ex-default-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client obtains an access token without requesting a specific resource.</t>
            <section anchor="authorization-request-2">
              <name>Authorization Request</name>
              <t>Client makes an authorization request without including a resource indicator.</t>
              <artwork><![CDATA[
GET /authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
  &scope=orders%3Aread
  &state=abc123
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: authorization-server.example.com
]]></artwork>
            </section>
            <section anchor="redirect-2">
              <name>Redirect</name>
              <t>The authorization server redirects the user-agent back to the client with an authorization code.</t>
              <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=abc123
]]></artwork>
            </section>
            <section anchor="token-request-2">
              <name>Token Request</name>
              <t>The client exchanges the authorization code for an access token.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb&
client_id=client123&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
]]></artwork>
            </section>
            <section anchor="token-response-4">
              <name>Token Response</name>
              <t>The authorization server issues an access token that is valid for the default protected resource (<tt>https://api.example.com/orders</tt>).</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "orders:read",
  "resource": "https://api.example.com/orders"
}
]]></artwork>
            </section>
          </section>
          <section anchor="ex-default-resource-refresh">
            <name>Refresh Token Request Example</name>
            <t>Client refreshes an access token without explicitly requesting a resource.</t>
            <section anchor="refresh-token-request-2">
              <name>Refresh Token Request</name>
              <t>The client uses a refresh token to request a new access token without explicitly requesting a resource.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=REFRESH_TOKEN&
client_id=client123&
scope=orders%3Aread
]]></artwork>
            </section>
            <section anchor="token-response-5">
              <name>Token Response</name>
              <t>The authorization server issues a new access token that is valid for the default protected resource (<tt>https://api.example.com/orders</tt>).</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "ACCESS_TOKEN",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "orders:read",
  "resource": "https://api.example.com/orders"
}
]]></artwork>
            </section>
          </section>
        </section>
        <section anchor="invalid-resource">
          <name>Invalid Resource</name>
          <t>An <tt>invalid_target</tt> error indicates that none of the requested resource values were acceptable to the authorization server. This outcome may result from authorization server policy or client configuration.</t>
          <t>Upon receiving an <tt>invalid_target</tt> error, the client <bcp14>MAY</bcp14> retry the authorization request with a different <tt>resource</tt> value.</t>
          <section anchor="ex-invalid-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client attempts to obtain an access token for a protected resource (<tt>https://unknown.example.com</tt>) that is not permitted.</t>
            <section anchor="authorization-request-3">
              <name>Authorization Request</name>
              <t>Client makes an authorization request for a protected resource that is not permitted.</t>
              <artwork><![CDATA[
GET /authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
  &scope=customers%3Aread
  &state=invalid123
  &resource=https%3A%2F%2Funknown.example.com%2F
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: authorization-server.example.com
]]></artwork>
            </section>
            <section anchor="error-redirect">
              <name>Error Redirect</name>
              <t>The authorization server rejects the requested resource and does not issue an authorization code.</t>
              <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=invalid_target&error_description=Resource%20not%20allowed&state=invalid123
]]></artwork>
            </section>
          </section>
          <section anchor="ex-invalid-resource-refresh">
            <name>Refresh Token Request Example</name>
            <t>Client attempts to refresh an access token for a protected resource (<tt>https://unknown.example.com</tt>) that is not permitted.</t>
            <section anchor="refresh-token-request-3">
              <name>Refresh Token Request</name>
              <t>The client uses a refresh token to request a new access token for a protected resource that is not permitted.</t>
              <artwork><![CDATA[
POST /token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
refresh_token=REFRESH_TOKEN&
client_id=client123&
scope=customers%3Aread&
resource=https%3A%2F%2Funknown.example.com%2F
]]></artwork>
            </section>
            <section anchor="error-response">
              <name>Error Response</name>
              <t>The authorization server rejects the requested resource.</t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "error": "invalid_target",
  "error_description": "Resource not allowed"
}
]]></artwork>
            </section>
          </section>
        </section>
      </section>
      <section anchor="security-considerations">
        <name>Security Considerations</name>
        <t>This section describes security threats related to ambiguous resource selection and access token reuse, and explains how this specification mitigates those threats, either directly or in combination with other OAuth security mechanisms.</t>
        <section anchor="resource-selection-ambiguity-and-mix-up-attacks">
          <name>Resource Selection Ambiguity and Mix-Up Attacks</name>
          <t><strong>Threat:</strong>
An authorization server issues a successful access token response without clearly indicating the protected resource or resources for which the token is valid. This can occur when the server applies default resource selection, narrows a requested resource set, or substitutes a different resource according to local policy without communicating that decision to the client. Such conditions are more likely in deployments where a client interacts with multiple authorization servers and protected resources, or dynamically discovers authorization servers at runtime, including via HTTP authorization challenges using OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>.</t>
          <t><strong>Impact:</strong>
A client may incorrectly assume that an access token is valid for a different protected resource than the one actually authorized. This can result in access token misuse, unintended token disclosure to an incorrect protected resource, or resource mix-up attacks in which a token intended for one resource is presented to another. These risks are amplified in dynamic environments where the client cannot fully validate the trust relationship between a protected resource and the authorization server.</t>
          <t><strong>Mitigation:</strong>
This specification mitigates resource selection ambiguity and OAuth mix-up attacks by requiring authorization servers to explicitly return the resource or resources for which an access token is valid in the access token response. By providing issuance-time confirmation of the effective resource selection, clients can detect cases where a requested resource was narrowed, substituted, or overridden, and can avoid using access tokens with unintended protected resources.</t>
        </section>
        <section anchor="limitations-of-discovery-time-mechanisms">
          <name>Limitations of Discovery-Time Mechanisms</name>
          <t><strong>Threat:</strong>
Clients rely on protected resource metadata <xref target="RFC9728"/> or authorization server metadata <xref target="RFC8414"/> to determine which authorization server is authoritative for a protected resource and assume that successful token issuance implies correct resource binding.</t>
          <t><strong>Impact:</strong>
Metadata describes static relationships and supported capabilities, but does not reflect issuance-time authorization decisions. As a result, clients may be unable to detect cases where an authorization server issues an access token valid for a different resource than the one requested, particularly in dynamic or multi-resource environments.</t>
          <t><strong>Mitigation:</strong>
By returning the effective resource selection in the token response, this specification complements discovery-time mechanisms with issuance-time confirmation. This enables clients to verify that an access token is valid for the intended protected resource regardless of how authorization server relationships were discovered.</t>
        </section>
        <section anchor="token-reuse-by-malicious-protected-resources">
          <name>Token Reuse by Malicious Protected Resources</name>
          <t><strong>Threat:</strong>
A malicious protected resource intercepts an access token during a client's legitimate request and reuses that token to access other protected resources that trust the same authorization server and accept tokens with the same audience and scopes.</t>
          <t><strong>Impact:</strong>
Token reuse can lead to unauthorized access to protected resources beyond those intended by the client, particularly in environments where multiple resources trust a common authorization server and audience values are broad or indirect.</t>
          <t><strong>Mitigation:</strong>
To prevent token reuse attacks, access tokens <bcp14>SHOULD</bcp14> require proof-of-possession, such as Demonstrating Proof-of-Possession (DPoP) as defined in <xref target="RFC9449"/>. Other proof-of-possession mechanisms may also be applicable. Proof-of-possession mechanisms bind the access token to a cryptographic key held by the client and require demonstration of key possession when the token is used. This prevents a malicious protected resource that intercepts an access token from reusing it at other resources, as it does not possess the client's private key. Both the client and authorization server must support proof-of-possession mechanisms for this protection to be effective. See <xref section="9" sectionFormat="of" target="RFC9449"/> for additional details.</t>
        </section>
        <section anchor="client-validation-and-defense-in-depth">
          <name>Client Validation and Defense in Depth</name>
          <t><strong>Threat:</strong>
A client fails to validate the resource or resources returned in the access token response and proceeds to use an access token for a protected resource other than the one for which it was issued.</t>
          <t><strong>Impact:</strong>
Failure to validate the returned <tt>resource</tt> parameter can result in token misuse or unintended interactions with protected resources, even when the authorization server correctly indicates the effective resource selection.</t>
          <t><strong>Mitigation:</strong>
Clients are advised to validate the <tt>resource</tt> parameter in the token response as specified in <xref target="client-processing-rules"/> and to treat mismatches as errors unless explicitly designed to support resource negotiation. While validating the <tt>resource</tt> parameter provides defense in depth by allowing the client to detect resource substitution, it does not prevent token reuse by malicious protected resources. Clients that require strict resource binding <bcp14>SHOULD</bcp14> treat the absence of the <tt>resource</tt> parameter as a potential ambiguity.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Returning the <tt>resource</tt> value may reveal some information about the protected resource. If the value is sensitive, the authorization server <bcp14>SHOULD</bcp14> assess whether the resource name can be safely disclosed to the client.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the following value in the OAuth Parameters registry established by <xref target="RFC6749"/>.</t>
      <section anchor="oauth-access-token-response-parameters-registry">
        <name>OAuth Access Token Response Parameters Registry</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">resource</td>
              <td align="left">Resource to which the access token applies</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
        <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" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
        <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="RFC8707" target="https://www.rfc-editor.org/info/rfc8707" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8707.xml">
        <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="RFC9728" target="https://www.rfc-editor.org/info/rfc9728" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9728.xml">
        <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="RFC8414" target="https://www.rfc-editor.org/info/rfc8414" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8414.xml">
        <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="RFC9207" target="https://www.rfc-editor.org/info/rfc9207" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9207.xml">
        <front>
          <title>OAuth 2.0 Authorization Server Issuer Identification</title>
          <author fullname="K. Meyer zu Selhausen" initials="K." surname="Meyer zu Selhausen"/>
          <author fullname="D. Fett" initials="D." surname="Fett"/>
          <date month="March" year="2022"/>
          <abstract>
            <t>This document specifies a new parameter called iss. This parameter is used to explicitly include the issuer identifier of the authorization server in the authorization response of an OAuth authorization flow. The iss parameter serves as an effective countermeasure to "mix-up attacks".</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9207"/>
        <seriesInfo name="DOI" value="10.17487/RFC9207"/>
      </reference>
      <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <author fullname="L. Masinter" initials="L." surname="Masinter"/>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </reference>
      <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
        <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="RFC7662" target="https://www.rfc-editor.org/info/rfc7662" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7662.xml">
        <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="RFC9700" target="https://www.rfc-editor.org/info/rfc9700" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9700.xml">
        <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="RFC9449" target="https://www.rfc-editor.org/info/rfc9449" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9449.xml">
        <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="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
        <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" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
        <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>
    <?line 738?>

<section anchor="additional-examples">
      <name>Additional Examples</name>
      <section anchor="requesting-a-token-for-a-dynamically-discovered-protected-resource">
        <name>Requesting a token for a dynamically discovered protected resource</name>
        <t>The following example details the need for the <tt>resource</tt> parameter when a client dynamically discovers an authorization server and obtains an access token using <xref target="RFC9728"/> and <xref target="RFC8414"/></t>
        <t>Client attempts to access a protected resource without a valid access token</t>
        <artwork><![CDATA[
GET /resource
Host: api.example.com
Accept: application/json
]]></artwork>
        <t>Client is challenged for authentication</t>
        <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata=
  "https://api.example.com/.well-known/oauth-protected-resource"
]]></artwork>
        <t>Client fetches the resource's OAuth 2.0 Protected Resource Metadata per <xref target="RFC9728"/> to dynamically discover an authorization server that can issue an access token for the resource.</t>
        <artwork><![CDATA[
GET /.well-known/oauth-protected-resource
Host: api.example.com
Accept: application/json

HTTP/1.1 200 Ok
Content-Type: application/json

{
   "resource":
     "https://api.example.com/resource",
   "authorization_servers":
     [ "https://authorization-server.example.com/" ],
   "bearer_methods_supported":
     ["header", "body"],
   "scopes_supported":
     ["resource.read", "resource.write"],
   "resource_documentation":
     "https://api.example.com/resource_documentation.html"
 }
]]></artwork>
        <t>Client discovers the Authorization Server configuration per <xref target="RFC8414"/></t>
        <artwork><![CDATA[
GET /.well-known/oauth-authorization-server
Host: authorization-server.example.com
Accept: application/json

HTTP/1.1 200 Ok
Content-Type: application/json

{
  "issuer": "https://authorization-server.example.com/",
  "authorization_endpoint": "https://authorization-server.example.com/oauth2/authorize",
  "token_endpoint": "https://authorization-server.example.com/oauth2/token",
  "jwks_uri": "https://authorization-server.example.com/oauth2/keys",
  "scopes_supported": [
    "resource.read", "resource.write"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code", "refresh_token"
  ],
  ...
}
]]></artwork>
        <t>Client makes an authorization request for the resource</t>
        <artwork><![CDATA[
GET /oauth2/authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example%2Fcallback
  &scope=resource%3Aread
  &state=abc123
  &resource=https%3A%2F%2Fapi.example.com%2Fresource
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: authorization-server.example.com
]]></artwork>
        <t>User successfully authenticates and delegates access to the client for the requested resource and scopes</t>
        <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=abc123
]]></artwork>
        <t>Client exchanges the authorization code for an access token</t>
        <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=SplxlOBeZQQYbYS6WxSbIA&
redirect_uri=https%3A%2F%2Fclient.example%2Fcallback&
client_id=client123&
code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
]]></artwork>
        <t>Client obtains an access token for the resource.</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "resource:read",
  "resource": "https://api.example.com/resource"
}
]]></artwork>
        <t>Client verifies that it obtained an access token that is valid for the discovered resource.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This proposal builds on prior work in OAuth 2.0 extensibility and security analysis, particularly <xref target="RFC8707"/>, <xref target="RFC9700"/>, and <xref target="RFC9207"/>.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Revised Introduction and included attack example</t>
        </li>
        <li>
          <t>Added Resource vs Audience to Terminology</t>
        </li>
        <li>
          <t>Revised Response to provide detailed Authorization Server and Client Processing Rules</t>
        </li>
        <li>
          <t>Updated Security Considerations</t>
        </li>
        <li>
          <t>Editorial cleanup and consistency</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial revision</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
laqmm1mXIagrY0rPoTb3xLGut2592Tq8Zlun/+ovaDZe4oDsLL7aR/udgpR/
/XjzY+08hj3L/5zMhT/QqunGqTm3xyQZ1gGQYa8RWPK80x3V1orVTgao22L1
gU1/lKJQay2D3+Ii1xGXVo21tZJ+y4JlBDQL/5QhZy5rjN8MmORN+zI0L38D
D1eQx1fhtq/MUvrkoC6rfIY+mOe8x7ed5/HH6rNXN9YwbWU7HfvRa52FF/GS
S8+ub8lS1Pzz4VmwrYtQ/qhwTEXE93D1UiP8eybtl0l0j/+0u/ed+glP2OO5
/5d1kfD9ar/7bv93ew/gX7mOzloDPhypL8lRuqdXBZ/hfWv61wo8pnvhaOzM
xZtszNPYKE6iBtUbgM281I0M7h3eeRKn0zzcO766fFAcPjl7dF4fPAzz+Jfd
6sfnz16M6p8fnZbV1WD8xD/CS6D2aR7dO937/rZTH85/ybFhn68Y1V6nooln
AkGu9vQGqBSQmfHwTrhBeI4UM8JL/tzb1FV1ZpsWm6Xs3+3sBQ+wXIoeP845
pmQa5LXxtz0e/RFHunc6T9+kxz/Ff/3zn38d/Xp6+8Wb09HRvos02Z7ytoTU
z8xK4zd44u9cXT/X5h3VTsqNL+BiT45BdG0zJ38I6PHV7vL9N4Orqyu6i31Q
Fykfrot4YmJnZhBnkpf4zu/plWUAohc2ZxkZuM2FZsaX3EoiLu5FP72eVI/i
v946+MvJYPbTnb1f9n6op6Pnj57vzneLl1cvds8fvHhwfPj63y+aOFLH9joJ
seP+QX+fo2uTU//4wxf7BweHp6cvz45/OXz68UcuSPLhJ3qrdNXk1kZnMvS3
1uEMkiYcHnHYbrnGlIiK0ZnywIPoa0XtN90LduQEnS5qVpRS4xqVcsKbtT8n
QX4J4kfAwTSqBIv16N6zwwfPDk8fMtGukCB+XaxG3VjrfqhY+eyI/CpZ1pUs
n6kcZR1naEW5sHzjr0zAX90agxWeEbssPs/I8a8wmoVZDe0XLykEkGZ/WNUM
brMdF8IbAXSq37ewpFSRlo/ymcjdvwaXaT3/CP364yJa/kFOL8Dbvl621+Y+
0bkS/wxI6l+iQ/S7vR2GzSd1kNb+ktfy1a/66ld99av+AX7VCgH2/4k9E7AU
6rZt/ibPgnWsnP7ql3m+LXnx75t6XA19+1EOl6VNl6nKz+RWraDHL0GefAZH
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

-->

</rfc>
