<?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.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-security-topics-update-02" 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.34.0 -->
  <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-ietf-oauth-security-topics-update-02"/>
    <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>
          <region>Hong Kong</region>
          <country>China</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="2026" month="June" day="24"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>security</keyword>
    <keyword>oauth2</keyword>
    <keyword>best current practice</keyword>
    <abstract>
      <?line 239?>

<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-ietf-oauth-security-topics-update.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-security-topics-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/SECtim/draft-wuertele-oauth-security-topics-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 247?>

<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.</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 (see
<xref target="TokenEPasAud"/>).  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>Once the attacker obtained such a client assertion, it can impersonate
the client towards H-AS.  This enables multiple attacks.  For example,
the attacker may obtain access tokens via a client credentials grant.
Another example is the attacker initiating a regular authorization code
grant where a victim user grants access to the honest client at H-AS,
but the access token ends up with the attacker (since the attacker fully
impersonates the client in this case, mechanisms like DPoP <xref target="RFC9449"/>
cannot protect against the attack).</t>
            <t>Further attack scenarios and additional details are given in
<xref target="research.ust"/>.</t>
          </section>
          <section anchor="TokenEPasAud">
            <name>Token Endpoint as Client Assertion Audience</name>
            <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>
          </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>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.  It is <bcp14>RECOMMENDED</bcp14> to prefer the
countermeasure described in <xref target="AudienceInjectionCountermeasuresASissuer"/>.</t>
          <t>The countermeasures described below mandate the use of single audience
