<?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-00" 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="OAuth 2.0 Security BCP">OAuth 2.0 Security Best Current Practice</title>
    <seriesInfo name="Internet-Draft" value="draft-wuertele-oauth-security-topics-update-00"/>
    <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="16"/>
    <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>TODO explain the document structure and how it "fits" with <xref target="RFC9700"/></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>TODO section intro, mention that we do not repeat <xref target="RFC9700"/> stuff
here</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).
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 653?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgments</name>
      <t>We would like to thank
Adonis Fung,
Kaixuan Luo,
<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,
Xianbo Wang,
<cref anchor="acksAddNamesLuo" source="Kaixuan L.">Added by Kaixuan.</cref></t>
      <t>for their valuable feedback and contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
k9qklHgnKEbB/wU6wogOPbIAAA==

-->

</rfc>
