<?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.34 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcguinness-oauth-resource-token-resp-03" category="std" consensus="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.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-03"/>
    <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>
    <author fullname="Filip Skokan">
      <organization>Okta</organization>
      <address>
        <email>panva.ip@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="23"/>
    <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 53?>

<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 57?>

<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(s) 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(s) 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 server-assigned 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(s) 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 "server-assigned resource" denotes resource(s) assigned by the authorization server (e.g., defaults or additions based on policy, configuration, or requested scopes).</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(s) 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(s) 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(s) 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"/>. Server-assigned resources may also affect processing; the effective resource set can be influenced by requested scopes, authorization server policy, client configuration, and other factors.</t>
        <t>The following rules describe how an authorization server evaluates requested resources and determines the effective resource(s) associated with an issued access token. These rules apply equally to access tokens issued using the authorization code grant and the refresh token grant.</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(s) 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>
        <t>When including a <tt>resource</tt> parameter in the access token response, the authorization server <bcp14>MUST</bcp14> use a string when exactly one resource value is returned and <bcp14>MUST</bcp14> use an array of strings when more than one resource value is returned (whether from requested resources, server-assigned resources, or both).</t>
        <t>When the client included one or more <tt>resource</tt> parameters in the request, the authorization server <bcp14>MUST NOT</bcp14> issue an access token unless at least one requested resource is acceptable. The server <bcp14>MUST</bcp14> return an <tt>invalid_target</tt> error if none of the requested resources are acceptable, even if server-assigned resources could be returned. Server-assigned resources may only be included in addition to at least one accepted requested resource.</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>One or more <tt>resource</tt> values requested</strong></td>
                <td align="left">No acceptable requested 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 or more acceptable requested resources</td>
                <td align="left">
                  <bcp14>MUST</bcp14> include <tt>resource</tt> with at least the accepted requested resource(s). <bcp14>MAY</bcp14> include server-assigned resource(s) in addition.</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>No <tt>resource</tt> requested</strong></td>
                <td align="left">server-assigned resource(s)</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-one-or-more-resources">
          <name>Client Requested One or More Resources</name>
          <t>If the client included one or more <tt>resource</tt> parameters 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(s) 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 returned value(s) <bcp14>MUST</bcp14> include at least one requested <tt>resource</tt> value according to the rules defined in <xref target="resource-identifier-comparison"/>.</t>
                </li>
                <li>
                  <t>The returned set <bcp14>MAY</bcp14> contain a strict subset of the requested <tt>resource</tt> values (when multiple were requested).</t>
                </li>
                <li>
                  <t>The returned set <bcp14>MAY</bcp14> contain additional server-assigned resources. See <xref target="ex-scope-defined-resource"/> for an example using scope-defined resources.</t>
                </li>
                <li>
                  <t>The returned set <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 server-assigned <tt>resource</tt> value(s) based on policy, client configuration, or requested scopes:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The authorization server <bcp14>SHOULD</bcp14> include the assigned <tt>resource</tt> value(s) in the <tt>resource</tt> parameter of the response.</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>The client processing requirements in this section depend on (a) whether the client requested one or more <tt>resource</tt> values, as defined in <xref target="RFC8707"/>, and (b) whether the client was pre-configured with knowledge of both the authorization server and the protected resource prior to any interaction.</t>
        <t>A client is considered to have <strong>pre-configured knowledge</strong> when it was statically configured, prior to runtime, with both the identity of the authorization server (e.g., the issuer URI or token endpoint) and the identity of the protected resource(s) for which it will use access tokens. Such a client has an established trust relationship with these endpoints and can assume it is not exposed to resource mix-up attacks.</t>
        <t>A client that does not have pre-configured knowledge of both the authorization server and the protected resource (for example, because it discovered either endpoint at runtime using mechanisms such as OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>) is exposed to resource mix-up attacks as described in <xref target="resource-mix-up-via-dynamic-discovery-example"/>. Such clients <bcp14>MUST</bcp14> apply all of the validation rules in this section. A client with pre-configured knowledge of both the authorization server and the protected resource <bcp14>SHOULD</bcp14> apply the validation rules, but is not required to reject responses that omit the <tt>resource</tt> parameter.</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(s) 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(s), 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>One or more <tt>resource</tt> values requested</strong></td>
                <td align="left">
                  <tt>resource</tt> omitted</td>
                <td align="left">Client without pre-configured knowledge of both the AS and resource: <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it. Client with pre-configured knowledge of both the AS and resource: <bcp14>MAY</bcp14> use the access token consistent with prior behavior.</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <tt>resource</tt> present</td>
                <td align="left">Valid only if at least one returned identifier matches a requested resource; additional elements <bcp14>MAY</bcp14> be server-assigned resources.</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 server-assigned 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>The client <bcp14>MUST</bcp14> normalize the parsed value to a set of resource identifiers (treating a string as a single-element set) before applying the validation rules below. 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-one-or-more-resources-1">
          <name>Client Requested One or More Resources</name>
          <t>If the client included one or more <tt>resource</tt> parameters in the token request:</t>
          <ul spacing="normal">
            <li>
              <t>If a <tt>resource</tt> parameter is present in the response, it <bcp14>MUST</bcp14> contain at least one identifier that matches a requested resource (additional identifiers <bcp14>MAY</bcp14> be server-assigned resources). Validation fails if the returned set contains none of the requested resources, or contains duplicate resource identifiers.</t>
            </li>
            <li>
              <t>A client without pre-configured knowledge of both the authorization server and the protected resource <bcp14>MUST</bcp14> require the <tt>resource</tt> parameter to be present in the response. If it is absent, the client <bcp14>MUST NOT</bcp14> use the access token and <bcp14>SHOULD</bcp14> discard it.</t>
            </li>
            <li>
              <t>A client with pre-configured knowledge of both the authorization server and the protected resource that receives a response without a <tt>resource</tt> parameter <bcp14>SHOULD</bcp14> treat the token as not resource-confirmed. The client <bcp14>MAY</bcp14> use the access token consistent with its prior behavior before adopting this specification.</t>
            </li>
          </ul>
          <section anchor="ex-single-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client obtains an access token for the protected resource at <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 protected resource at <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 protected resource at <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 protected resource at <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 protected resource at <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 protected resource at <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-multi-resource-authz">
            <name>Authorization Request Example</name>
            <t>Client obtains an access token for the protected resources at <tt>https://api.example.com/customers</tt> and <tt>https://api.example.com/orders</tt>.</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 protected resources at <tt>https://api.example.com/customers</tt> and <tt>https://api.example.com/orders</tt>.</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 server-assigned 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 server-assigned 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 server-assigned 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(s) for which the token is valid. This can occur when the server applies server-assigned 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(s) 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(s) 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 updates the "resource" parameter in the OAuth Parameters registry established by <xref target="RFC6749"/>. The "resource" parameter is defined by <xref target="RFC8707"/> for use in authorization requests and token requests. This specification adds the following usage location:</t>
      <section anchor="oauth-parameters-registry">
        <name>OAuth Parameters Registry</name>
        <table>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Parameter Usage Location</th>
              <th align="left">Description</th>
              <th align="left">Specification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">resource</td>
              <td align="left">token response</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 719?>