value (as opposed to multiple audiences in an 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.  Since the
countermeasures rely on the client using an unambiguous audience value,
there is no value in including additional ones (that would need to be
unambiguous as well).</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 of 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 anchor="implementation-considerations">
            <name>Implementation Considerations</name>
            <t>Technically, 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 (client assertion) JWT if the
authorization server can identify itself with (at least one of the
elements in) the JWT's audience value. Client assertions produced by a
client implementing one of these countermeasures meet this condition.</t>
            <t>However, some existing authorization server implementations only accept
their token endpoint as the audience value in client assertions,
including for authentication at endpoints other than the token endpoint.
Clients interacting with such authorization servers <bcp14>MUST</bcp14> employ
alternative countermeasures.  In this case, clients <bcp14>SHOULD</bcp14> use one of
the following countermeasures, in decreasing order of preference:</t>
            <ol spacing="normal" type="1"><li>
                <t>Use distinct authentication key material with each authorization server.</t>
              </li>
              <li>
                <t>Ensure the use of unique client identifiers across all authorization servers (note that this might not be feasible in some ecosystems, for example, in connection with OpenID Federation <xref target="OpenID.Federation"/>).</t>
              </li>
              <li>
                <t>Ensure uniqueness of all (client identifier, token endpoint) pairs and use the token endpoint as the sole audience value in all client assertions.</t>
              </li>
            </ol>
            <t>While an authorization server that already accepts (among other values)
its issuer identifier or the exact endpoint as client assertion audience
values does not need to change anything, such an authorization server
<bcp14>MAY</bcp14> still decide to restrict acceptance to its issuer identifier
(<xref target="AudienceInjectionCountermeasuresASissuer"/>) or the endpoint that
received the client assertion
(<xref target="AudienceInjectionCountermeasuresTargetEP"/>) as an audience value, for
example, to force its clients to adopt the respective countermeasure.</t>
          </section>
        </section>
      </section>
      <section anchor="COAT">
        <name>Cross-toolkit OAuth Account Takeover</name>
        <t>It is increasingly common and observed that a single OAuth client supports multiple tools. Each set of tools, known as a toolkit, is mapped to an OAuth provider configuration, which includes at least the authorization server (AS) endpoints and client registration. A successful OAuth connection is established when the OAuth client obtains an access token for a tool based on its corresponding OAuth provider configuration. The tool can then use the access token to access the user's protected resource at a resource server (RS).</t>
        <t>Multiple OAuth connections can be linked to some form of user identity based on the following common deployment scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>Application Integration: The OAuth connections made with different toolkits are linked to an application's user account or session (e.g., represented by an application's user identifier or a short-lived anonymous session). This is common where a user authorizes an application (e.g., a cloud platform or an agentic AI service) to orchestrate multiple tools, some of which together with their OAuth providers can be contributed by the public.</t>
          </li>
          <li>
            <t>Multi-tenant OAuth-as-a-Service (also known as Token Vault): In cases where OAuth responsibilities of a client are managed by a multi-tenant OAuth-as-a-Service provider, a successful OAuth connection is linked to a tenant's user identifier in addition to the tenant identifier. This is a generalization of the last deployment scenario, where an application using this OAuth-as-a-Service is becoming a tenant. A tenant can usually choose some off-the-shelf toolkits using (partially-) completed OAuth providers, if not adding their own toolkits with custom OAuth providers to support the tenant's service.</t>
          </li>
        </ul>
        <t>When controlled by an attacker, the open configurations of OAuth providers have posed a new threat to this centralized OAuth client design. If the client fails to properly identify, track, and isolate which proper OAuth connection context (representing a combination of OAuth provider, toolkit, and tenant) is in use during an authorization flow, an attacker can exploit this to mount Cross-toolkit OAuth Account Takeover (COAT) attacks (see <xref target="research.cuhk"/> and <xref target="research.cuhk2"/>). The COAT attacker uses a malicious toolkit to steal a victim's authorization code issued by an honest OAuth provider of an honest toolkit, and applies the authorization code injection (as defined in <xref section="4.5" sectionFormat="of" target="RFC9700"/>) against a new OAuth connection with the attacker's identity. This results in a compromised OAuth connection between the attacker's application identity and the victim's toolkit access. The impact is equivalent to an account takeover: the attacker can operate the honest toolkit with the victim's account (hijacked either under the same application, or even cross-tenant that shares a vulnerable OAuth-as-a-service).</t>
        <section anchor="COATDescription">
          <name>Attack Description</name>
          <t>Preconditions: It is assumed that</t>
          <ul spacing="normal">
            <li>
              <t>the implicit or authorization code grant is used with multiple OAuth connection contexts, of which one is considered "honest" (H-Toolkit using H-AuthProvider with H-AS) and one is operated by the attacker (A-Toolkit using A-AuthProvider with A-AS), and</t>
            </li>
            <li>
              <t>the client stores the connection context chosen by the user in a session bound to the user's browser, and</t>
            </li>
            <li>
              <t>the authorization servers properly check the redirection URI by enforcing exact redirection URI matching (otherwise, see Cross Social-Network Request Forgery in <xref target="research.jcs_14"/> for details).</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/honest-cb</tt> for the honest toolkit and <tt>https://client.com/attack-cb</tt> for the attacker-controlled toolkit. 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>A victim user selects to start the grant using A-AS of A-Toolkit (e.g., by initiating a tool use on an agentic AI service).</t>
            </li>
            <li>
              <t>The client stores in the user's session that the user has selected this OAuth connection context 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&amp;state=[state]</tt>
                <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2Fattack-cb</tt>.</t>
            </li>
            <li>
              <t>When the user's browser navigates to the A-AS, the attacker immediately redirects the browser to the authorization endpoint of H-AS. In the authorization request, the attacker uses the honest authorization URL and replaces the <tt>state</tt> with the one freshly received. Therefore, the browser receives a redirection with a Location header pointing to <tt>https://honest.as.example/authorize?response_type=code&amp;client_id=7ZGZldHQ&amp;state=[state]</tt>
                <tt>&amp;redirect_uri=https%3A%2F%2Fclient.com%2Fhonest-cb</tt>.</t>
            </li>
            <li>
              <t>Due to implicit or prior approvals, the user might not be prompted for a re-authorization (re-consent). H-AS issues a code and sends it (via the browser) back with the <tt>state</tt> to the client.</t>
            </li>
            <li>
              <t>Since the client still assumes that the code was issued by A-Toolkit, as stored in the user's session (with <tt>state</tt> verified), 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>This Cross-toolkit OAuth Account Takeover (COAT) attack is a generalization of the Cross-app OAuth Account Takeover as defined in <xref target="research.cuhk"/> and the mix-up attack as defined in <xref section="4.4" sectionFormat="of" target="RFC9700"/>. This COAT exploits confusion between the OAuth connection context (i.e., a combination of OAuth provider, toolkit, tenant) of a centralized client rather than being limited to confusion between two distinct authorization servers.</t>
          <t>Variants:</t>
          <ul spacing="normal">
            <li>
              <t>COAT under the OAuth-as-a-Service context: the attack above can be launched with a malicious tenant by adding a custom toolkit with an OAuth provider that targets an honest AS used by another tenant's toolkit. A variation of this attack involves the malicious tenant simply using a shared off-the-shelf toolkit that comes with a pre-built OAuth provider (with client registration included), if so allowed.</t>
            </li>
            <li>
              <t>Implicit Grant: In the implicit grant, the attacker receives an access token instead of the code in Step 4.  The attacker's authorization server receives the access token when the client makes either a request to the A-AS userinfo endpoint (defined in <xref target="OpenID.Core"/>) or a request to the attacker's resource server (since the client believes it has completed the flow with A-AS).</t>
            </li>
            <li>
              <t>Cross-toolkit OAuth Request Forgery (CORF): If clients do not store the selected OAuth connection context in the user's session, but in the redirection URI instead, attackers can mount an attack called Cross-toolkit OAuth Request Forgery (CORF). This results in a compromised OAuth connection between the victim's application identity and the attacker's toolkit access. The goal of this specific attack variant 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. This Cross-toolkit OAuth Request Forgery attack is a generalization of the Cross-app OAuth Request Forgery as defined in <xref target="research.cuhk"/> and the Naïve RP Session Integrity Attack when the OAuth connection context is limited to AS, and is detailed in Section 3.4 of <xref target="arXiv.1601.01229"/>.</t>
            </li>
            <li>
              <t>OpenID Connect: Some variants can be used to attack OpenID Connect. In these attacks, the attacker misuses features of the OpenID Connect Discovery <xref target="OpenID.Discovery"/> mechanism or replays access tokens or ID Tokens to conduct a mix-up attack. The attacks are described in detail in Appendix A of <xref target="arXiv.1704.08539"/> and Section 6 of <xref target="arXiv.1508.04324v2"/> ("Malicious Endpoints Attacks").</t>
            </li>
          </ul>
        </section>
        <section anchor="COATCountermeasure">
          <name>Countermeasures</name>
          <t>The client <bcp14>MUST</bcp14> use all variables in its supported OAuth connection context to form a connection context identifier that uniquely identifies each AS instance configured at the client. This identifier always includes the unique toolkit identifier. Additionally,</t>
          <ul spacing="normal">
            <li>
              <t>a client allowing each toolkit to use multiple OAuth providers, of which one AS may be compromised as assumed in <xref section="4.4" sectionFormat="of" target="RFC9700"/>, <bcp14>MUST</bcp14> also include the OAuth provider identifier;</t>
            </li>
            <li>
              <t>a multi-tenant client <bcp14>MUST</bcp14> also include the tenant identifier, if the toolkit identifier is not globally unique.</t>
            </li>
          </ul>
          <t>Unless otherwise specified as follows, the client <bcp14>MUST</bcp14> issue per-context distinct redirection URI that incorporates this unique connection context identifier. When initiating an authorization request, the client <bcp14>MUST</bcp14> store this identifier in the user's session. When an authorization response was received on the redirection endpoint, the client <bcp14>MUST</bcp14> also check that the context identifier from the distinct redirection URI matches with the one in the user's session. If there is a mismatch, the client <bcp14>MUST</bcp14> abort the flow.</t>
          <t>Existing countermeasures for mix-up attacks (<xref section="4.4" sectionFormat="of" target="RFC9700"/>) can be a replacement under the following conditions:</t>
          <ul spacing="normal">
            <li>
              <t>the client has entirely dropped the support to implicit grant, and</t>
            </li>
            <li>
              <t>the OAuth provider specifies an AS not by individually configured AS endpoints but instead by an abstract issuer identifier (as defined in <xref section="4.4.2" sectionFormat="of" target="RFC9700"/>) that represents the endpoints, and</t>
            </li>
            <li>
              <t>the issuer identifier is used either in place of the connection context identifier in the redirection URI or is separately returned according to <xref target="RFC9207"/>, and</t>
            </li>
            <li>
              <t>an additional runtime resolution is used to resolve the issuer to retrieve the associated AS endpoints (e.g., with the authorization server metadata <xref target="RFC8414"/> or OpenID Discovery <xref target="OpenID.Discovery"/>). Clients using such resolution solely to pre-populate individual AS endpoint fields, without any coupling with the issuer identifier will remain vulnerable.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="SessionFixation">
        <name>Cross-user OAuth Session Fixation</name>
        <t>Based on similar deployment needs as outlined in <xref target="COAT"/>, multiple OAuth connections can be linked to some form of user's identity (e.g., an application's user identifier). This identity information is supposedly maintained in a session established and already bound to the user agent. In real-world deployments, however, this prerequisite can be broken for various reasons. For instance, in OAuth deployments that cross user agents, where an authenticated native app has its backend acting as a confidential OAuth client, the client opens a tool linking URL in an external user agent (typically a browser, as defined in <xref target="RFC8252"/>) that has no authenticated sessions with the client. As a workaround, the client introduces a session fixation vulnerability: it encodes a session identifier into the URL, which fixates a dedicated authorization session to complete the OAuth flow with the user at the client.</t>
        <t>The Cross-user OAuth Session Fixation exploits this session fixation attack vector. The attacker attempts to trick a victim into completing an OAuth flow that the attacker has initiated at the client. As a result, the attacker's session will be used to establish an OAuth connection with the victim's tool resources or identity, hence resulting in the same impact as COAT (<xref target="COAT"/>). However, this attack exploits confusion over the intended user bound to that connection context during the OAuth flow, contrasting with COAT, which exploits confusion within the OAuth connection context (OAuth provider, toolkit, tenant).</t>
        <t>In general, this session fixation vulnerability may be viewed as violating the requirement of "binding the contents of state to the browser (more precisely, the initiating user agent) session" to defend against Cross-Site Request Forgery (CSRF, see <xref section="4.7" sectionFormat="of" target="RFC9700"/>). However, while PKCE <xref target="RFC7636"/> can mitigate CSRF, PKCE alone cannot mitigate this new attack: Since the entire OAuth flow including the authorization request and the request to redirection endpoint is completed by the same victim user, the cryptographic binding of authorization request and access token request enforced by PKCE is preserved. The impact of the new attack is also more severe than that of typical CSRF attacks.</t>
        <t>Note that this section focuses on the authorization code grant. For similar attacks in cross-device OAuth flows, see <xref section="4" sectionFormat="of" target="CDFS"/>.</t>
        <section anchor="FixationAttack">
          <name>Attack Description</name>
          <t>Preconditions: It is assumed that the client has maintained a user's session. But it does not want to or cannot authenticate the user at the redirection endpoint for usability reasons, before completing the OAuth flow.</t>
          <t>Example Attack:</t>
          <ol spacing="normal" type="1"><li>
              <t>From a vulnerable client, the attacker initiates OAuth against a tool and obtains an authorization request URL, in which the <tt>state</tt> parameter has encoded a newly created authorization session of the attacker.</t>
            </li>
            <li>
              <t>The attacker sends this authorization request URL to a victim.</t>
            </li>
            <li>
              <t>The victim visits the URL and (automatically, due to prior or implicit approvals,) authorizes the client to access their resources.</t>
            </li>
            <li>
              <t>Upon receiving the <tt>state</tt> at the redirection endpoint, the client fixates the attacker's authorization session and completes the OAuth flow.</t>
            </li>
            <li>
              <t>The attacker's account at the client now gains access to the victim's resources.</t>
            </li>
          </ol>
          <t>Variant:</t>
          <t>The client may first generate a pre-authorization URL for the purpose of fixating a session before redirecting to the authorization endpoint.</t>
          <t>Non-normative example request:</t>
          <artwork><![CDATA[
GET /oauth?auth_session_id=6064f11c-f73e-425b-b9b9-4a36088cdb2b HTTP/1.1
Host: client.com
]]></artwork>
          <t>Non-normative example response:</t>
          <artwork><![CDATA[
HTTP/1.1 303 See Other
Location: https://as.example/authorize?
          response_type=code&client_id=K9dTpWzqL7&state=b1d8f043
          &redirect_uri=https%3A%2F%2Fclient.com%2Fcb
Set-Cookie: auth_session_id=6064f11c-f73e-425b-b9b9-4a36088cdb2b
]]></artwork>
          <t>This variant differs from the above only by obtaining and sending the pre-authorization URL instead, which will first fixate the attacker's authorization session (rather than in Step 4).</t>
        </section>
        <section anchor="FixationCountermeasures">
          <name>Countermeasures</name>
          <t>To defend against the Cross-user OAuth Session Fixation attack, the client <bcp14>MUST</bcp14> ensure that an OAuth flow initiated by one user is completed by the same user.</t>
          <t>The most straightforward countermeasure is to identify the initiating user via their existing session at the client, rather than introducing a fixated session, if usability conditions permit. However, eliminating the session fixation vector may not always be feasible due to application needs. For instance, when the OAuth client responsibilities of establishing OAuth connections and the application's session management are handled by separate entities (e.g., separate services isolated under different origins, accessed from different user agents, or when the OAuth client is outsourced to an OAuth-as-a-Service provider), as observed in practice by <xref target="research.cuhk2"/>.</t>
          <t>Hence, the client <bcp14>MUST</bcp14> validate the binding of any <em>newly fixated authorization session</em> (conveyed via <tt>state</tt> or the pre-authorization URL) to the <em>existing user session</em> (maintained at the user agent) that initiates the OAuth flow, before proceeding with the access token request. Depending on the specific current settings:</t>
          <ul spacing="normal">
            <li>
              <t>If the user session is accessible at the redirection endpoint, the client can validate this binding directly.</t>
            </li>
            <li>
              <t>If the user session is not accessible at the redirection endpoint, for example, because the redirection endpoint is hosted in a different origin or accessed from a different user agent than where the user session is maintained, the countermeasure requires one of the following to make the session accessible prior to validation:  </t>
              <ul spacing="normal">
                <li>
                  <t>an implementation change to co-locate the redirection endpoint under the same origin as the endpoint maintaining the user session, and/or to re-authenticate the user at the redirection endpoint from the external user agent (e.g., a browser), or</t>
                </li>
                <li>
                  <t>from the current redirection endpoint, performing a further redirection back to the starting origin and/or user agent where the existing session is available. For native apps, the redirect options specified in <xref section="7" sectionFormat="of" target="RFC8252"/> <bcp14>MUST</bcp14> be used. The location of this further redirection <bcp14>MUST NOT</bcp14> be controllable by an attacker, or it will result in Open Redirection (<xref section="4.11" sectionFormat="of" target="RFC9700"/>).</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="SharedConsent">
        <name>Shared Consent in Brokered OAuth</name>
        <t>In a brokered OAuth deployment, an intermediate entity (called the <em>broker</em> in the following) mediates between downstream clients and one or more upstream authorization servers (referred to as <em>AS</em> in the following).
