<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-security-topics-update-01" category="bcp" consensus="true" submissionType="IETF" updates="6749, 6750, 7521, 7522, 7523, 9700" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-01"/>
    <seriesInfo name="bcp" value="240"/>
    <author fullname="Tim Würtele">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>tim.wuertele@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Pedram Hosseyni">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>pedram.hosseyni@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Kaixuan Luo">
      <organization>The Chinese University of Hong Kong</organization>
      <address>
        <postal>
          <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="March" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>security</keyword>
    <keyword>oauth2</keyword>
    <keyword>best current practice</keyword>
    <abstract>
      <?line 222?>

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

<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.  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 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>
      </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.cuhk3"/>). 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 NOT</bcp14> share OAuth providers with completed client registrations across toolkits and tenants belonging to different owners.</t>
          <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"/> and <xref target="research.cuhk3"/>.</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>
    <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="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://www.blackhat.com/us-24/briefings/schedule/#one-hack-to-rule-them-all-pervasive-account-takeovers-in-integration-platforms-for-workflow-automation-virtual-voice-assistant-iot-38-llm-services-38994">
          <front>
            <title>One Hack to Rule Them All: Pervasive Account Takeovers in Integration Platforms for Workflow Automation, Virtual Voice Assistant, IoT, &amp; LLM Services</title>
            <author initials="K." surname="Luo" fullname="Kaixuan Luo">
              <organization/>
            </author>
            <author initials="X." surname="Wang" fullname="Xianbo Wang">
              <organization/>
            </author>
            <author initials="A." surname="Fung" fullname="Adonis Fung">
              <organization/>
            </author>
            <author initials="J." surname="Lecomte" fullname="Julien Lecomte">
              <organization/>
            </author>
            <author initials="W. C." surname="Lau" fullname="Wing Cheong Lau">
              <organization/>
            </author>
            <date year="2024" month="August"/>
          </front>
          <refcontent>Black Hat USA 2024</refcontent>
        </reference>
        <reference anchor="research.cuhk3" target="https://www.blackhat.com/us-25/briefings/schedule/index.html#back-to-the-future-hacking-and-securing-connection-based-oauth-architectures-in-agentic-ai-and-integration-platforms-44686">
          <front>
            <title>Back to the Future: Hacking and Securing Connection-based OAuth Architectures in Agentic AI and 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="A." surname="Fung" fullname="Adonis Fung">
              <organization/>
            </author>
            <author initials="Y." surname="Bi" fullname="Yanxiang Bi">
              <organization/>
            </author>
            <author initials="W. C." surname="Lau" fullname="Wing Cheong Lau">
              <organization/>
            </author>
            <date year="2025" month="August"/>
          </front>
          <refcontent>Black Hat USA 2025</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="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="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 599?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgments</name>
      <t>We would like to thank
<cref anchor="acksAddNames" source="Tim W.">TODO add names, sort by last name.</cref>
Daniel Fett,
Wing Cheong Lau,
Julien Lecomte,
Aaron Parecki,
Guido Schmitz, and
Xianbo Wang</t>
      <t>for their valuable feedback and contributions to this document.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>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:
H4sIAAAAAAAAA9V9W3PcRpbmO35FLhXTJh1V4FU37njcJZKyKOs2ImV1t8Nj
oQpZLJgooBoXUrRC/Vv2H+zbPs3T9h/bc8sbgKJoe2Njp6NDZgGJROY5J8/5
ziUT4/E4arIm14dq490qTRpdq6ZUrydts1B78Y4607O2ypob9UTXjTpqq0oX
jXpTJbMmm+mNKJlOK3315aeP3mxEM2hwUVY3h2o6W0W1rjJdF+Wh2jvYidJy
ViRLGEZaJfNmnOlmPi4T6GdcSx/jplxls3rc0ovGO7sR/1UfqgcPDx6P4N/7
OyP18P7eLv27R//uj9Tjhzs7UVS302VW11lZNDcreM/pyfnTKFtVh6qp2rrZ
29l5vLMXFe1yqqvDCDs+jGZlUeuibmtqpCOY536UVDqB+ZqpbUTXZXV5UZXt
Cq6+11OFsy+r7NekgZcBqcqmnJX5RnSpb6BpehipsTKTwr9pmnv41xRpPBMa
r4TG0ZUuWhiMUnd5iVI8vQ38c5lkOfxJL/gzkjQuqwu8kVSzBdxYNM2qPtze
xnZ4KbvSsWm2jRe2p1V5Xett6mEbn7zImkU7xfmfHDXZcpvZdd3qqtG5vpVl
+HiODGu8V3M3MXcbZ+Vv6XD7jrISL5olkCZKiGZIfxiJUvM2z1nmNs6zpXr/
z/+kV27QTaBAUgh5D9W7AkhT1SjJ5VydNW3TXCRVQy01UxlnYUb9ZxhH3BbZ
uDYt41RT41nZFg2ugO90tUyKm4GxvNEwraV6Vta1vimy3zmcFfUSL6SXPzSi
75PsY5sU6kVbDo3mfKHV0SIrdK07I3tWFhfqe/jHH9kl9wbyGM/axWWs0zZe
XFKLSl9Qj+FzdoT4kmRgfJO0LLJaPW2Li6HxnSXLGm6ptzBAFGo1WYLqmSX+
oBLqIp5Duz/X3D6elcvw/e/OJlFUlECmBmZ5GEVZMXe/FOi9d+fPxqh0phmo
jNPxcdyT0Go+kwbjnfvwzNHx07M1TWcVMG+c6itQAk6yd/Gp1ytdnB7HR2VF
L4YFbUQb/jdWWQGvfxXDzC+zZVvxTJVicr1KmvCGtH8eqydVkub6Jmj+vFwU
wQ1p/jKGW8DzoPHLbLZIdK6e+DflAbiWavVSpzqDiQWPPQGFV/buynNHsXpZ
VrC8YLLBU0eLdnbZuUd6Wx3rmUY9rvZ29vbpepNUFxr0jlE7JRAwS+NCN9v1
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

-->

</rfc>
