<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wuertele-oauth-security-topics-update-01" category="bcp" consensus="true" submissionType="IETF" updates="6749, 6750, 7521, 7522, 7523, 9700" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="Updates to OAuth 2.0 Security BCP">Updates to OAuth 2.0 Security Best Current Practice</title>
    <seriesInfo name="Internet-Draft" value="draft-wuertele-oauth-security-topics-update-01"/>
    <seriesInfo name="bcp" value="240"/>
    <author fullname="Tim Würtele">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>tim.wuertele@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Pedram Hosseyni">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>pedram.hosseyni@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Kaixuan Luo">
      <organization>The Chinese University of Hong Kong</organization>
      <address>
        <postal>
          <country>Hong Kong</country>
        </postal>
        <email>kaixuan@ie.cuhk.edu.hk</email>
      </address>
    </author>
    <author fullname="Adonis Fung">
      <organization>Samsung Research America</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>adonis.fung@samsung.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="17"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>security</keyword>
    <keyword>oauth2</keyword>
    <keyword>best current practice</keyword>
    <abstract>
      <?line 165?>

<t>This document updates the set of best current security practices for
OAuth 2.0 by extending the security advice given in RFC 6749, RFC
6750, and RFC 9700, to cover new threats that have been discovered
since the former documents have been published.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://SECtim.github.io/draft-wuertele-oauth-security-topics-update/draft-wuertele-oauth-security-topics-update.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wuertele-oauth-security-topics-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol  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/SECtim/draft-wuertele-oauth-security-topics-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 173?>

<section anchor="Introduction">
      <name>Introduction</name>
      <t>Since the publication of the first OAuth 2.0 Security Best Practices
document <xref target="RFC9700"/>, new threats to OAuth 2.0 ecosystems have been
identified. This document therefore serves as an extension of the
original <xref target="RFC9700"/> and is to be read in conjunction with it.</t>
      <t>Like <xref target="RFC9700"/> before, this document provides important security
recommendations and it is <bcp14>RECOMMENDED</bcp14> that implementers upgrade their
implementations and ecosystems as soon as feasible.</t>
      <section anchor="structure">
        <name>Structure</name>
        <t>The remainder of this document is organized as follows: Section 2 is a detailed analysis of the threats and implementation issues that can be found in the wild (at the time of writing) along with a discussion of potential countermeasures.</t>
      </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?>

<t>This specification uses the terms "access token", "authorization
endpoint", "authorization grant", "authorization server", "client",
"client identifier" (client ID), "protected resource", "refresh
token", "resource owner", "resource server", and "token endpoint"
defined by OAuth 2.0 <xref target="RFC6749"/>.</t>
        <t><cref anchor="terminology-update" source="Tim W.">Make sure to update this list once the
technical sections below are completed.</cref></t>
      </section>
    </section>
    <section anchor="AttacksMitigations">
      <name>Attacks and Mitigations</name>
      <t>This section gives a detailed description of new attacks on OAuth implementations, along with potential countermeasures. Attacks and mitigations already covered in <xref target="RFC9700"/> are not listed here, except where clarifications or new recommendations are made.
Generally, the attacks in this section assume a scenario where a client can interact with multiple authorization servers.</t>
      <section anchor="AudienceInjection">
        <name>Audience Injection Attacks</name>
        <t>When using signature-based client authentication methods such as
<tt>private_key_jwt</tt> as defined in <xref target="OpenID.Core"/> or signed JWTs as
defined in <xref target="RFC7521"/> and <xref target="RFC7523"/>, a malicious authorization
server may be able to obtain and use a client's authentication
credential, enabling them to impersonate a client towards another
honest authorization server.</t>
        <section anchor="attack-description">
          <name>Attack Description</name>
          <t>The descriptions here follow <xref target="research.ust"/>, where additional details
of the attack are laid out.  Audience injection attacks require a client
to interact with at least two authorization servers, one of which is
malicious, and to authenticate to both with a signature-based
authentication method using the same key pair.  The following
description uses the <tt>jwt-bearer</tt> client authentication from
<xref target="RFC7523"/>, see <xref target="AudienceInjectionAuthNMethods"/> for other affected
client authentication methods.  Furthermore, the client needs to be
willing to authenticate at an endpoint other than the token endpoint at
the attacker authorization server (see <xref target="AudienceInjectionEndpoints"/>).</t>
          <section anchor="core-attack-steps">
            <name>Core Attack Steps</name>
            <t>In the following, let H-AS be an honest authorization server and let
A-AS be an attacker-controlled authorization server.</t>
            <t>Assume that the authorization servers publish the following URIs for
their token endpoints, for example via mechanisms such as authorization
server metadata <xref target="RFC8414"/> or OpenID Discovery <xref target="OpenID.Discovery"/>.
The exact publication mechanism is not relevant, as audience injection
attacks are also possible on clients with manually configured
authorization server metadata.</t>
            <t>Excerpt from H-AS' metadata:</t>
            <sourcecode type="javascript"><![CDATA[
"issuer": "https://honest.com",
"token_endpoint": "https://honest.com/token",
...
]]></sourcecode>
            <t>Excerpt from A-AS' metadata:</t>
            <sourcecode type="javascript"><![CDATA[
"issuer": "https://attacker.com",
"token_endpoint": "https://honest.com/token",
...
]]></sourcecode>
            <t>Therefore, the attacker authorization server claims to use the honest
authorization server's token endpoint. Note that the attacker
authorization server does not control this endpoint. The attack then
commences as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>Client registers at H-AS, and gets assigned a client ID <tt>cid</tt>.</t>
              </li>
              <li>
                <t>Client registers at A-AS, and gets assigned the same client ID
<tt>cid</tt>. Note that the client ID is not a secret (<xref section="2.2" sectionFormat="of" target="RFC6749"/>).</t>
              </li>
            </ol>
            <t>Now, whenever the client creates a client assertion for authentication
to A-AS, the assertion consists of a JSON Web Token (JWT) that is signed
by the client and contains, among others, the following claims:</t>
            <sourcecode type="json"><![CDATA[
"iss": "cid",
"sub": "cid",
"aud": "https://honest.com/token"
]]></sourcecode>
            <t>Due to the malicious use of H-AS' token endpoint in A-AS'