The broker acts as an OAuth client towards each AS.
Towards its downstream clients, the broker either acts as an authorization server itself, exposing a standards-compliant OAuth interface, or it exposes a custom, non-OAuth interface.</t>
        <t>The attack and countermeasures described in this section apply regardless of which of these two interfaces the broker exposes to its downstream clients.</t>
        <t>Throughout this section, the terms <em>upstream</em> and <em>downstream</em> are used relative to the broker and the direction in which authorization flows.
The AS is <em>upstream</em> as the source of authorization and tokens, while the clients the broker serves are <em>downstream</em> as the recipients of the access the broker obtains on their behalf.</t>
        <t>The term <em>downstream client</em> furthermore denotes a unit of trust rather than necessarily a single application or an OAuth client in the sense of <xref target="RFC6749"/>.
Multiple applications under common administrative control, such as the applications of a single tenant of a multi-tenant broker or the applications of an organization operating its own broker, may legitimately share a single registration and consent decision and thus be treated as a single downstream client.
Applications under separate administrative control constitute distinct downstream clients.</t>
        <t>When the broker registers itself once at an AS and reuses this single registration for every downstream client it serves, the AS cannot distinguish between those downstream clients.
As a consequence, the consent the user grants for one downstream client is silently reused for any other downstream client that integrates the same broker.
A malicious downstream client integrated with the same broker can therefore obtain access to the user's protected resources without the user ever consenting to that client.</t>
        <section anchor="SharedConsentDescription">
          <name>Attack Description</name>
          <t>The descriptions here follow <xref target="research.rub"/>, where additional details of the attack are laid out.
