<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wuertele-oauth-security-topics-update-02" category="bcp" consensus="true" submissionType="IETF" updates="6749, 6750, 7521, 7522, 7523, 9700" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="Updates to OAuth 2.0 Security BCP">Updates to OAuth 2.0 Security Best Current Practice</title>
    <seriesInfo name="Internet-Draft" value="draft-wuertele-oauth-security-topics-update-02"/>
    <seriesInfo name="bcp" value="240"/>
    <author fullname="Tim Würtele">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>tim.wuertele@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Pedram Hosseyni">
      <organization>University of Stuttgart</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>pedram.hosseyni@sec.uni-stuttgart.de</email>
      </address>
    </author>
    <author fullname="Kaixuan Luo">
      <organization>The Chinese University of Hong Kong</organization>
      <address>
        <postal>
          <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="September" day="29"/>
    <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-wuertele-oauth-security-topics-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol  mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/SECtim/draft-wuertele-oauth-security-topics-update"/>.</t>
    </note>
  </front>
  <middle>
    <?line 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:
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
jikue5VWhitxST+r02IGJnr8EnRAUV5QRQIuuycFuLDldSf9zRvh+ymsfskq
b+yac3oukPiQ+n7FkRMwtQkDP1TvO0VVuoolPPZ+1NaqQbv7f/3ur1ny9N/e
s2Q64er24yoUh7u5d+/emx/++uxs8h79rk4pbCgvQ7xwr5F0CdaA8cjHs+l7
l4z19RqOdugxHmjwWKuYY3jbc7slKe1Q3pXYouNBHoHJxdMXfKBdLQt7q1Ij
oktQlFRLaCthwzwUlkWwyhuMqbRaimscJ6KpeYFW0OWM45fgrQpoY53m1MMp
1zaQzpDlM0X5owPCBJOyPqGSWzQofb+EqiPPeqpEqCTawGoKx1sa4wK3edE4
gV6UtVgLtpBtlvutR2sLW3rowgV6pD7/uS2+WBgtLjU66NbEAXfXi+y289S+
ZR+9Mr/gya/fIAP+xLP+JU2+cbL8JyB4bb75if7z8/tIqfd/smP/BZDeN/Sm
f9qf/NPeE/h/K4TwoxXDONqP1TvrRYVaVeX6kpI/Lv/hFXBaa5AuYf3jSW8g
ayHpbC+DuZO2UoPrJClW2G8mlT+dd7pE7GDBPJKZGQnoYGbLFmuXWCMHAWwc
paxo1Bzzj/3ktD8BaVBRLKNVDWuYTtOSbO96RXdbdlsN+Ee43eqqODqIlZSs
+sBkBW5liWgXLBrtjHSiz7U2aCspfwxos7bxRSDGOKQ8+CpjPmK5BkVLCl/U
qmY9gmzh2jF47yZuFvDovKXwqKGWR8wykR6bqb4bq3b/ttMFaSblGXYLLltv
jN3oysP/rIV44ycqkGSNAtnkDCwNAI8LwS3aW21dG5Y/wriwItUs23dJ8Vy/
HD2651eRM36V7d02hOfIQ64XY13zgdOP7RuI7p1g3yaZAAqh2HQSJbcAYRDI
77l7HefF7oTqFVyudWJsAPoL/cCbYh3tAXZreup6WEO+JHa0TD+Mm1UwqfWJ
D29K7FqR0ymOL5f/NVXXkVrvqXNV4i1ddOueU9m7H2iw0WJduxK2LF2mNUed
BsZ0VeCWcVA5s+GtQ1ie+gNCW5AMsOFKqa8Vz7R1pjCuZifiu29cfOoCsrrJ
ZwsL6AJ3nP2tzd0tLNVCp5nNv2bvKxkIJknKo1jacosVljo0adZ1zitZjgNh
dAt1aHHOVVXYAup/xhWwubdlg0/axpvozTz8Xuifj/GQEImYFlBh5JlR8ECq
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

-->

</rfc>