authorization server metadata, the <tt>aud</tt> claim contains H-AS' token
endpoint.  Recall that both A-AS and H-AS registered the client with
client ID <tt>cid</tt>, and that the client uses the same key pair for
authentication at both authorization servers.  Hence, this client
assertion is a valid authentication credential for the client at
H-AS.</t>
            <t>The use of the token endpoint to identify the authorization server as a
client assertion's audience even for client assertions that are not sent
to the token endpoint is encouraged, or at least allowed by many
standards, including <xref target="RFC7521"/>, <xref target="RFC7522"/>, <xref target="RFC7523"/>, <xref target="RFC9126"/>,
<xref target="OpenID.Core"/>, <xref target="OpenID.CIBA"/>, and all standards referencing the IANA
registry for OAuth Token Endpoint Authentication Methods for available
client authentication methods.</t>
            <t>As described in <xref target="research.ust"/>, the attacker can then utilize the
obtained client authentication assertion to impersonate the client and,
for example, obtain access tokens.</t>
          </section>
          <section anchor="AudienceInjectionEndpoints">
            <name>Endpoints Requiring Client Authentication</name>
            <t>As mentioned above, the attack is only possible if the client
authenticates to an endpoint other than the token endpoint at A-AS.
This is because if the client sends a token request to A-AS, it will use
A-AS' token endpoint as published by A-AS and hence, send the token
request to H-AS, i.e., the attacker cannot obtain the client assertion.</t>
            <t>As detailed in <xref target="research.ust"/>, the attack is confirmed to be possible
if the client authenticates with such client assertions at the following
endpoints of A-AS:</t>
            <ul spacing="normal">
              <li>
                <t>Pushed Authorization Endpoint (see <xref target="RFC9126"/>)</t>
              </li>
              <li>
                <t>Token Revocation Endpoint (see <xref target="RFC7009"/>)</t>
              </li>
              <li>
                <t>CIBA Backchannel Authentication Endpoint (see <xref target="OpenID.CIBA"/>)</t>
              </li>
              <li>
                <t>Device Authorization Endpoint (see <xref target="RFC8628"/>)</t>
              </li>
            </ul>
            <t>Note that this list of examples is not exhaustive. Hence, any client
that might authenticate at any endpoint other than the token endpoint
<bcp14>SHOULD</bcp14> employ countermeasures as described in
<xref target="AudienceInjectionCountermeasures"/>.</t>
          </section>
          <section anchor="AudienceInjectionAuthNMethods">
            <name>Affected Client Authentication Methods</name>
            <t>The same attacks are possible for the <tt>private_key_jwt</tt> client
authentication method defined in <xref target="OpenID.Core"/>, as well as
instantiations of client authentication assertions defined in
<xref target="RFC7521"/>, including the SAML assertions defined in <xref target="RFC7522"/>.</t>
            <t>Furthermore, a similar attack is possible for <tt>jwt-bearer</tt> authorization
grants as defined in <xref section="2.1" sectionFormat="of" target="RFC7523"/>, albeit under
additional assumptions (see <xref target="research.ust"/> for details).</t>
          </section>
        </section>
        <section anchor="AudienceInjectionCountermeasures">
          <name>Countermeasures</name>
          <t>At its core, audience injection attacks exploit the fact that, from the
client's point of view, an authorization server's token endpoint is a
mostly opaque value and does not uniquely identify an authorization
server.  Therefore, an attacker authorization server may claim any URI
as its token endpoint, including, for example, an honest authorization
server's issuer identifier. Hence, as long as a client uses the token
endpoint as an audience value when authenticating to the attacker
authorization server, audience injection attacks are possible.
Therefore, audience injection attacks need to be prevented by the
client.</t>
          <t>Note that the following countermeasures mandate the use of single
audience value (as opposed to multiple audiences in array). This is because <xref section="4.1.3" sectionFormat="of" target="RFC7519"/> allows the receiver of an audience-restricted JWT to
accept the JWT even if the receiver identifies with only one of the
values in such an array.</t>
          <t>Clients that interact with more than one authorization server and
authenticate with signature-based client authentication methods <bcp14>MUST</bcp14>
employ one of the following countermeasures, unless audience injection
attacks are mitigated by other means, such as using fresh key material
for each authorization server.</t>
          <t>Note that the countermeasures described in
<xref target="AudienceInjectionCountermeasuresASissuer"/> and
<xref target="AudienceInjectionCountermeasuresTargetEP"/> do not imply any normative
changes to the authorization server: <xref section="4.1.3" sectionFormat="of" target="RFC7519"/>
requires the authorization server to only accept a JWT if the
authorization server can identify itself with (at least one of the
elements in) the JWT's audience value. Authentication JWTs produced by a
client implementing one of these countermeasures meet this condition.
Of course, an authorization server <bcp14>MAY</bcp14> still decide to only accept its
issuer identifier (<xref target="AudienceInjectionCountermeasuresASissuer"/>) or the
endpoint that received the JWT
(<xref target="AudienceInjectionCountermeasuresTargetEP"/>) as an audience value, for
example, to force its clients to adopt the respective countermeasure.</t>
          <section anchor="AudienceInjectionCountermeasuresASissuer">
            <name>Authorization Server Issuer Identifier</name>
            <t>Clients <bcp14>MUST</bcp14> use the authorization server's issuer identifier as defined
in <xref target="RFC8414"/>/<xref target="OpenID.Discovery"/> as the sole audience value in
client assertions. Clients <bcp14>MUST</bcp14> retrieve and validate this value as
described in <xref section="3.3" sectionFormat="of" target="RFC8414"/>/Section 4.3 of
<xref target="OpenID.Discovery"/>.</t>
            <t>For <tt>jwt-bearer</tt> client assertions as defined by <xref target="RFC7523"/>, this
mechanism is also described in <xref target="OAUTH-7523bis"/>.</t>
            <t>Note that "issuer identifier" here does not refer to the term "issuer"
as defined in <xref section="4.4" sectionFormat="of" target="RFC9700"/>, but to the issuer identifier
defined in <xref target="RFC8414"/> and <xref target="OpenID.Discovery"/>. In particular, the
issuer identifier is not just "an abstract identifier for the
combination the authorization endpoint and token endpoint".</t>
          </section>
          <section anchor="AudienceInjectionCountermeasuresTargetEP">
            <name>Exact Target Endpoint URI</name>
            <t>Clients <bcp14>MUST</bcp14> use the exact endpoint URI to which a client assertion is