Shared consent attacks require at least two downstream clients (one honest, one malicious) to be integrated with the same (honest) broker, and that broker to register itself as a client at the (honest) upstream AS.</t>
          <t>In the following, let <tt>H-Client</tt> and <tt>M-Client</tt> be downstream clients (honest and attacker-controlled, respectively) integrated with broker <tt>B</tt>.
As a non-normative example, the description assumes that <tt>B</tt> exposes a standards-compliant OAuth interface to its downstream clients.</t>
          <t>The broker <tt>B</tt> registers itself once at the AS and obtains a client identifier <tt>cid_B@AS</tt> together with a redirection URI bound to the broker.
The broker uses this registration whenever it issues an authorization request triggered from any of its downstream clients to the AS.
At <tt>B</tt>, <tt>H-Client</tt> is registered as <tt>cid_HC@B</tt> and <tt>M-Client</tt> is registered as <tt>cid_MC@B</tt>, each with its own redirection URI bound to the respective downstream client.
From the point of view of the AS, every flow that <tt>B</tt> initiates appears to come from the same client <tt>cid_B@AS</tt>, regardless of which downstream client actually triggered the flow.</t>
          <t>The broker acts invisibly to the user during the flow.
It renders no consent screen of its own and no other user-visible UI that would indicate that an additional entity is involved between the downstream client and the AS.</t>
          <t>The exact form of the authorization response (<tt>authz res</tt>) returned to a downstream client is out of scope for this attack.</t>
          <t>The flaw is illustrated in the following figure:</t>
          <artwork><![CDATA[
  User        H-Client      M-Client          B                      AS
    |============================ Phase 1 ============================|
    |             |    authz req: cid_HC@B    |                       |
    |             |-------------------------->|                       |
    |             |             |             |  authz req: cid_B@AS  |
    |             |             |             |---------------------->|
    |             |          consent: cid_B@AS|                       |
    |<--------------------------------------------------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |         authz res         |                       |
    |             |<--------------------------|                       |
    |============================ Phase 2 ============================|
    |             |           authz req: cid_MC@B                     |
    |             |             |------------>|                       |
    |             |             |             |  authz req: cid_B@AS  |
    |             |             |             |---------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |             |  authz res  |                       |
    |             |             |<------------|                       |
]]></artwork>
          <t>In the second phase of the figure, no consent prompt is rendered for <tt>M-Client</tt>.