<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.read
  &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 anchor="ex-scope-defined-resource">
        <name>Scope-defined resource with a resource request</name>
        <t>An authorization server may determine resources from requested scopes in addition to explicit <tt>resource</tt> parameters. For example, a scope might imply a protected resource URL that the authorization server returns as a server-assigned resource alongside any client-requested resources.</t>
        <t>The following example uses OpenID Connect: the <tt>openid</tt> scope implies access to the UserInfo endpoint. When a client requests both a protected resource and the <tt>openid</tt> scope, the authorization server may determine the UserInfo endpoint URL from its configuration (e.g., <tt>{issuer}/userinfo</tt>) and return it as a server-assigned resource alongside the client-requested resource.</t>
        <section anchor="authorization-request-example">
          <name>Authorization request example</name>
          <section anchor="authorization-request-4">
            <name>Authorization Request</name>
            <artwork><![CDATA[
GET /authorize?response_type=code
  &client_id=client123
  &redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
  &scope=openid%20profile%20data%3Aread
  &state=oidc123
  &resource=https%3A%2F%2Fapi.example.com%2Fdata
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: idp.example.com
]]></artwork>
          </section>
          <section anchor="redirect-3">
            <name>Redirect</name>
            <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=oidc123
]]></artwork>
          </section>
          <section anchor="token-request-3">
            <name>Token Request</name>
            <artwork><![CDATA[
POST /token HTTP/1.1
Host: idp.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-6">
            <name>Token Response</name>
            <t>The authorization server issues an access token valid for both the requested resource (<tt>https://api.example.com/data</tt>) and the UserInfo endpoint (<tt>https://idp.example.com/userinfo</tt>), which it determined from the <tt>openid</tt> scope.</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": "openid profile data:read",
  "resource": [
    "https://api.example.com/data",
    "https://idp.example.com/userinfo"
  ]
}
]]></artwork>
            <t>The client validates that the requested resource (<tt>https://api.example.com/data</tt>) is present in the response. The additional resource (<tt>https://idp.example.com/userinfo</tt>) is a server-assigned resource determined by the authorization server based on the <tt>openid</tt> scope, enabling the client to use the same access token for both the API and the UserInfo endpoint.</t>
          </section>
        </section>
      </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>
      <t>The authors would like to thank the following individuals who contributed ideas, feedback, and wording that helped shape this specification: Filip Skokan</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Existing clients that are deployed in environments that trust AS and RS don't need to process response parameter (draft-skokan-oauth-resource-response gap behavior)</t>
        </li>
        <li>
          <t>Made Filip co-author</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Modified processing rules to allow server-assigned resources to be combined with requested resources</t>
        </li>
        <li>
          <t>Added OIDC example</t>
        </li>
        <li>
          <t>Collapsed one and many processing rules to single "one or more"</t>
        </li>
        <li>
          <t>Changed OAuth Registry to update existing resource parameter</t>
        </li>
        <li>
          <t>Editorial cleanup and consistency updates</t>
        </li>
        <li>
          <t>Updated Acknowledgements</t>
        </li>
      </ul>
      <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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
DyRnyNq11QAA

-->

</rfc>
