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

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

<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 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-tool OAuth Account Takeover</name>
        <t>It is increasingly common and observed that a single OAuth client supports multiple tools, and each of which 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 resource at a resource server (RS).</t>
        <t>Multiple OAuth connections can be linked to some form of user's identity based on these common deployment scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>Platform Integrations: The OAuth connections made with different tools are linked to a platform's user account or session (e.g., represented by a platform's user identifier or a short-lived anonymous session). This is common where a user authorizes a platform (e.g., agentic AI service) to orchestrate multiple tools, of which some of them together with their OAuth providers can be contributed by the public.</t>
          </li>
          <li>
            <t>Multi-tenant OAuth-as-a-Service (OaaS): In cases when the OAuth client is 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 a platform using this OAuth-as-a-Service is becoming a tenant. A tenant can usually choose some off-the-shelf tools using (partially-)completed OAuth providers, if not adding their own 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, tool, and tenant) is in use during an authorization flow, an attacker can exploit this to mount the Cross-tool OAuth Account Takeover (COAT) attacks (see <xref target="research.cuhk"/> and <xref target="research.cuhk3"/>). The COAT attacker uses a malicious tool to steal a victim's authorization code issued by an honest OAuth provider of an honest tool, and apply 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 platform identity and the victim's tool account. The impact is equivalent to an account takeover: the attacker can operate the honest tool using the victim's tool account (hijacked either under the same platform, 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 combination is considered "honest" (H-Tool using H-AuthProvider with H-AS) and one is operated by the attacker (A-Tool 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 client issues redirection URIs which do not depend on all variables in the connection context (e.g., auth provider, tool, tenant), 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 tool and <tt>https://client.com/attack-cb</tt> for the attacker's. 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-Tool (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 such 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 state 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 state to the client.</t>
            </li>
            <li>
              <t>Since the client still assumes that the code was issued by A-Tool, as stored in the user's session (with state 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-tool 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, tool, tenant) of a centralized client rather than limited to confusion between two distinct authorization servers.</t>
          <t>Variants:</t>
          <ul spacing="normal">
            <li>
              <t>COAT under the OaaS context: the attack above can be launched with a malicious tenant (1) simply using a shared off-the-shelf tool that comes with pre-built OAuth providers (with client registration included), if so allowed; or (2) adding a custom tool with an OAuth provider targeting an honest AS used by another tenant's tool.</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-tool 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-tool OAuth Request Forgery (CORF). This results in a compromised OAuth connection between the victim's platform identity and the attacker's tool account. 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-tool 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 tools 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 unique connection context identifier, which always includes the unique tool identifier. Additionally,</t>
          <ul spacing="normal">
            <li>
              <t>a client allowing each tool to use multiple OAuth providers, of which one AS may get 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 cross-tenant client <bcp14>MUST</bcp14> also include the tenant identifier, if the tool 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 URI endpoint, clients <bcp14>MUST</bcp14> also check that the context identifier from the URI matches with the one in the distinct redirection URI. If there is a mismatch, the client <bcp14>MUST</bcp14> abort the flow.</t>
          <t>Existing mix-up countermeasures <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 individual AS endpoints but instead replaced with an abstract issuer identifier representing the endpoints, and</t>
            </li>
            <li>
              <t>the issuer identifier is used either in place of the connection context identifier 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"/>). Clients using such resolution solely to populate an OAuth provider defined with individual AS endpoints and lack the connection context identifier defense 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., a platform'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 cross-user-agent OAuth deployments, where an authenticated native app with its backend acting as a confidential OAuth client, the client opens a tool linking URL in an external user agent (a browser) 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 connection 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 of 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, tool, 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 CSRF (<xref section="4.7" sectionFormat="of" target="RFC9700"/>). However, CSRF defenses, including PKCE <xref target="RFC7636"/>, cannot mitigate this new attack, since the entire OAuth flow including the authorization request and the access token request are completed by the same victim user. The impact of the new attack is also more severe from 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 connection.</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> has encoded a newly fixable 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 connection.</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 attack differs from the above only by obtaining and using 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>Defending against the Cross-user OAuth Session Fixation attack requires ensuring that an OAuth connection flow initiated by one user <bcp14>MUST</bcp14> only be completed by the same user.</t>
          <t>The most straightforward countermeasure is to re-authenticate the user instead of trying to fixate a session if usability condition permits. It is also understandable that the session fixation vector cannot be eliminated due to application needs. For instance, the client's user session and the OAuth client responsible for making OAuth connections are handled by separate entities (e.g., separate services hosted and isolated under different origins, 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> bind any <em>newly fixated session</em> (conveyed via state or the preauthorization URL during an OAuth flow to establish the OAuth connection) with the <em>existing session</em> (maintained at the user agent) which initiates the OAuth flow, before proceeding with the access token request. Depending on the specific current settings:</t>
          <ul spacing="normal">
            <li>
              <t>When the endpoint with existing user session and the redirection endpoint are hosted in the same origin and same user agent, the client <bcp14>MUST</bcp14> validate the binding between the newly fixated session and the existing session before the access token request.</t>
            </li>
            <li>
              <t>In case the redirection endpoint is hosted elsewhere (a different origin or user agent), the countermeasure requires:  </t>
              <ul spacing="normal">
                <li>
                  <t>an implementation change to co-locate the endpoint with user session and the redirection endpoint in the same origin and user agent (see above), or</t>
                </li>
                <li>
                  <t>at the current redirection endpoint, further redirect, using HTTP Location or native app redirection as detailed in <xref section="7" sectionFormat="of" target="RFC8252"/>, back to (the starting origin and/or user agent) where the existing session is available. 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"/>). The client <bcp14>MUST</bcp14> validate the binding between the sessions before the access token request.</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>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <date day="21" month="February" year="2025"/>
            <abstract>
              <t>   This specification defines the use of a JSON Web Token (JWT) Bearer
   Token as a means for requesting an OAuth 2.0 access token as well as
   for client authentication.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-00"/>
        </reference>
        <reference anchor="CDFS">
          <front>
            <title>Cross-Device Flows: Security Best Current Practice</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>SPIRL</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="5" month="September" year="2025"/>
            <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-12"/>
        </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="MCP-Spec" target="https://modelcontextprotocol.io/specification/2025-06-18">
          <front>
            <title>Model Context Protocol (MCP) Specification</title>
            <author initials="" surname="Anthropic" fullname="Anthropic PBC">
              <organization/>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
        <reference anchor="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
        <reference anchor="RFC7009">
          <front>
            <title>OAuth 2.0 Token Revocation</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="S. Dronia" initials="S." surname="Dronia"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document proposes an additional endpoint for OAuth authorization servers, which allows clients to notify the authorization server that a previously obtained refresh or access token is no longer needed. This allows the authorization server to clean up security credentials. A revocation request will invalidate the actual token and, if applicable, other tokens based on the same authorization grant.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7009"/>
          <seriesInfo name="DOI" value="10.17487/RFC7009"/>
        </reference>
        <reference anchor="RFC8628">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </reference>
        <reference anchor="RFC7522">
          <front>
            <title>Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a Security Assertion Markup Language (SAML) 2.0 Bearer Assertion as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7522"/>
          <seriesInfo name="DOI" value="10.17487/RFC7522"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="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 605?>

<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>-02</t>
      <ul spacing="normal">
        <li>
          <t>Rewrote Mix-up related sections</t>
        </li>
        <li>
          <t>Added section on Session Fixation attack</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated temporary title</t>
        </li>
        <li>
          <t>Added introductory paragraphs, replaced placeholders</t>
        </li>
        <li>
          <t>Clarified issuer does not uniquely identify client config</t>
        </li>
        <li>
          <t>Cleaned up acknowledgement list</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V9W3PcRpLuO35FHSp2TDq6watu3PV6WqRkUdZtRcoaj8Nr
VTeq2TDRQA8upGiF5rfsPzhv52mfdv7Y5q0KVQCaouwTJ85OTMhsoFCoyszK
/PJShfF4HNVpnZlDtfF2lejaVKou1KtJUy/UXryjTs2sKdP6Wj0yVa2OmrI0
ea1el3pWpzOzEenptDSXn3/66PVGNIMG50V5faims1VUmTI1VV4cqr2DnSgp
ZrlewjCSUs/rcWrq+bjQ0M+4kj7GdbFKZ9W4oReNd3Yi/qs6VPfuHzwcwb93
d0bq/t29Xfp3j/7dH6mH96FtVDXTZVpVaZHX1yt4z8njsydRuioPVV02Vb23
s/NwZy/Km+XUlIcRdnwYzYq8MnnVVNTIRDDP/UiXRsN87dQ2oquivDgvi2YF
V9+ZqcLZF2X6m67hZUCqoi5mRbYRXZhraJocRmqs7KTwb5rmHv41RRrPhMYr
oXF0afIGBqPUbV6iFE9vA/9c6jSDP+kFf0aSxkV5jjd0OVvAjUVdr6rD7W1s
h5fSSxPbZtt4YXtaFleV2aYetvHJ87ReNFOc/+OjOl1uM7uuGlPWJjM3sgwf
z5Bhtfdq7ibmbuO0+JIOv6RtvKiXQJ5IE92QBzAapeZNlrHcbZylS/XuH/9J
XW3QTaCCzoXEh+ptDuQpK5TmYq5O66auz3VZU0vDlMaZ2NH8GcYRN3k6rmzL
ODHUeFY0eY2r4DtTLnV+PTCW1wamtlRPi6oy13n6O4ezol7ihfTyh0b0vU4/
NDpXz5tiaDRnC6OOFmluKtMZ2dMiP1ffwz/+yC64N5DJeNYsLmKTNPHiIhyL
92BvNJOkyNNKPWny86HRnOplBbfUGxgOirGaLEHZzLQ/BE1dxHNo9+eK28ez
YhmO4e3pJIryAohSw5wOoyjN5+0vBZru7dnTMaqZaQpK4mR8HPf0VzmfSQPU
WUodHT85XdN0VgKrxom5hGXfyvHuHr5pZfKT4/ioKOnFsIStIMP/xirN4fUv
Y5j5RbpsSp6pUkyul7oOb0j7Z7F6VOokM9dB82fFIg9uSPMXMdwCDgeNX6Sz
hTaZeuTflAfgWmLUC5OYFCYWPPYIVFzRuyvPHcXqRVHCYoLJBk8dLZrZRece
aWp1bGYGNbfa29nbp+u1Ls8NaBqraAogYJrEuam3q5WZVXJhDDo+N7Ma/lua
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

-->

</rfc>