The AS only sees the broker's client identifier <tt>cid_B@AS</tt>, for which the user has already granted consent in the first phase, so the AS silently issues a token to <tt>B</tt> (cf. <tt>prompt=none</tt>, as defined in Section 3.1.2.1 of <xref target="OpenID.Core"/>) and <tt>B</tt> returns an <tt>authz res</tt> to <tt>M-Client</tt>.</t>
        </section>
        <section anchor="SharedConsentCountermeasures">
          <name>Countermeasures</name>
          <t>The root cause of shared consent attacks is that the AS cannot tell on whose behalf the broker is acting and therefore cannot ask the user for consent on a per-downstream-client basis.
Brokers <bcp14>MUST</bcp14> employ at least one of the following two countermeasures.</t>
          <section anchor="SharedConsentRegistration">
            <name>Per-Client Registration at the Upstream Authorization Server</name>
            <t>Each downstream client <bcp14>MUST</bcp14> be registered as a separate client at the AS.
When initiating an authorization flow to the AS on behalf of a downstream client, the broker <bcp14>MUST</bcp14> use the registration of exactly that downstream client.</t>
            <t>The specific mechanism by which these per-client registrations are established is out of scope of this document.
In practice, they are commonly established as follows:
The broker provides each downstream client with a redirection URI that is hosted by the broker, and instructs the downstream client to register at every AS it expects to use, using the broker-provided redirection URI.
The downstream client performs this registration at each AS, obtaining a distinct client identifier (e.g., <tt>cid_HC@AS</tt> for <tt>H-Client</tt> and <tt>cid_MC@AS</tt> for <tt>M-Client</tt>) and any associated credentials (such as a client secret).
The downstream client then hands these credentials over to the broker, which gives the broker full control to act on behalf of the downstream client at the AS.</t>
            <t>This countermeasure ensures that the AS recognizes each downstream client as a distinct client, and that any consent prompt rendered by the AS is bound to a single downstream client.