sent as that client assertion's sole audience value.</t>
            <t>This countermeasure can be used for authorization servers that do not
use authorization server metadata <xref target="RFC8414"/> or OpenID Discovery
<xref target="OpenID.Discovery"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="MixUpUpdate">
        <name>Updates to Mix-Up Attacks</name>
        <t>Mix-up attacks can occur in scenarios where an OAuth client interacts with two or more authorization servers and at least one authorization server is under the control of the attacker.</t>
        <t>This section extends the mix-up attack analysis in <xref section="4.4" sectionFormat="of" target="RFC9700"/>. It introduces additional attack variants that can occur when clients use distinct redirection URIs for each authorization server and clarifies the applicability of countermeasures to certain attack variants.</t>
        <section anchor="PerASUpdate">
          <name>Updates to "Per-AS Redirect URIs" Mix-Up Variant</name>
          <t>The basic mix-up attack described in the initial paragraphs of <xref section="4.4.1" sectionFormat="of" target="RFC9700"/> specifies, as one of its preconditions, that "the client stores the authorization server chosen by the user in a session bound to the user's browser and uses the same redirection URI for each authorization server".</t>
          <t>If the client instead uses a distinct redirection URI for each authorization server (i.e., Per-AS Redirect URIs), three subvariants of mix-up attacks are still possible. This section updates the description of the "Per-AS Redirect URIs" mix-up variant in <xref section="4.4.1" sectionFormat="of" target="RFC9700"/>, with subvariants 1 and 2 newly introduced in this document:</t>
          <t>Per-AS Redirect URIs: There are three subvariants of mix-up attacks when the client uses distinct redirection URIs for each authorization server.</t>
          <t>Subvariant 1: Advanced Mix-up Attack. If the client uses different redirection URIs for different authorization servers but treats them as the same URI, a slight variant of the basic mix-up attack remains possible (see Footnote 7 of <xref target="arXiv.1601.01229"/>). In this attack, the attacker not only replaces the client ID as in the basic mix-up attack, but also replaces the redirection URI when redirecting the browser to the authorization endpoint of the honest authorization server.</t>
          <t>This advanced mix-up attack is described in detail below, with the Preconditions as well as Step 2 and Step 3 updated compared to the basic mix-up attack.</t>
          <t>Preconditions: For this variant of the attack to work, it is assumed that</t>
          <ul spacing="normal">
            <li>
              <t>the implicit or authorization code grant is used with multiple authorization servers of which one is considered "honest" (H-AS) and one is operated by the attacker (A-AS), and</t>
            </li>
            <li>
              <t>the client stores the authorization server chosen by the user in a session bound to the user's browser and uses distinct redirection URIs for different authorization servers, but treats them as the same URI (i.e., it does not use the redirection URI to differentiate authorization servers at the redirection endpoint).</t>
            </li>
          </ul>
          <t>In the following, it is further assumed that the client is registered with H-AS (URI: <tt>https://honest.as.example</tt>, client ID: <tt>7ZGZldHQ</tt>) and with A-AS (URI: <tt>https://attacker.example</tt>, client ID: <tt>666RVZJTA</tt>). Assume that the client issues the redirection URI <tt>https://client.com/9XpLmK2qR/cb</tt> for H-AS and <tt>https://client.com/4FvBn8TzY/cb</tt> for A-AS. URLs shown in the following example are shortened for presentation to include only parameters relevant to the attack.</t>
          <t>Attack on the authorization code grant:</t>
          <ol spacing="normal" type="1"><li>
              <t>The user selects to start the grant using A-AS (e.g., by clicking on a button on the client's website).</t>
            </li>
            <li>
              <t>The client stores in the user's session that the user selected "A-AS" and redirects the user to A-AS's authorization endpoint with a Location header containing the URL <tt>https://attacker.example/authorize?response_type=code&amp;client_id=666RVZJTA</tt>
                <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2F4FvBn8TzY%2Fcb</tt>.</t>
            </li>
            <li>
              <t>When the user's browser navigates to the attacker's authorization endpoint, the attacker immediately redirects the browser to the authorization endpoint of H-AS. In the authorization request, the attacker replaces the client ID of the client at A-AS with the client's ID at H-AS, and replaces the redirection URI of A-AS with the redirection URI of H-AS. Therefore, the browser receives a redirection (<tt>303 See Other</tt>) with a Location header pointing to <tt>https://honest.as.example/authorize?response_type=code&amp;client_id=7ZGZldHQ</tt>
                <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2F9XpLmK2qR%2Fcb</tt>.</t>
            </li>
            <li>
              <t>The user authorizes the client to access their resources at H-AS. H-AS issues a code and sends it (via the browser) back to the client.</t>
            </li>
            <li>
              <t>Since the client still assumes that the code was issued by A-AS, it will try to redeem the code at A-AS's token endpoint.</t>
            </li>
            <li>
              <t>The attacker therefore obtains code and can either exchange the code for an access token (for public clients) or perform an authorization code injection attack as described in <xref section="4.5" sectionFormat="of" target="RFC9700"/>.</t>
            </li>
          </ol>
          <t>Subvariant 2: Naïve RP Session Integrity Attack. If clients use different redirection URIs for different authorization servers, and clients do not store the selected authorization server in the user's session, attackers can mount an attack called "Naïve RP Session Integrity Attack". Note that unlike other mix-up variants, the goal of this attack is not to obtain an authorization code or access token, but to force the client to use an attacker's authorization code or access token for H-AS. See Section 3.4 of <xref target="arXiv.1601.01229"/> for details.</t>
          <t>Subvariant 3: Cross Social-Network Request Forgery. If clients use different redirection URIs for different authorization servers, clients do not store the selected authorization server in the user's session, and authorization servers do not check the redirection URIs properly (see <xref section="4.1" sectionFormat="of" target="RFC9700"/>), attackers can mount an attack called "Cross Social-Network Request Forgery". These attacks have been observed in practice. Refer to <xref target="research.jcs_14"/> for details.</t>
        </section>
        <section anchor="CountermeasureUpdate">
          <name>Clarifications on Countermeasures for Mix-Up Variants</name>
          <t><xref section="4.4.2" sectionFormat="of" target="RFC9700"/> specifies two countermeasures, Mix-Up Defense via Issuer Identification and via Distinct Redirect URIs (referred to hereafter as "existing mix-up defenses"). Both defenses require the client to store and compare the issuer of the authorization server. Specifically, the issuer is defined in the second paragraph of <xref section="4.4.2" sectionFormat="of" target="RFC9700"/> as follows:</t>
          <ul empty="true" spacing="normal">
            <li>
              <t>The issuer serves ... as an abstract identifier for the combination of the authorization endpoint and token endpoint that are to be used in the flow. If an issuer identifier is not available ..., a different unique identifier for this tuple or the tuple itself can be used instead.</t>
            </li>
          </ul>
          <t>Existing mix-up defenses are sufficient to protect against most attack variants, with a few specific cases requiring clarification:</t>
          <ul spacing="normal">
            <li>
              <t>For the mix-up attack variant in "Implicit Grant", since the flow does not involve a token endpoint, a unique identifier for the authorization endpoint URL <bcp14>MAY</bcp14> be used as the equivalent of issuer if an issuer identifier is not available. Then, clients <bcp14>MUST</bcp14> apply existing mix-up defenses.</t>
            </li>
            <li>
              <t>For all three subvariants of the "Per-AS Redirect URIs" attack variant (<xref target="PerASUpdate"/>), clients <bcp14>MUST</bcp14> follow existing mix-up defenses to defend against mix-up attacks. Clients <bcp14>MAY</bcp14> choose to reuse the per-AS redirection URI already configured in their deployments to satisfy the "distinct redirection URI for each issuer" requirement when implementing the "Mix-Up Defense via Distinct Redirect URIs" defense (<xref section="4.4.2.2" sectionFormat="of" target="RFC9700"/>). For subvariant 3 ("Cross Social-Network Request Forgery"), the existing mix-up defenses alone are not sufficient. In addition, authorization servers <bcp14>MUST</bcp14> enforce exact redirection URI matching, as specified in <xref section="4.1.3" sectionFormat="of" target="RFC9700"/>.</t>
            </li>
          </ul>
          <t>Note that when the issuer is not unique to a client (i.e., when a client can interact with multiple configurations of the same authorization server), the security considerations go beyond the scope of mix-up attacks and are discussed further in <xref target="OpenEcosystem"/>.</t>
        </section>
      </section>
      <section anchor="OpenEcosystem">
        <name>Attacks in Open Ecosystems</name>
        <t>This section describes the OAuth use case and associated attacks in open ecosystems, along with practical countermeasures tailored to such environments.</t>
        <section anchor="ApplicationScenario">
          <name>OAuth in Open Ecosystems</name>
          <t>In traditional OAuth deployments, a client registers with an authorization server to access protected resources hosted by a resource server.
The means through which the client registers with an authorization server typically involve the client developer manually registering the client at the authorization server's website, or by using Dynamic Client Registration <xref target="RFC7591"/>.
The client may access different resources from distinct resource servers, thereby requiring registration with multiple authorization servers.
The choice of what resources to access (and thus which authorization and resource servers to integrate) is at the discretion of the client (or client developer).</t>
          <t>This section discusses OAuth in "open ecosystems", where the protected resources accessible to a client are configured beyond the discretion of the client or client developers.
This can be the case, for example, if the client offers an open marketplace or registry where external developers can publish information about resource servers and associated authorization servers at development time (e.g., in integration platforms, where external services register themselves as authorization and resource servers with a platform that acts as a client, see <xref target="research.cuhk"/>), or if an end-user can specify any compliant configurations to interact with at runtime (e.g., in the Model Context Protocol <xref target="MCP-Spec"/>).</t>
          <t>This document defines a "client configuration" as a set of configuration elements that enable a client to access an OAuth 2.0 protected resource, including details about the authorization server, client registration, and the resource server.
In open ecosystems, these configuration elements are typically managed as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Authorization Server configuration: Clients may employ a manual approach, where external developers or end-users enter the necessary fields (i.e., endpoint URLs of the authorization server) at the client's website, or support fetching information about the authorization server via Authorization Server Metadata <xref target="RFC8414"/>.</t>
            </li>
            <li>
              <t>Client Registration configuration at the authorization server: Clients may employ a manual approach, where external developers or end-users enter the necessary fields (i.e., client identifier and client credentials) at the client's website, or support fetching information about the client registration via Dynamic Client Registration <xref target="RFC7591"/>.</t>
            </li>
            <li>
              <t>Protected Resource configuration: Clients may employ a manual approach, where external developers or end-users enter the necessary fields (i.e., endpoint URLs of the resource server) at the client's website, or support fetching information about the protected resource via Protected Resource Metadata <xref target="RFC9728"/>. External developers or end-users may further specify when and how the protected resources shall be fetched and processed by the clients.</t>
            </li>
          </ul>
          <t>The integration pattern in open ecosystems expands the use of OAuth in dynamic scenarios, creating new challenges with respect to functionality and security beyond the scope of <xref target="RFC9700"/>.</t>
        </section>
        <section anchor="AttackScenario">
          <name>Attack Scenario</name>
          <t>With the new integration model, OAuth in open ecosystems introduces two notable implications:</t>
          <ul spacing="normal">
            <li>
              <t>Increased risk of malicious integration: Since the responsibility of integrating client configurations is shifted to external developers or end-users, there is an increased risk that malicious client configurations may be introduced, including attacker-controlled authorization servers or resource servers.</t>
            </li>
            <li>
              <t>New requirements for handling shared issuers: Clients shall support client configurations with potentially shared issuers (explained below) to fulfill functional needs, which in turn introduces new security gaps.</t>
            </li>
          </ul>
          <t>In traditional OAuth deployments, it is implicitly assumed that there is exactly one client configuration for each client-authorization server pair. Under this assumption, the issuer (as defined in <xref section="4.4.2" sectionFormat="of" target="RFC9700"/>) serves as a unique identifier for the client. This has led to the common practice of clients tracking "the authorization server chosen by the user" during OAuth flows, as well as the adoption of existing mix-up defenses (<xref section="4.4.2" sectionFormat="of" target="RFC9700"/>), all of which are based on the issuer concept that uniquely identifies each authorization server from the client's point of view.</t>
          <t>In open ecosystems, however, the new integration pattern does not, and fundamentally cannot, restrict the use of the same authorization server across multiple client configurations. For instance, clients may legitimately integrate various functionalities that access different resources or process the same resources differently, while relying on the same authorization server (i.e., having shared issuers, which implies that the issuer no longer uniquely identifies a client configuration).</t>
          <t>As a result, the client may integrate with an authorization server under the attacker's control (<xref target="MixUpReloaded"/>), or an attacker-controlled resource server paired with an honest authorization server -- even if the authorization server is already integrated at the client under a different client configuration (<xref target="ConfigConfusion"/>).</t>
        </section>
        <section anchor="MixUpReloaded">
          <name>Mix-Up Attacks Reloaded</name>
          <t>This section provides a tailored attack description and alternative countermeasure for mix-up attacks in open ecosystems. The descriptions here follow <xref target="research.cuhk"/>, where additional details are laid out.</t>
          <section anchor="ReloadedDescription">
            <name>Attack Description</name>
            <t><xref section="4.4" sectionFormat="of" target="RFC9700"/> exemplifies scenarios in which an attacker-controlled authorization server may be introduced:</t>
            <ul empty="true" spacing="normal">
              <li>
                <t>This can be the case, for example, if the attacker uses dynamic registration to register the client at their own authorization server, or if an authorization server becomes compromised.</t>
              </li>
            </ul>
            <t>OAuth deployments in open ecosystems extend the above scenarios: an external developer or end-user can introduce an attacker-controlled authorization server by integrating a new client configuration at the client.</t>
            <t>Furthermore, multiple client configurations may use the same authorization server (i.e., share the same issuer).
To manage such scenarios, the client should treat each client configuration independently, typically by keeping track of the client configuration chosen by the user during the OAuth flow. For example, the client may store a unique identifier for each client configuration (rather than for each authorization server) in the user's session, or assign a distinct redirection URI to each client configuration.
This enables the client to distinguish between client configurations, retrieve the correct client registration information for access token requests, and access the intended protected resources.</t>
            <t>Attackers can exploit this setup to mount mix-up attacks, using a malicious authorization server from an attacker-controlled client configuration to target the honest authorization server from an honest client configuration. For details on this attack vector, see "Cross-app OAuth Account Takeover" (COAT) and "Cross-app OAuth Request Forgery" (CORF) in Section 4.2 of <xref target="research.cuhk"/>.</t>
            <t>As an example, the attack analogous to the Advanced Mix-up Attack described in <xref target="PerASUpdate"/> is outlined below.</t>
            <t>Preconditions: For this variant of the attack to work, it is assumed that</t>
            <ul spacing="normal">
              <li>
                <t>the implicit or authorization code grant is used with multiple client configurations of which one is considered "honest" (H-Config) and one is operated by the attacker (A-Config), and</t>
              </li>
              <li>
                <t>the client stores the client configuration chosen by the user in a session bound to the user's browser and uses distinct redirection URIs for different client configurations, but treats them as the same URI (i.e., it does not use the redirection URI to differentiate client configurations at the redirection endpoint).</t>
              </li>
            </ul>
            <t>In the following, it is further assumed that the client is registered with an honest authorization server H-AS (URI: <tt>https://honest.as.example</tt>, client ID: <tt>7ZGZldHQ</tt>) under H-Config and with an attacker-controlled authorization server A-AS (URI: <tt>https://attacker.example</tt>, client ID: <tt>666RVZJTA</tt>) under A-Config. Assume that the client issues the redirection URI <tt>https://client.com/9XpLmK2qR/cb</tt> for H-Config and <tt>https://client.com/4FvBn8TzY/cb</tt> for A-Config. URLs shown in the following example are shortened for presentation to include only parameters relevant to the attack.</t>
            <t>Attack on the authorization code grant:</t>
            <ol spacing="normal" type="1"><li>
                <t>The user selects to start the grant using A-Config (e.g., by clicking on a button on the client's website).</t>
              </li>
              <li>
                <t>The client stores in the user's session that the user selected "A-Config" and redirects the user to A-AS's authorization endpoint with a Location header containing the URL <tt>https://attacker.example/authorize?response_type=code&amp;client_id=666RVZJTA</tt>
                  <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2F4FvBn8TzY%2Fcb</tt>.</t>
              </li>
              <li>
                <t>When the user's browser navigates to the attacker's authorization endpoint, the attacker immediately redirects the browser to the authorization endpoint of H-AS. In the authorization request, the attacker replaces the client ID of the client at A-Config with the client's ID at H-Config, and replaces the redirection URI of A-Config with the redirection URI of H-Config. Therefore, the browser receives a redirection (<tt>303 See Other</tt>) with a Location header pointing to <tt>https://honest.as.example/authorize?response_type=code&amp;client_id=7ZGZldHQ</tt>
                  <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2F9XpLmK2qR%2Fcb</tt>.</t>
              </li>
              <li>
                <t>The user authorizes the client to access their resources at H-AS. H-AS issues a code and sends it (via the browser) back to the client.</t>
              </li>
              <li>
                <t>Since the client assumes that the code was issued in the interaction with A-Config, it will try to redeem the code at A-AS's token endpoint.</t>
              </li>
              <li>
                <t>The attacker therefore obtains code and can either exchange the code for an access token (for public clients) or perform an authorization code injection attack as described in <xref section="4.5" sectionFormat="of" target="RFC9700"/>.</t>
              </li>
            </ol>
          </section>
          <section anchor="ReloadedCountermeasure">
            <name>Countermeasures</name>
            <t>At its core, a client in open ecosystems may integrate multiple configurations of the same authorization server, and therefore the issuer may not be unique to the client. While the existing mix-up defenses in <xref section="4.4.2" sectionFormat="of" target="RFC9700"/> are sufficient, a variant of the "Mix-Up Defense via Distinct Redirect URIs" defense described in <xref section="4.4.2.2" sectionFormat="of" target="RFC9700"/> <bcp14>MAY</bcp14> be deployed instead for practical reasons:</t>
            <ul empty="true" spacing="normal">
              <li>
                <t>To apply this defense, clients <bcp14>MUST</bcp14> use a distinct redirection URI for each client configuration they interact with. Clients <bcp14>MUST</bcp14> check that the authorization response was received from the correct client configuration by comparing the distinct redirection URI for the client configuration to the URI where the authorization response was received on. If there is a mismatch, the client <bcp14>MUST</bcp14> abort the flow.</t>
              </li>
            </ul>
            <t>To maximize compatibility, this countermeasure imposes no new requirements on authorization servers compliant with the original OAuth 2.0 specification <xref target="RFC6749"/>. This is essential for securing open ecosystems where clients may be integrated with numerous client configurations, and many authorization servers may not support the "Mix-Up Defense via Issuer Identification" defense described in <xref section="4.4.2.1" sectionFormat="of" target="RFC9700"/> (e.g., returning the issuer identifier via an <tt>iss</tt> parameter in the authorization response <xref target="RFC9207"/>).</t>
            <t>To ease the development burden, compared to the "Mix-Up Defense via Distinct Redirect URIs" defense outlined in <xref section="4.4.2.2" sectionFormat="of" target="RFC9700"/>, this countermeasure does not require clients to manage issuers exclusively for mix-up defense. Instead, it relies on existing isolation boundaries that already serve the functional need of differentiating client configurations.</t>
            <t>Note that this countermeasure is not intended to redefine the concept of an issuer (or issuer identifier) from an authorization server-specific identifier to one tied to client configurations. Nor does it invalidate the existing countermeasures described in <xref section="4.4.2" sectionFormat="of" target="RFC9700"/> and clarified in <xref target="CountermeasureUpdate"/>, which remain sufficient to mitigate mix-up attacks in open ecosystems. Rather, this countermeasure <bcp14>MAY</bcp14> serve as an alternative defense.</t>
          </section>
        </section>
        <section anchor="ConfigConfusion">
          <name>Client Configuration Confusion Attack</name>
          <t>When client authentication is not required such as in the implicit grant or for a public client, or when signature-based client authentication methods such as <tt>private_key_jwt</tt> (as defined in <xref target="OpenID.Core"/>) or signed JWTs (as defined in <xref target="RFC7521"/> and <xref target="RFC7523"/>) are used, a malicious resource server may be able to obtain an access token issued by an honest authorization server.
This is achieved by registering an honest authorization server at the client under a malicious client configuration, pairing it with an attacker-controlled resource server, thus tricking the client into sending its access tokens to the attacker instead of using them at the honest resource server.</t>
          <t>Unlike mix-up attacks or audience injection attacks, client configuration confusion attacks do not involve a malicious authorization server, but rather an honest one used in a malicious client configuration.</t>
          <section anchor="ConfigConfusionAttack">
            <name>Attack Description</name>
            <t>Client configuration confusion attacks are feasible if a client satisfies the following preconditions:</t>
            <ol spacing="normal" type="1"><li>
                <t>The client has at least two client configurations, one of which is configured by an attacker. The client allows for the two configurations to use the same authorization server (i.e., issuer-sharing client configurations) but different resource servers.</t>
              </li>
              <li>
                <t>The client stores the client configuration chosen by the user in a session bound to the user's browser and assigns the same redirection URI for at least the issuer-sharing, if not all, client configurations.</t>
              </li>
              <li>
                <t>The client uses the same client ID across the issuer-sharing client configurations.</t>
              </li>
              <li>
                <t>Regarding client authentication, one of the following applies:</t>
              </li>
            </ol>
            <ul spacing="normal">
              <li>
                <t>The client authenticates to the authorization server in both client configurations with a signature-based authentication method (e.g., the <tt>jwt-bearer</tt> client authentication from <xref target="RFC7523"/>) using the same key pair.</t>
              </li>
              <li>
                <t>The client interacts with the authorization server in both client configurations without requiring client authentication (i.e., using the implicit grant, or as a public client).</t>
              </li>
            </ul>
            <t>For brevity of presentation, in the following, let H-AS, H-RS, and H-Config denote an honest authorization server, resource server, and client configuration, respectively. Let A-AS, A-RS, and A-Config denote an attacker-controlled authorization server, resource server, and client configuration, respectively.</t>
            <section anchor="ConfusionCoreSteps">
              <name>Core Attack Steps</name>
              <t>In the following, it is further assumed that the client is registered with H-AS for both client configurations. The client is configured to use A-RS for A-Config and H-RS for H-Config.</t>
              <t>Attack on the authorization code grant:</t>
              <ol spacing="normal" type="1"><li>
                  <t>The user selects to start the grant using A-Config (e.g., by clicking on a button on the client's website).</t>
                </li>
                <li>
                  <t>The client stores in the user's session that the user selected "A-Config" and redirects the user to H-AS's authorization endpoint.</t>
                </li>
                <li>
                  <t>The user authorizes the client to access their resources at H-AS. Having validated that the client ID and redirection URI match the ones assigned for H-Config, H-AS issues a code and sends it (via the browser) back to the client.</t>
                </li>
                <li>
                  <t>The client redeems the code issued by H-AS at H-AS's token endpoint. To authenticate with H-AS, the client creates a client assertion signed by itself. Recall that both A-Config and H-Config registered the client with H-AS under the same client ID, and that the client uses the same key pair for authentication at H-AS. Hence, this client assertion, if required, would be a valid authentication credential for the client at H-AS. Note that generating and validating client assertions in this step is irrelevant for public clients.</t>
                </li>
                <li>
                  <t>Since the client stores "A-Config" in the user's session, it sends the access token to A-RS. The attacker therefore obtains the user's access token issued by H-AS.</t>
                </li>
              </ol>
              <t>Variant in Implicit Grant:
In the implicit grant, H-AS issues an access token instead of the code in Step 3. Step 4 is omitted. The rest of the attack proceeds as above.</t>
            </section>
            <section anchor="discussion-on-sharing-client-ids">
              <name>Discussion: on Sharing Client IDs</name>
              <t>The scope of client configuration confusion attack is limited to the reuse of registered clients, and considers phishing threats involving the open registration of new clients as out of scope, because such threats can be mitigated by existing mechanisms such as vetting during manual registration, or via initial access tokens as defined in <xref section="1.2" sectionFormat="of" target="RFC7591"/>.</t>
              <t>For the attack to work, A-Config and H-Config need to share the same client ID in client registration (precondition 3 in <xref target="ConfigConfusionAttack"/>). This can be the case, for example, if an external developer or end-user can control the client ID used in A-Config during manual registration, or if the client uses dynamic registration to get assigned the same client ID for A-Config as in H-Config, as detailed below.</t>
              <t>When the client is designed to perform dynamic client registration once per client configuration, A-Config and H-Config could feasibly share the same client ID.
Unlike the situation in <xref target="AudienceInjection"/>, since A-Config uses H-AS instead of A-AS, the attacker cannot directly control which client ID the authorization server assigns to A-Config.
However, according to the description of client ID returned in Client Information Response (<xref section="3.2.1" sectionFormat="of" target="RFC7591"/>):</t>
              <dl>
                <dt>client_id</dt>
                <dd>
                  <t>OAuth 2.0 client identifier string.  It <bcp14>SHOULD NOT</bcp14> be currently valid for any other registered client, though an authorization server <bcp14>MAY</bcp14> issue the same client identifier to multiple instances of a registered client at its discretion.</t>
                </dd>
              </dl>
              <t>The second half of the last sentence explicitly allows a client to obtain a client ID of the same value across multiple client registrations, as long as the client is considered to be instances of the same registered client by the authorization server.</t>
              <t>This behavior is intended for registering different "client instances", i.e., different deployed instances of the same piece of client software (see <xref section="1.2" sectionFormat="of" target="RFC7591"/>). However, the authorization server cannot distinguish between this case and a client registering multiple times for different client configurations.</t>
              <t>Specifically, when the client initiates dynamic registration at H-AS based on H-Config and A-Config respectively, the authorization server, recognizing the two client registration requests as originating from the same client (e.g., indicated by the identical software identifier or software statement provided by the client, see <xref section="2" sectionFormat="of" target="RFC7591"/> for their definitions), is likely to return the same client ID according to <xref section="A.4.2" sectionFormat="of" target="RFC7591"/>:</t>
              <ul empty="true" spacing="normal">
                <li>
                  <t>Particular authorization servers might choose, for instance, to maintain a mapping between software statement values and client identifier values, and return the same client identifier value for all registration requests for a particular piece of software.</t>
                </li>
              </ul>
              <t>Therefore, a client interacting with H-Config and A-Config could feasibly share the same client ID when dynamic client registration is used.</t>
            </section>
          </section>
          <section anchor="ConfigConfusionCountermeasures">
            <name>Countermeasures</name>
            <t>At its core, client configuration confusion attacks exploit the fact that, an attacker-controlled client configuration can reuse the registered client at the honest authorization server under an honest client configuration.</t>
            <t>Clients in open ecosystems that interact with more than one client configuration and support authorization servers that either use signature-based client authentication methods or do not require client authentication <bcp14>MUST</bcp14> employ the following countermeasure, unless client configuration confusion attacks are mitigated by other means, such as using fresh key material for each authorization server employing signature-based client authentication and disallowing any authorization server that does not require client authentication.</t>
            <t>Clients <bcp14>MUST</bcp14> issue a distinct redirection URI for each client configuration they interact with, both during client registration and in OAuth flows. This ensures that the redirection URI for the attacker-controlled client configuration will fail the exact redirection URI match (required by <xref section="4.1.3" sectionFormat="of" target="RFC9700"/>) at the honest authorization server, since the redirection URI at the honest client configuration is the only redirection URI registered for the client identifier at the honest authorization server.</t>
            <t>When dynamic client registration is supported, clients <bcp14>SHOULD</bcp14> also specify a different software identifier (<tt>software_id</tt>) in client registration requests for each client configuration. This prevents client registration requests from being rejected by the authorization server when different redirection URIs are used, if the authorization server follows the excerpt from <xref section="5" sectionFormat="of" target="RFC7591"/> below:</t>
            <ul empty="true" spacing="normal">
              <li>
                <t>An authorization server could also refuse registration requests from a known software identifier that is requesting different redirection URIs or a different client URI.</t>
              </li>
            </ul>
            <t>This countermeasure can be considered an actionable approach to mitigating the "Counterfeit Resource Server" threat (see "Access Token Phishing by Counterfeit Resource Server" in <xref section="4.9.1" sectionFormat="of" target="RFC9700"/>) within the context of open ecosystems. It is complementary to general defenses for access token misuses, such as sender-constrained and audience-restricted access tokens as specified in <xref section="4.10" sectionFormat="of" target="RFC9700"/>.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>Security considerations are described in <xref target="AttacksMitigations"/>.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OAUTH-7523bis">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <date day="21" month="February" year="2025"/>
            <abstract>
              <t>   This specification defines the use of a JSON Web Token (JWT) Bearer
   Token as a means for requesting an OAuth 2.0 access token as well as
   for client authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-00"/>
        </reference>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros" fullname="Breno de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore" fullname="Chuck Mortimore">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OpenID.Discovery" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
          <front>
            <title>OpenID Connect Discovery 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="E." surname="Jay" fullname="Edmund Jay">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OpenID.CIBA" target="https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html">
          <front>
            <title>OpenID Connect Client-Initiated Backchannel Authentication Flow - Core 1.0</title>
            <author initials="G." surname="Fernandez" fullname="Gonzalo Fernandez Rodriguez">
              <organization/>
            </author>
            <author initials="F." surname="Walter" fullname="Florian Walter">
              <organization/>
            </author>
            <author initials="A." surname="Nennker" fullname="Axel Nennker">
              <organization/>
            </author>
            <author initials="D." surname="Tonge" fullname="Dave Tonge">
              <organization/>
            </author>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization/>
            </author>
            <date year="2021" month="September"/>
          </front>
        </reference>
        <reference anchor="research.ust" target="https://eprint.iacr.org/2025/629">
          <front>
            <title>Audience Injection Attacks: A New Class of Attacks on Web-Based Authorization and Authentication Standards</title>
            <author initials="P." surname="Hosseyni" fullname="Pedram Hosseyni">
              <organization/>
            </author>
            <author initials="R." surname="Küsters" fullname="Ralf Küsters">
              <organization/>
            </author>
            <author initials="T." surname="Würtele" fullname="Tim Würtele">
              <organization/>
            </author>
            <date year="2025" month="April"/>
          </front>
        </reference>
        <reference anchor="research.cuhk" target="https://www.usenix.org/system/files/conference/usenixsecurity25/sec24winter-prepub-332-luo.pdf">
          <front>
            <title>Universal Cross-app Attacks: Exploiting and Securing OAuth 2.0 in Integration Platforms</title>
            <author initials="K." surname="Luo" fullname="Kaixuan Luo">
              <organization/>
            </author>
            <author initials="X." surname="Wang" fullname="Xianbo Wang">
              <organization/>
            </author>
            <author initials="P. H. A." surname="Fung" fullname="Pui Ho Adonis Fung">
              <organization/>
            </author>
            <author initials="W. C." surname="Lau" fullname="Wing Cheong Lau">
              <organization/>
            </author>
            <author initials="J." surname="Lecomte" fullname="Julien Lecomte">
              <organization/>
            </author>
            <date year="2025" month="August"/>
          </front>
          <refcontent>34th USENIX Security Symposium (USENIX Security 25)</refcontent>
        </reference>
        <reference anchor="arXiv.1601.01229" target="https://arxiv.org/abs/1601.01229/">
          <front>
            <title>A Comprehensive Formal Security Analysis of OAuth 2.0</title>
            <author initials="D." surname="Fett" fullname="Daniel Fett">
              <organization/>
            </author>
            <author initials="R." surname="Küsters" fullname="Ralf Küsters">
              <organization/>
            </author>
            <author initials="G." surname="Schmitz" fullname="Guido Schmitz">
              <organization/>
            </author>
            <date year="2016" month="January"/>
          </front>
          <refcontent>arXiv:1601.01229</refcontent>
        </reference>
        <reference anchor="research.jcs_14" target="https://www.doc.ic.ac.uk/~maffeis/papers/jcs14.pdf">
          <front>
            <title>Discovering concrete attacks on website authorization by formal analysis</title>
            <author initials="C." surname="Bansal" fullname="Chetan Bansal">
              <organization/>
            </author>
            <author initials="K." surname="Bhargavan" fullname="Karthikeyan Bhargavan">
              <organization/>
            </author>
            <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
              <organization/>
            </author>
            <author initials="S." surname="Maffeis" fullname="Sergio Maffeis">
              <organization/>
            </author>
            <date year="2014" month="April"/>
          </front>
          <refcontent>Journal of Computer Security, vol. 22, no. 4, pp. 601-657</refcontent>
        </reference>
        <reference anchor="MCP-Spec" target="https://modelcontextprotocol.io/specification/2025-03-26">
          <front>
            <title>Model Context Protocol (MCP) Specification</title>
            <author initials="" surname="Anthropic" fullname="Anthropic PBC">
              <organization/>
            </author>
            <date year="2025" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC8628">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </reference>
        <reference anchor="RFC7522">
          <front>
            <title>Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a Security Assertion Markup Language (SAML) 2.0 Bearer Assertion as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7522"/>
          <seriesInfo name="DOI" value="10.17487/RFC7522"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="RFC9207">
          <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>
      </references>
    </references>
    <?line 654?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgments</name>
      <t>We would like to thank
<cref anchor="acksAddNames" source="Tim W.">TODO add names, sort by last name.</cref>
Daniel Fett,
Wing Cheong Lau,
Julien Lecomte,
Aaron Parecki,
Guido Schmitz, and
Xianbo Wang</t>
      <t>for their valuable feedback and contributions to this document.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated temporary title</t>
        </li>
        <li>
          <t>Added introductory paragraphs, replaced placeholders</t>
        </li>
        <li>
          <t>Clarified issuer does not uniquely identify client config</t>
        </li>
        <li>
          <t>Cleaned up acknowledgement list</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
73RNvkH8gi2c41VhukjJjSnMJ+ljpgbfdgfHjZkU6zbmtFhUX+hFvsAtzbDp
lXjP09xuLb6xMh06h80p4ljUm84QGsWNQPE1PdHuRiPRXM03RIGfcmWG2TvT
SCJoK0tKVGE0QFCNRuQ2RFix0OScXWrGQwpAQ3J19ekogTeHgMBt7Gn69+GD
6V3I9dBhjzi2r3ANpntS8P0Br096/wW3lE3MJWBQM5WgbYqhWpv0hM2Q2pTg
F9mIAS4Y08f9hiE/5umYul/d5uxnHUKvlozfzgWRZWaZOPBprHQNLclfdWex
BgOeWG0XWaxktyfC91GrLwvQQFvo6lEUEqtgDBbdCuqqXCNgsYMrqFzZrDLa
kW+aVJts7l0VxPUa4qRar7A9H9hprOF1EHNvgBiV4k7IPO9qlxEDHLtkVbgv
GwTh3x3ErRZjnsfWK/KufhEId6A5Wx1bi/lfER9ggjs3dPE/EEkbNPuLQK/N
agh4HQBp4OaDL7DmM1aP71osQsyo+IaZs4WCtcDFTa/srxZorGN7R1wCNYmc
4YMIMZeuIaa3dAYIZB3o8zC1DnUei+oSk8cpJU5WR5kJ3ti01CE3wUAYYq+z
KU5LU8UIiRrJ5Cffu3T9TCiRkgNVYit1WUZ+67WwK5ZR/21jOc8eeGOijDgZ
f73UC3foFtJctJd2iu5TsCFJGHEaDgtS4tln2ASYypHKtHpHJpzteuF978SL
qUk8MXUppPZB8la1ZSbVglWLdF6zuXQXzYgKTcopbmkwRa4YtpPs/p40Q3N5
f75M3bbNUsVaXqj4IAd5QV3wrHeE3d4LQAFqWwWoTN4YMuArx00YxQ2pds87
7PUHojYcDPSb96BxcUkCJoPtMiZmc4xWOozkdlpD05YMtKE10YbFCUQni65X
yaqKt7E9OYnHpHJh+U4jj4f3jLwjUmnXtUznapKjJjrlJrc4ey1Z2yatbMWa
jech2dlQDNFyLvl9fzf4NyWWzKmsCywddRlz2C2ocGEUV01dIfg4dWXQqw20
08UGauZ32kf3bOVXb7Okx1oisXN6/VtN11o71pRlLm8OVTouRCwCjxP2BefK
yqRdCYzhmP58YlOn7IRUUKfMONZSPEEsaNJhu/ic4evGYc1KLWD6LKFOmdS9
izpFDJUpEvU5/UYfF+jj5Fd0PrIuomSHJNfQo3I+9bSDDBQNMDw43cWa1eQ9
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
ysJ6ov8LyAwf3EC1AAA=

-->

</rfc>