Consent granted for one downstream client is therefore not reusable for another.</t>
            <artwork><![CDATA[
  User        H-Client      M-Client          B                      AS
    |             |             |             |                       |
    |             |    authz req: cid_HC@B    |                       |
    |             |-------------------------->|                       |
    |             |             |             | authz req: cid_HC@AS  |
    |             |             |             |---------------------->|
    |             |         consent: cid_HC@AS|                       |
    |<--------------------------------------------------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |         authz res         |                       |
    |             |<--------------------------|                       |
    |             |             |             |                       |
    |             |           authz req: cid_MC@B                     |
    |             |             |------------>|                       |
    |             |             |             | authz req: cid_MC@AS  |
    |             |             |             |---------------------->|
    |             |         consent: cid_MC@AS|                       |
    |<--------------------------------------------------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |             |  authz res  |                       |
    |             |             |<------------|                       |
]]></artwork>
          </section>
          <section anchor="SharedConsentBrokerConsent">
            <name>Broker-Side Consent Screen</name>
            <t>Unless consent for the downstream client has already been granted, the broker <bcp14>MUST</bcp14> present an explicit consent screen to the user that identifies the downstream client, before initiating its own authorization request to the AS on behalf of the downstream client.
The broker <bcp14>MUST NOT</bcp14> skip this consent screen based on a previously granted consent for a different downstream client.
The broker <bcp14>MAY</bcp14> remember the user's consent decision per downstream client (e.g., per <tt>client_id</tt> of the downstream client), but <bcp14>MUST NOT</bcp14> remember it across different downstream clients.</t>
            <t>This countermeasure prevents the broker from silently reusing a consent granted for one downstream client when initiating a request to the AS on behalf of another downstream client, even when the AS cannot distinguish between the broker's downstream clients.</t>
            <artwork><![CDATA[
  User        H-Client      M-Client          B                      AS
    |             |             |             |                       |
    |             |    authz req: cid_HC@B    |                       |
    |             |-------------------------->|                       |
    |            consent: cid_HC@B            |                       |
    |<--------------------------------------->|                       |
    |             |             |             |  authz req: cid_B@AS  |
    |             |             |             |---------------------->|
    |             |          consent: cid_B@AS|                       |
    |<--------------------------------------------------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |         authz res         |                       |
    |             |<--------------------------|                       |
    |             |             |             |                       |
    |             |           authz req: cid_MC@B                     |
    |             |             |------------>|                       |
    |            consent: cid_MC@B            |                       |
    |<--------------------------------------->|                       |
    |             |             |             |  authz req: cid_B@AS  |
    |             |             |             |---------------------->|
    |             |             |             |       authz res       |
    |             |             |             |<----------------------|
    |             |             |  authz res  |                       |
    |             |             |<------------|                       |
]]></artwork>
          </section>
          <section anchor="SharedConsentDiscussion">
            <name>Discussion of the Countermeasures</name>
            <t>The two countermeasures have different practical trade-offs.</t>
            <t>The Per-Client Registration countermeasure (<xref target="SharedConsentRegistration"/>) confronts the user with at most one consent screen per authorization flow, which improves the user experience.
However, it requires each downstream client to be registered at every AS the broker integrates with, which can be a substantial effort given that a single broker is typically integrated with many ASes.</t>
            <t>The Broker-Side Consent Screen countermeasure (<xref target="SharedConsentBrokerConsent"/>) spares downstream clients this registration effort, since the broker's single registration at each AS is reused for all downstream clients.
However, the user may be confronted with up to two consent screens in a single authorization flow: one rendered by the broker identifying the downstream client, and one rendered by the AS identifying the broker.</t>
            <t>Both countermeasures are implemented entirely on the client side (the downstream client and the broker) and require no software or protocol changes to any AS.</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>
        <reference anchor="RFC8252">
          <front>
            <title>OAuth 2.0 for Native Apps</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser. This specification details the security and usability reasons why this is the case and how native apps and authorization servers can implement this best practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="212"/>
          <seriesInfo name="RFC" value="8252"/>
          <seriesInfo name="DOI" value="10.17487/RFC8252"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OAUTH-7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based 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>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="12" month="January" year="2026"/>
            <abstract>
              <t>   This specification updates the requirements for audience values in
   OAuth 2.0 Client Assertion Authentication and Assertion-based
   Authorization Grants to address a security vulnerability identified
   in the previous requirements for those audience values in multiple
   OAuth 2.0 specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-05"/>
        </reference>
        <reference anchor="CDFS">
          <front>
            <title>Cross-Device Flows: Security Best Current Practice</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="23" month="January" year="2026"/>
            <abstract>
              <t>   This document describes threats against cross-device flows along with
   practical mitigations, protocol selection guidance, and a summary of
   formal analysis results identified as relevant to the security of
   cross-device flows.  It serves as a security guide to system
   designers, architects, product managers, security specialists, fraud
   analysts and engineers implementing cross-device flows.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-cross-device-security-15"/>
        </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="OpenID.Federation" target="https://openid.net/specs/openid-federation-1_0-final.html">
          <front>
            <title>OpenID Federation 1.0</title>
            <author initials="R." surname="Hedberg" fullname="Roland Hedberg">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="A." surname="Solberg" fullname="Andreas Åkre Solberg">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="G." surname="De Marco" fullname="Giuseppe De Marco">
              <organization/>
            </author>
            <author initials="V." surname="Dzhuvinov" fullname="Vladimir Dzhuvinov">
              <organization/>
            </author>
            <date year="2026" month="February"/>
          </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/usenixsecurity25-luo-kaixuan.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="research.cuhk2" target="https://doi.ieeecomputersociety.org/10.1109/SP63933.2026.00128">
          <front>
            <title>Demystifying the (In)Security of OAuth-based Account Linking in Connector Ecosystems</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>
            <date year="2026" month="May"/>
          </front>
          <refcontent>2026 IEEE Symposium on Security and Privacy (SP)</refcontent>
        </reference>
        <reference anchor="research.rub" target="https://ieeexplore.ieee.org/document/11023371">
          <front>
            <title>"Only as Strong as the Weakest Link": On the Security of Brokered Single Sign-On on the Web</title>
            <author initials="T." surname="Innocenti" fullname="Tommaso Innocenti">
              <organization/>
            </author>
            <author initials="L." surname="Jannett" fullname="Louis Jannett">
              <organization/>
            </author>
            <author initials="C." surname="Mainka" fullname="Christian Mainka">
              <organization/>
            </author>
            <author initials="V." surname="Mladenov" fullname="Vladislav Mladenov">
              <organization/>
            </author>
            <author initials="E." surname="Kirda" fullname="Engin Kirda">
              <organization/>
            </author>
            <date year="2025" month="May"/>
          </front>
        </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="arXiv.1704.08539" target="https://arxiv.org/abs/1704.08539/">
          <front>
            <title>The Web SSO Standard OpenID Connect: In-Depth Formal Security Analysis and Security Guidelines</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="2017" month="April"/>
          </front>
          <refcontent>arXiv:1704.08539</refcontent>
        </reference>
        <reference anchor="arXiv.1508.04324v2" target="https://arxiv.org/abs/1508.04324v2/">
          <front>
            <title>On the security of modern Single Sign-On Protocols: Second-Order Vulnerabilities in OpenID Connect</title>
            <author initials="V." surname="Mladenov" fullname="Vladislav Mladenov">
              <organization/>
            </author>
            <author initials="C." surname="Mainka" fullname="Christian Mainka">
              <organization/>
            </author>
            <author initials="J." surname="Schwenk" fullname="Jörg Schwenk">
              <organization/>
            </author>
            <date year="2016" month="January"/>
          </front>
          <refcontent>arXiv:1508.04324v2</refcontent>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="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="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>
        <reference anchor="RFC7636">
          <front>
            <title>Proof Key for Code Exchange by OAuth Public Clients</title>
            <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7636"/>
          <seriesInfo name="DOI" value="10.17487/RFC7636"/>
        </reference>
      </references>
    </references>
    <?line 804?>

<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,
Louis Jannett,
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>-02</t>
      <ul spacing="normal">
        <li>
          <t>Simplify core attack description for Audience Injection attacks by moving "why token EP" discussion to a new section</t>
        </li>
        <li>
          <t>Include concrete examples for how an attacker may misuse client assertions obtained via Audience Injection attacks</t>
        </li>
        <li>
          <t>Add implementation considerations for Audience Injection countermeasures, including recommendations for how to deal with ASs that only accept their token endpoint as audience value</t>
        </li>
        <li>
          <t>Add new section on Shared Consent in Brokered OAuth, describing the attack, its preconditions, and countermeasures</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Clarify that shared redirection URI is not a precondition of COAT</t>
        </li>
        <li>
          <t>Clarify that COAT countermeasure uniquely identifies each configured AS instance</t>
        </li>
        <li>
          <t>Clarify Session Fixation countermeasures and relationship to CSRF and PKCE</t>
        </li>
        <li>
          <t>Use terminology that is less ambiguous and better aligned with standard OAuth language</t>
        </li>
        <li>
          <t>Editorial clarifications and fixes, and reference updates</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>WG adoption, no changes from previous individual draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
36wxKeNFHf0/DJ0c/SjHAAA=

-->

</rfc>
