<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-v2-1-17" category="std" consensus="true" obsoletes="6749, 6750" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>The OAuth 2.1 Authorization Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-v2-1-17"/>
    <author initials="D." surname="Hardt" fullname="Dick Hardt">
      <organization>Hellō</organization>
      <address>
        <email>dick.hardt@gmail.com</email>
      </address>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki" role="editor">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
        <uri>https://aaronparecki.com</uri>
      </address>
    </author>
    <author initials="T." surname="Lodderstedt" fullname="Torsten Lodderstedt">
      <organization>SPRIND</organization>
      <address>
        <email>torsten@lodderstedt.net</email>
      </address>
    </author>
    <date year="2026" month="October" day="31"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 175?>

<t>The OAuth 2.1 authorization framework enables an
application to obtain limited access to a protected resource, either on
behalf of a resource owner by orchestrating an approval interaction
between the resource owner and an authorization service, or by allowing the
application to obtain access on its own behalf.  This
specification replaces and obsoletes the OAuth 2.0 Authorization
Framework described in RFC 6749 and the Bearer Token Usage in RFC 6750.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    OAuth Working Group mailing list (oauth@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/oauth-wg/oauth-v2-1"/>.</t>
    </note>
  </front>
  <middle>
    <?line 185?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth introduces an authorization layer to the client-server authentication model
by separating the role of the client from that of the resource
owner. In OAuth, the client requests access to resources controlled
by the resource owner and hosted by the resource server.
Instead of using the resource owner's credentials to access protected
resources, the client obtains an access token -- a credential representing
a specific set of access attributes such as scope and lifetime. Access
tokens are issued to clients by an authorization server with the approval
of the resource owner. The client uses the access token to access the
protected resources hosted by the resource server.</t>
      <t>In the older, more limited client-server authentication model, the client
requests an access-restricted resource (protected resource) on the
server by authenticating to the server using the resource owner's
credentials.  In order to provide applications access to
restricted resources, the resource owner shares their credentials with
the application.  This creates several problems and limitations:</t>
      <ul spacing="normal">
        <li>
          <t>Applications are required to store the resource
owner's credentials for future use, typically a password in
cleartext.</t>
        </li>
        <li>
          <t>Servers are required to support password authentication, despite
the security weaknesses inherent in passwords.</t>
        </li>
        <li>
          <t>Applications gain overly broad access to the resource
owner's protected resources, leaving resource owners without any
ability to restrict duration or access to a limited subset of
resources.</t>
        </li>
        <li>
          <t>Resource owners often reuse passwords with other unrelated
services, despite best security practices. This password reuse means
a vulnerability or exposure in one service may have security
implications in completely unrelated services.</t>
        </li>
        <li>
          <t>Resource owners cannot revoke access to an individual application
without revoking access to all third parties, and must do so by
changing their password.</t>
        </li>
        <li>
          <t>Compromise of any application results in compromise of
the end-user's password and all of the data protected by that
password.</t>
        </li>
      </ul>
      <t>For example, using OAuth, an end-user (resource owner) can grant a financial management
service (client) access to their sensitive transaction history stored at
a banking service (resource server) without sharing their username and
password with the financial management service. Instead, the end-user authenticates
directly with their financial institution's server (authorization server),
which issues the financial management service delegation-specific credentials
(access token).</t>
      <t>This separation of concerns also provides the ability to use more advanced
user authentication methods such as multi-factor authentication and even
passwordless authentication, without any modification to the applications.
With all user authentication logic handled by the authorization server,
applications don't need to be concerned with the specifics of implementing
any particular authentication mechanism. This provides the ability for the
authorization server to manage the user authentication policies and
even change them in the future without coordinating the changes with applications.</t>
      <t>The authorization layer can also simplify how a resource server determines
whether a request is authorized. Traditionally, after authenticating the client,
each resource server would evaluate policies to determine whether the client is authorized
on each API call. In a distributed system, the policies need to be synchronized
to all the resource servers, or the resource server must call a central policy
server to process each request. In OAuth, evaluation of the policies is performed
only when a new access token is created by the authorization server. If the
authorized access is represented in the access token, the resource server no longer
needs to evaluate the policies, and only needs to validate the access token.
This simplification applies when the application is acting on behalf of a resource
owner, or on behalf of itself.</t>
      <t>OAuth is an authorization protocol, not an authentication protocol, as OAuth does not define the necessary components to achieve user authentication.
An authentication protocol is necessary if the goal is to authenticate users. An example is OpenID Connect <xref target="OpenID.Connect"/>, which builds on OAuth to provide the security
characteristics and necessary components required of an authentication protocol.</t>
      <t>The
access token represents the authorization granted to the client. It is a common
practice for the client to present the access token to a proprietary API that
returns a user identifier for the resource owner, and then to use the result of
the API as a proxy for authenticating the user. This practice is not part of
the OAuth standard or security considerations, and may not have been considered
by the resource owner. Implementers should carefully consult the documentation
of the resource server before adopting this practice.</t>
      <t>This specification is designed for use with HTTP <xref target="HTTP"/>.  The
use of OAuth over any protocol other than HTTP is out of scope.</t>
      <t>Since the publication of the OAuth 2.0 Authorization Framework <xref target="RFC6749"/>
in October 2012, it has been updated by OAuth 2.0 for Native Apps <xref target="RFC8252"/>,
OAuth Security Best Current Practice <xref target="RFC9700"/>,
and OAuth 2.0 for Browser-Based Applications <xref target="RFC10017"/>.
The OAuth 2.0 Authorization Framework: Bearer Token Usage <xref target="RFC6750"/>
has also been updated by <xref target="RFC9700"/>. This
Standards Track specification consolidates the information in all of these
documents and removes features that have been found to be insecure
in <xref target="RFC9700"/>.</t>
      <section anchor="roles">
        <name>Roles</name>
        <t>OAuth defines four roles:</t>
        <dl>
          <dt>"resource owner":</dt>
          <dd>
            <t>An entity capable of granting access to a protected resource.
When the resource owner is a person, it is referred to as an
end-user. This is sometimes abbreviated as "RO".</t>
          </dd>
          <dt>"resource server":</dt>
          <dd>
            <t>The server hosting the protected resources, capable of accepting
and responding to protected resource requests using access tokens.
The resource server is often accessible via an API.
This is sometimes abbreviated as "RS".</t>
          </dd>
          <dt>"client":</dt>
          <dd>
            <t>An application making protected resource requests on behalf of the
resource owner and with its authorization.  The term "client" does
not imply any particular implementation characteristics (e.g.,
whether the application executes on a server, a desktop, or other
devices).</t>
          </dd>
          <dt>"authorization server":</dt>
          <dd>
            <t>The server issuing access tokens to the client after successfully
authenticating the resource owner and obtaining authorization.
This is sometimes abbreviated as "AS".</t>
          </dd>
        </dl>
        <t>Most of this specification defines the interaction between the client
and the authorization server, as well as between the client and the resource server.</t>
        <t>The interaction between the authorization server and resource server
is beyond the scope of this specification; however, several extensions have
been defined to provide an option for interoperability between resource
servers and authorization servers.  The authorization server
may be the same server as the resource server or a separate entity.
A single authorization server may issue access tokens accepted by
multiple resource servers.</t>
        <t>The interaction between the resource owner and authorization server
(e.g., how the end-user authenticates themselves at the authorization server)
is also out of scope for this specification, with some exceptions, such as
security considerations around prompting the end-user for consent.</t>
        <t>When the resource owner is the end-user, the user will interact with
the client. When the client is a web-based application, the user will
interact with the client through a user agent (as described in <xref section="3.5" sectionFormat="of" target="HTTP"/>).
When the client is a native application, the user will interact with
the client directly through the operating system. See <xref target="client-types"/>
for further details.</t>
      </section>
      <section anchor="protocol-flow">
        <name>Protocol Flow</name>
        <figure anchor="fig-protocol-flow">
          <name>Abstract Protocol Flow</name>
          <artwork><![CDATA[
                                              +---------------+
                                              |   Resource    |
                                              |     Owner     |
                                              +---------------+
                                                      ^
                                                      | (2)
     +--------+                               +-------v-------+
     |        |--(1)- Authorization Request ->|               |
     |        |                               |               |
     |        |<-(3)-- Authorization Grant ---|               |
     |        |                               | Authorization |
     |        |--(4)-- Authorization Grant -->|     Server    |
     | Client |                               |               |
     |        |<-(5)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(6)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(7)--- Protected Resource ---|               |
     +--------+                               +---------------+
]]></artwork>
        </figure>
        <t>The abstract OAuth 2.1 flow illustrated in <xref target="fig-protocol-flow"/> describes the
interaction between the four roles and includes the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client requests authorization from the resource owner via the
authorization server, which acts as an intermediary between the client
and the resource owner.</t>
          </li>
          <li>
            <t>The resource owner approves the request.</t>
          </li>
          <li>
            <t>The client receives an authorization grant, which is a
credential representing the resource owner's authorization,
expressed using one of the authorization grant types defined in this
specification or using an extension grant type.  The
authorization grant type depends on the method used by the
client to request authorization and the types supported by the
authorization server.</t>
          </li>
          <li>
            <t>The client requests an access token by authenticating with the
authorization server and presenting the authorization grant.</t>
          </li>
          <li>
            <t>The authorization server authenticates the client and validates
the authorization grant, and if valid, issues an access token.</t>
          </li>
          <li>
            <t>The client requests the protected resource from the resource
server by presenting the access token.</t>
          </li>
          <li>
            <t>The resource server validates the access token, and if valid,
serves the request.</t>
          </li>
        </ol>
        <t>The authorization code grant, which uses the authorization server as
an intermediary to obtain the resource owner's authorization, is
illustrated in <xref target="fig-authorization-code-flow"/> in <xref target="authorization-code-grant"/>.</t>
        <t>Some extensions begin with a direct request from the client to the
authorization server before any interaction with the resource owner,
such as Pushed Authorization Requests <xref target="RFC9126"/> and the Device
Authorization Grant <xref target="RFC8628"/>. See <xref target="extensions"/> for these and other
extensions.</t>
      </section>
      <section anchor="authorization-grant">
        <name>Authorization Grant</name>
        <t>An authorization grant represents the resource
owner's authorization (to access its protected resources) used by the
client to obtain an access token.  This specification defines three
grant types -- authorization code, refresh token,
and client credentials -- as well as an extensibility
mechanism for defining additional types.</t>
        <section anchor="authorization-code">
          <name>Authorization Code</name>
          <t>An authorization code is a temporary credential used to obtain an access token.
Instead of the client
requesting authorization directly from the resource owner, the client
directs the resource owner to an authorization server (via its
user agent), which in turn directs the
resource owner back to the client with the authorization code.
The client can then exchange the authorization code for an access token.</t>
          <t>Before directing the resource owner back to the client with the
authorization code, the authorization server authenticates the
resource owner, and may request the resource owner's consent or otherwise
inform them of the client's request. Because the resource owner
only authenticates with the authorization server, the resource
owner's credentials are never shared with the client, and the client
does not need to have knowledge of any additional authentication steps
such as multi-factor authentication or delegated accounts.</t>
          <t>The authorization code provides a few important security benefits,
such as the ability to authenticate the client, as well as the
transmission of the access token directly to the client without
passing it through the resource owner's user agent and potentially
exposing it to others, including the resource owner.</t>
        </section>
        <section anchor="refresh-token">
          <name>Refresh Token</name>
          <t>Refresh tokens are credentials used to obtain access tokens.  Refresh
tokens may be issued to the client by the authorization server and are
used to obtain a new access token when the current access token
becomes invalid or expires, or to obtain additional access tokens
with identical or narrower scope (access tokens may have a shorter
lifetime and fewer privileges than authorized by the resource
owner).  Issuing a refresh token is optional and at the discretion of the
authorization server, which may issue one based on properties of the client,
properties of the request, policies within the authorization server, or
any other criteria.  If the authorization server issues a refresh
token, it is included when issuing an access token (i.e., step (2) in
<xref target="fig-refresh-token-flow"/>). The lifetime of the refresh token is also
at the discretion of the authorization server.</t>
          <t>A refresh token is a string representing the authorization granted to
the client by the resource owner.  The string is considered opaque to
the client. The refresh token may be an identifier used to retrieve the
authorization information or may encode this information into the
string itself. Unlike access tokens, refresh tokens are
intended for use only with authorization servers and are never sent
to resource servers.</t>
          <figure anchor="fig-refresh-token-flow">
            <name>Refreshing an Expired Access Token</name>
            <artwork><![CDATA[
+--------+                                           +---------------+
|        |--(1)------- Authorization Grant --------->|               |
|        |                                           |               |
|        |<-(2)----------- Access Token -------------|               |
|        |               & Refresh Token             |               |
|        |                                           |               |
|        |                            +----------+   |               |
|        |--(3)---- Access Token ---->|          |   |               |
|        |                            |          |   |               |
|        |<-(4)- Protected Resource --| Resource |   | Authorization |
| Client |                            |  Server  |   |     Server    |
|        |--(5)---- Access Token ---->|          |   |               |
|        |                            |          |   |               |
|        |<-(6)- Invalid Token Error -|          |   |               |
|        |                            +----------+   |               |
|        |                                           |               |
|        |--(7)----------- Refresh Token ----------->|               |
|        |                                           |               |
|        |<-(8)----------- Access Token -------------|               |
+--------+           & Optional Refresh Token        +---------------+
]]></artwork>
          </figure>
          <t>The flow illustrated in <xref target="fig-refresh-token-flow"/> includes the following steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>The client requests an access token by authenticating with the
authorization server and presenting a previously-obtained authorization grant.</t>
            </li>
            <li>
              <t>The authorization server authenticates the client and validates
the authorization grant, and if valid, issues an access token
and optionally a refresh token.</t>
            </li>
            <li>
              <t>The client makes a protected resource request to the resource
server by presenting the access token.</t>
            </li>
            <li>
              <t>The resource server validates the access token, and if valid,
serves the request.</t>
            </li>
            <li>
              <t>Steps (3) and (4) repeat until the access token expires.  If the
client knows the access token has expired, it skips to step (7);
otherwise, it makes another protected resource request.</t>
            </li>
            <li>
              <t>Since the access token is invalid, the resource server returns
an invalid token error.</t>
            </li>
            <li>
              <t>The client requests a new access token by presenting the refresh token
and providing client authentication if it has been issued credentials. The
client authentication requirements are based on the client type
and on the authorization server policies.</t>
            </li>
            <li>
              <t>The authorization server authenticates the client and validates
the refresh token, and if valid, issues a new access token (and,
optionally, a new refresh token).</t>
            </li>
          </ol>
          <t>If the refresh token expires, the client's only recourse is to initiate
a new flow to obtain a new access token and refresh token. The authorization server
might choose to use dynamic lifetimes (e.g., the refresh token expiry
is extended as long as the refresh token is used at least once every 7 days),
or the authorization server might revoke the refresh token before
its scheduled expiration date for any reason, such as if the user
revokes the application's access. This means the client already has
to handle the case of a refresh token expiring at an arbitrary time.</t>
        </section>
        <section anchor="client-credentials">
          <name>Client Credentials</name>
          <t>The client credentials or other forms of client authentication
(e.g., a private key used to sign a JWT, as described in <xref target="RFC7523"/>
and its update <xref target="I-D.ietf-oauth-rfc7523bis"/>)
can be used as an authorization grant when the authorization scope is
limited to the protected resources under the control of the client,
or to protected resources previously arranged with the authorization
server.  Client credentials are used when the client is requesting
access to protected resources based on an authorization previously
arranged with the authorization server.</t>
        </section>
      </section>
      <section anchor="access-tokens">
        <name>Access Token</name>
        <t>Access tokens are credentials used to access protected resources.  An
access token is a string representing an authorization issued to the
client.</t>
        <t>The string is considered opaque to the client, even if it has
a structure. The client MUST NOT expect to be able to parse the access
token value. The authorization server is not required to use a
consistent access token encoding or format other than what is
expected by the resource server.</t>
        <t>The access granted by the resource owner to the client is represented by
the access token created by the authorization server. Access tokens are
short-lived to limit the impact of a leaked access token. The expiration
of the access token is set by the authorization server.</t>
        <t>Depending on the authorization server implementation,
the token string may be used by the resource server to retrieve the authorization information,
or the token may self-contain the authorization information in a verifiable
manner (e.g., a token string consisting of a signed data payload). One example
of a token retrieval mechanism is Token Introspection <xref target="RFC7662"/>, in which the
RS calls an endpoint on the AS to validate the token presented by the client.
One example of a structured token format is the JWT Profile for Access Tokens <xref target="RFC9068"/>,
a method of encoding and signing access token data as a JSON Web Token <xref target="RFC7519"/>.</t>
        <t>Additional authentication credentials, which are beyond
the scope of this specification, may be required in order for the
client to use an access token. Such tokens are typically referred to as sender-constrained
access tokens; examples include DPoP <xref target="RFC9449"/> and
Mutual TLS Certificate-Bound Access Tokens <xref target="RFC8705"/>.</t>
        <t>The access token provides an abstraction layer, replacing different
authorization constructs (e.g., username and password) with a single
token understood by the resource server.  This abstraction enables
issuing access tokens more restrictive than the authorization grant
used to obtain them, as well as removing the resource server's need
to understand a wide range of authentication methods.</t>
        <t>Access tokens can have different formats, structures, and methods of
utilization (e.g., cryptographic properties) based on the resource
server security requirements.  Access token attributes and the
methods used to access protected resources may be extended beyond
what is described in this specification.</t>
        <t>Access tokens (as well as any confidential access token
attributes) MUST be kept confidential in transit and storage, and
only shared among the authorization server, the resource servers for which the
access token is valid, and the client to which the access token is
issued.</t>
        <t>The authorization server MUST ensure that access tokens cannot be
generated, modified, or guessed to produce valid access tokens by
unauthorized parties.</t>
        <section anchor="access-token-scope">
          <name>Access Token Scope</name>
          <t>Access tokens are intended to be issued to clients with fewer privileges
than those held by the user granting the access. This is known as a limited "scope"
access token. The authorization server and resource server can use this
scope mechanism to limit what types of resources or level of access a particular client
can have.</t>
          <t>For example, a client may only need "read" access to a user's
resources, but doesn't need to update resources, so the client can request
the read-only scope defined by the authorization server and obtain
an access token that cannot be used to update resources. This requires
coordination between the authorization server, resource server, and client. The
authorization server provides the client the ability to request specific
scopes, and associates those scopes with the access token issued to the client.
The resource server is then responsible for enforcing scopes when presented
with a limited-scope access token.</t>
          <t>OAuth does not define any scope values; instead, scopes are defined by the
authorization server or by extensions or profiles of OAuth. One such extension
that defines scopes is <xref target="OpenID.Connect"/>, which defines a set of scopes that provide
granular access to a user's profile information. It is recommended to avoid
defining custom scopes that conflict with scopes from known extensions.</t>
          <t>To request a limited-scope access token, the client uses the <tt>scope</tt>
request parameter at the authorization or token endpoints, depending on
the grant type used. In turn, the authorization server uses the <tt>scope</tt>
response parameter to inform the client of the scope of the access token issued.</t>
          <t>The value of the scope parameter is expressed as a space-delimited
set of case-sensitive strings.  The strings are defined by the
authorization server.  If the value contains multiple space-delimited
strings, their order does not matter, and each string adds an
additional access range to the requested scope.</t>
          <sourcecode type="abnf"><![CDATA[
    scope       = scope-token *( SP scope-token )
    scope-token = 1*( %x21 / %x23-5B / %x5D-7E )
]]></sourcecode>
          <t>The authorization server MAY fully or partially ignore the scope
requested by the client, based on the authorization server policy or
the resource owner's instructions.  If the issued access token scope
is different from the one requested by the client, the authorization
server MUST include the <tt>scope</tt> response parameter in the token response
(<xref target="token-response"/>) to inform the client of the actual scope granted.</t>
          <t>If the client omits the scope parameter when requesting
authorization, the authorization server MUST either process the
request using a predefined default value or fail the request
indicating an invalid scope.  The authorization server SHOULD
document its scope requirements and default value (if defined).</t>
          <t>Whether the scope of a grant is limited to what the resource owner
approved in the corresponding authorization request, or also includes
scopes the resource owner previously authorized for the same client,
is determined by authorization server policy.</t>
        </section>
        <section anchor="bearer-tokens">
          <name>Bearer Tokens</name>
          <t>A bearer token is a security token with the property that any party
in possession of the token (a "bearer") can use the token in any way
that any other party in possession of it can.  Using a bearer token
does not require a bearer to prove possession of cryptographic key material
(proof-of-possession).</t>
          <t>Bearer tokens may be enhanced with proof-of-possession specifications such
as DPoP <xref target="RFC9449"/> and mTLS <xref target="RFC8705"/> to provide proof-of-possession characteristics.</t>
          <t>To protect against access token disclosure, the
communication between the client and the resource server
MUST utilize confidentiality and integrity protection as described in
<xref target="communication-security"/>.</t>
          <t>There is no requirement on the particular structure or format of a bearer token. If a bearer token is a reference to authorization information, such references MUST be infeasible for an attacker to guess, for example, by using a sufficiently long cryptographically random string. If a bearer token uses an encoding mechanism to contain the authorization information in the token itself, the access token MUST use integrity protection sufficient to prevent the token from being modified. One example of an encoding and signing mechanism for access tokens is described in the JSON Web Token Profile for Access Tokens <xref target="RFC9068"/>.</t>
        </section>
        <section anchor="sender-constrained-tokens">
          <name>Sender-Constrained Access Tokens</name>
          <t>A sender-constrained access token binds the use of an
access token to a specific sender.  This sender is obliged to
demonstrate knowledge of a certain secret as a prerequisite for the
acceptance of that access token at the recipient (e.g., a resource server).</t>
          <t>Authorization and resource servers SHOULD use mechanisms for
sender-constraining access tokens, such as OAuth 2.0 Demonstrating Proof of Possession (DPoP) <xref target="RFC9449"/>
or Mutual TLS for OAuth 2.0 <xref target="RFC8705"/>.
See <xref section="4.10.1" sectionFormat="of" target="RFC9700"/> for guidance on preventing misuse of stolen and leaked access tokens.</t>
          <t>It is RECOMMENDED to use end-to-end TLS between the client and the
resource server. If TLS traffic needs to be terminated at an intermediary,
refer to <xref section="4.13" sectionFormat="of" target="RFC9700"/> for further security advice.</t>
        </section>
      </section>
      <section anchor="communication-security">
        <name>Communication Security</name>
        <t>Implementations MUST use a mechanism to provide communication
authentication, integrity, and confidentiality, such as
Transport Layer Security (TLS) <xref target="TLS"/>,
to protect the exchange of cleartext credentials and tokens
either in the content or in header fields
from eavesdropping, which enables replay
(e.g., see <xref target="client-secret"/>, <xref target="authorization_codes"/>, <xref target="token-endpoint"/>, and <xref target="bearer-tokens"/>).</t>
        <t>All OAuth protocol URLs (URLs exposed by the AS, RS, and client) MUST use the <tt>https</tt> scheme
except for loopback interface redirect URIs,
which MAY use the <tt>http</tt> scheme.
When using <tt>https</tt>, TLS certificates MUST be checked
according to <xref section="4.3.4" sectionFormat="of" target="HTTP"/>.
At the time of this writing,
TLS version 1.3 <xref target="TLS"/> is the most recent version.</t>
        <t>Implementations MAY also support additional transport-layer security
mechanisms that meet their security requirements.</t>
        <t>The identification of the TLS versions and algorithms
is outside the scope of this specification.
Refer to <xref target="BCP195"/> for up-to-date recommendations on
transport layer security, and to the relevant specifications
for certificate validation and other security considerations.</t>
      </section>
      <section anchor="http-redirections">
        <name>HTTP Redirections</name>
        <t>This specification makes extensive use of HTTP redirections, in which
the client or the authorization server directs the resource owner's
user agent to another destination.  While the examples in this
specification show the use of the 302 (Found) status code, any other
method available via the user agent to accomplish this redirection,
with the exception of the 307 (Temporary Redirect) status code, is allowed and is considered to be an
implementation detail. See <xref target="redirect_307"/> for details.</t>
      </section>
      <section anchor="interoperability">
        <name>Interoperability</name>
        <t>OAuth 2.1 provides a rich authorization framework with well-defined
security properties.</t>
        <t>This specification leaves a few required components partially or fully
undefined (e.g., client registration, authorization server capabilities,
endpoint discovery).  Some of these behaviors are defined in optional
extensions that implementations can choose to use, such as:</t>
        <ul spacing="normal">
          <li>
            <t><xref target="RFC8414"/>: Authorization Server Metadata, defining an endpoint clients can use to look up the information needed to interact with a particular OAuth server</t>
          </li>
          <li>
            <t><xref target="RFC7591"/>: Dynamic Client Registration, providing a mechanism for programmatically registering clients with an authorization server</t>
          </li>
          <li>
            <t><xref target="RFC7592"/>: Dynamic Client Management, providing a mechanism for updating dynamically registered client information</t>
          </li>
          <li>
            <t><xref target="RFC7662"/>: Token Introspection, defining a mechanism for resource servers to obtain information about access tokens</t>
          </li>
        </ul>
        <t>Please refer to <xref target="extensions"/> for a list of extensions known at
the time of publication.</t>
        <section anchor="value-sizes">
          <name>Value Sizes</name>
          <t>This specification does not define a maximum length for the
<tt>client_id</tt>, authorization codes, access tokens, refresh tokens, or
most other protocol parameters, as the length of these values depends
on implementation choices made by the party that issues them.  In
practice, implementations impose their own limits, and a value that
exceeds the limit of a receiving implementation will cause the request
to fail.</t>
          <t>Implementations MUST NOT assume that a value they receive fits within
a particular length.  The party that issues a value SHOULD document
its length, and SHOULD take into account the limits of the components
that will carry it.  In particular, values returned in a redirect,
such as the authorization code and state, are carried in a URI query string, and
HTTP implementations commonly limit the length of the request-line and
of individual header fields (<xref section="3" sectionFormat="of" target="RFC9112"/> and
<xref section="5.4" sectionFormat="of" target="HTTP"/>).  Implementations SHOULD support parameter
values long enough that requests remain within the 8000-octet
request-line length recommended by <xref section="3" sectionFormat="of" target="RFC9112"/>.  Resource
servers in particular should not impose small limits on the length of
access tokens, as tokens in a structured format, such as those defined
by <xref target="RFC9068"/>, routinely exceed one kilobyte.</t>
        </section>
      </section>
      <section anchor="compatibility-with-oauth-2-0">
        <name>Compatibility with OAuth 2.0</name>
        <t>OAuth 2.1 is compatible with OAuth 2.0 with the extensions and restrictions
from known best current practices applied. Specifically, features not specified
in OAuth 2.0 core, such as PKCE, are required in OAuth 2.1. Additionally,
some features available in OAuth 2.0, such as the Implicit or Resource Owner Password Credentials
grant types, are not specified in OAuth 2.1. Furthermore, some behaviors
allowed in OAuth 2.0 are restricted in OAuth 2.1, such as the strict string
matching of redirect URIs required by OAuth 2.1.</t>
        <t>An authorization server can support both OAuth 2.0 and OAuth 2.1 clients.
Which rules apply to a given client is determined by the authorization
server's configuration for that client, for example as part of client
registration (<xref target="client-registration"/>). This allows an authorization server
to move existing clients to OAuth 2.1 one at a time. This specification does
not define a way for a client or authorization server to signal which
version it implements.</t>
        <t>See <xref target="oauth-2-0-differences"/> for more details on the differences from OAuth 2.0.</t>
      </section>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
        </t>
        <t>This specification uses the Augmented Backus-Naur Form (ABNF)
notation of <xref target="RFC5234"/>.  Additionally, the rule URI-reference is
included from "Uniform Resource Identifier (URI): Generic Syntax"
<xref target="RFC3986"/>.</t>
        <t>Certain security-related terms are to be understood in the sense
defined in <xref target="RFC4949"/>.  These terms include, but are not limited to,
"attack", "authentication", "authorization", "certificate",
"confidentiality", "credential", "encryption", "identity", "sign",
"signature", "trust", "validate", and "verify".</t>
        <t>The term "content" is to be interpreted as described in <xref section="6.4" sectionFormat="of" target="HTTP"/>.</t>
        <t>The term "user agent" is to be interpreted as described in <xref section="3.5" sectionFormat="of" target="HTTP"/>.</t>
        <t>Unless otherwise noted, all the protocol parameter names and values
are case sensitive.</t>
      </section>
    </section>
    <section anchor="client-registration">
      <name>Client Registration</name>
      <t>Before initiating the protocol, the client must have established an identifier (<xref target="client-identifier"/>) at the
authorization server. The means through which the client identifier is established
with the authorization server are beyond the scope of this
specification, but typically involve either the client developer manually registering
the client at the authorization server's website (after creating an account and agreeing
to the service's Terms of Service) or the use of Dynamic Client Registration <xref target="RFC7591"/>.
Extensions may also define other programmatic methods of establishing client registration.</t>
      <t>Client registration does not require a direct interaction between the
client and the authorization server.  When supported by the
authorization server, registration can rely on other means for
establishing trust and obtaining the required client properties
(e.g., redirect URI, client type).  For example, registration can
be accomplished using a self-issued or third-party-issued assertion,
or by the authorization server performing client discovery using a
trusted channel.</t>
      <t>Client registration MUST include:</t>
      <ul spacing="normal">
        <li>
          <t>the client type as described in <xref target="client-types"/>,</t>
        </li>
        <li>
          <t>client details needed by the grant type in use,
such as redirect URIs as described in <xref target="redirection-endpoint"/>, and</t>
        </li>
        <li>
          <t>any other information required by the authorization server
(e.g., application name, website, description, logo image, the
acceptance of legal terms).</t>
        </li>
      </ul>
      <t>Dynamic Client Registration <xref target="RFC7591"/> defines a common general data model
for clients that may be used even with manual client registration.</t>
      <section anchor="client-types">
        <name>Client Types</name>
        <t>OAuth 2.1 defines two client types based on their ability to authenticate securely
with the authorization server.</t>
        <dl>
          <dt>"confidential":</dt>
          <dd>
            <t>Clients that have credentials with the AS are designated as "confidential clients".</t>
          </dd>
          <dt>"public":</dt>
          <dd>
            <t>Clients without credentials are called "public clients".</t>
          </dd>
        </dl>
        <t>Any client with credentials MUST take precautions to prevent leakage and abuse of its credentials.</t>
        <t>Client authentication allows an authorization server to ensure it is interacting with a certain client
(identified by its <tt>client_id</tt>) in an OAuth flow. The authorization server might make policy decisions
about things such as whether to prompt the user for consent on every authorization or only the first time,
based on the confidence that the authorization server is actually communicating with the legitimate client.</t>
        <t>Whether and how an authorization server validates the identity of a client or the party
providing/operating this client is out of scope for this specification.
Authorization servers SHOULD consider the level of confidence in a client's identity
before allowing that client to perform actions that carry elevated risk, such as:</t>
        <ul spacing="normal">
          <li>
            <t>accessing sensitive resources or performing sensitive operations,</t>
          </li>
          <li>
            <t>using a non-interactive grant type such as the client credentials grant, or</t>
          </li>
          <li>
            <t>skipping the user consent prompt on subsequent authorizations.</t>
          </li>
        </ul>
        <t>There is no requirement that an authorization server support a particular client type.</t>
        <t>A single <tt>client_id</tt> SHOULD NOT be treated as more than one type of client.</t>
        <t>This specification has been designed around the following client profiles:</t>
        <dl>
          <dt>"web application":</dt>
          <dd>
            <t>A web application is a client running on a web
server. Resource owners access the client via an HTML user
interface rendered in a user agent on the device used by the
resource owner.  The client credentials as well as any access
tokens issued to the client are stored on the web server and are
not exposed to or accessible by the resource owner.</t>
          </dd>
          <dt>"browser-based application":</dt>
          <dd>
            <t>A browser-based application is a client in which the
client code is downloaded from a web server and executes within a
user agent (e.g., a web browser) on the device used by the resource
owner.  Protocol data and credentials are easily accessible (and
often visible) to the resource owner. If such applications wish to use
client credentials, it is recommended to use the
backend for frontend pattern (<xref target="RFC10017"/>). Since such applications
reside within the user agent, they can make seamless use of the
user agent capabilities when requesting authorization.</t>
          </dd>
          <dt>"native application":</dt>
          <dd>
            <t>A native application is a client installed and executed on
the device used by the resource owner.  Protocol data and
credentials are accessible to the resource owner.  It is assumed
that any client authentication credentials included in the
application can be extracted. Dynamically
issued access tokens and refresh tokens can
receive an acceptable level of protection.  On some platforms, these credentials
are protected from other applications residing on the same
device. If such applications wish to use
client credentials, it is recommended to use the
backend for frontend pattern or to issue the credentials at runtime
using Dynamic Client Registration <xref target="RFC7591"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="client-identifier">
        <name>Client Identifier</name>
        <t>Every client is identified in the context of an authorization server
by a client identifier -- a unique string representing the registration
information provided by the client. While the authorization server typically
issues the client identifier itself, it may also serve clients whose client identifier
was created by a party other than the authorization server. The client identifier is not a
secret; it is exposed to the resource owner and MUST NOT be used
alone for client authentication.  The client identifier is unique in the
context of an authorization server.</t>
        <t>The client identifier is an opaque string whose length is left undefined by this
specification, as described in <xref target="value-sizes"/>.</t>
        <t>If the authorization server supports clients with client identifiers issued by
parties other than the authorization server, the authorization server SHOULD
take precautions to avoid clients impersonating resource owners as described
in <xref target="client-impersonating-resource-owner"/>.</t>
      </section>
      <section anchor="redirection-endpoint">
        <name>Client Redirection Endpoint</name>
        <t>The client redirection endpoint (also referred to as the "redirect endpoint")
is the URI of the client that the authorization server redirects the user
agent back to after completing its interaction with the resource owner.</t>
        <t>The authorization server redirects the user agent to one of the
client's redirection endpoints previously established with the
authorization server during the client registration process.</t>
        <t>The redirect URI MUST be an absolute URI as defined by
<xref section="4.3" sectionFormat="of" target="RFC3986"/>.  The redirect URI MAY include a
query string component (<xref target="query-string-serialization"/>), which MUST be retained when adding
additional query parameters. The query string component MUST NOT include
any parameters defined for use in the authorization response.
The redirect URI MUST NOT include a fragment component.</t>
        <section anchor="registration-requirements">
          <name>Registration Requirements</name>
          <t>Authorization servers MUST require clients to register their complete
redirect URI (including the path component). Authorization servers
MUST reject authorization requests that specify a redirect URI that
doesn't exactly match one that was registered, with an exception for
loopback interface redirect URIs, where an exact match is required except for the
port URI component; see <xref target="authorization-request"/> for details.</t>
          <t>The authorization server MAY allow the client to register multiple
redirect URIs.</t>
          <t>Registration may happen out of band, such as a manual step of configuring
the client information at the authorization server, or may happen at
runtime, such as in the initial POST in Pushed Authorization Requests <xref target="RFC9126"/>.</t>
          <t>For private-use URI scheme-based redirect URIs, authorization servers
SHOULD enforce the requirement in <xref target="private-use-uri-scheme"/> that clients use
schemes that are based on reverse domain names.  At a minimum, any
private-use URI scheme that doesn't contain a period character (<tt>.</tt>)
SHOULD be rejected.</t>
          <t>In addition to providing collision resistance,
this requirement can help to prove ownership in the event of a dispute where two apps
claim the same private-use URI scheme (where one app is acting
maliciously).  For example, if two apps claim <tt>com.example.app</tt>,
the owner of <tt>example.com</tt> could petition the app store operator to
remove the counterfeit app.  Such a petition is harder to prove if a
generic URI scheme is used.</t>
          <t>Clients MUST NOT expose URLs that forward the user's browser to
arbitrary URIs obtained from a query parameter ("open redirector"), as
described in <xref target="open-redirectors"/>. Open redirectors can enable
exfiltration of authorization codes and access tokens.</t>
          <t>The client MAY use the <tt>state</tt> request parameter to achieve per-request
customization if needed rather than varying the redirect URI per request.</t>
          <t>Without requiring registration of redirect URIs, attackers can
use the authorization endpoint as an open redirector as
described in <xref target="open-redirectors"/>.</t>
        </section>
        <section anchor="multiple-redirect-uris">
          <name>Multiple Redirect URIs</name>
          <t>If multiple redirect URIs have been registered for a client, the client MUST
include a redirect URI with the authorization request using the
<tt>redirect_uri</tt> request parameter (<xref target="authorization-request"/>).
If only a single redirect URI has been registered for a client,
the <tt>redirect_uri</tt> request parameter is optional.</t>
        </section>
        <section anchor="preventing-csrf-attacks">
          <name>Preventing CSRF Attacks</name>
          <t>Clients MUST prevent Cross-Site Request Forgery (CSRF) attacks. In this
context, CSRF refers to requests to the redirection endpoint that do
not originate at the authorization server, but at a malicious third party
(see <xref section="4.4.1.8" sectionFormat="of" target="RFC6819"/> for details). Clients that have
ensured that the authorization server supports the <tt>code_challenge</tt> parameter MAY
rely on the CSRF protection provided by that mechanism. In OpenID Connect flows,
validating the <tt>nonce</tt> parameter provides CSRF protection. Otherwise, one-time-use
CSRF tokens carried in the <tt>state</tt> parameter that are securely
bound to the user agent MUST be used for CSRF protection (see
<xref target="csrf_countermeasures"/>).</t>
        </section>
        <section anchor="preventing-mix-up-attacks">
          <name>Preventing Mix-Up Attacks</name>
          <t>When an OAuth client can only interact with one authorization server, a mix-up defense is not required. In scenarios where an OAuth client interacts with two or more authorization servers, however, clients MUST prevent mix-up attacks.
In order to prevent mix-up attacks, clients MUST only process redirect responses from the issuer to which they sent the respective request, and from the same user agent in which the authorization request was initiated.</t>
          <t>See <xref target="mix-up"/> for a detailed description of two different defenses against mix-up attacks.</t>
        </section>
        <section anchor="invalid-endpoint">
          <name>Invalid Endpoint</name>
          <t>If an authorization request fails validation due to a missing,
invalid, or mismatching redirect URI, the authorization server
SHOULD inform the resource owner of the error and MUST NOT
automatically redirect the user agent to the invalid redirect URI.</t>
        </section>
        <section anchor="endpoint-content">
          <name>Endpoint Content</name>
          <t>The redirection request to the client's endpoint typically results in
an HTML document response, processed by the user agent.  If the HTML
response is served directly as the result of the redirection request,
any script included in the HTML document will execute with full
access to the redirect URI and the artifacts (e.g., authorization code)
it contains. Additionally, the request URL containing the authorization code
may be sent in the Referer header field (<xref section="10.1.3" sectionFormat="of" target="HTTP"/>) to any embedded images, stylesheets,
and other elements loaded in the page.</t>
          <t>The client SHOULD NOT include any third-party scripts (e.g., third-party
analytics, social plug-ins, ad networks) in the redirect URI
endpoint response.  Instead, it SHOULD extract the artifacts from
the URI and redirect the user agent again to another endpoint without
exposing the artifacts (in the URI or elsewhere).  If third-party
scripts are included, the client MUST ensure that its own scripts
(used to extract and remove the credentials from the URI) will
execute first.</t>
        </section>
      </section>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>The authorization server MUST only rely on client authentication if the
process of issuance/registration and distribution of the underlying
credentials ensures their confidentiality.</t>
        <t>For confidential clients, the authorization server MAY accept any
form of client authentication meeting its security requirements
(e.g., client secret, public/private key pair).</t>
        <t>It is RECOMMENDED to use asymmetric (public-key-based) methods for
client authentication, such as mTLS <xref target="RFC8705"/> or signed JWTs
("Private Key JWT") in accordance with <xref target="RFC7521"/>, <xref target="RFC7523"/>,
and their update <xref target="I-D.ietf-oauth-rfc7523bis"/>
(defined in <xref target="OpenID.Connect"/> as the client authentication method <tt>private_key_jwt</tt>).
When such methods for client authentication are used, authorization
servers do not need to store sensitive symmetric keys, which makes these
methods more robust against a number of attacks and enables clients
to manage their own keys and key rotation.</t>
        <t>When using JWT-based client authentication, clients and authorization servers
MUST follow the updated guidance around <tt>aud</tt> values in <xref target="I-D.ietf-oauth-rfc7523bis"/>.</t>
        <t>When client authentication is not possible, the authorization server
SHOULD employ other means to validate the client's identity -- for
example, by requiring the registration of the client redirect URI
or enlisting the resource owner to confirm identity.  A valid
redirect URI is not sufficient to verify the client's identity
when asking for resource owner authorization but can be used to
prevent delivering credentials to a counterfeit client after
obtaining resource owner authorization.</t>
        <t>The client MUST NOT use more than one authentication method in each
request to prevent a conflict over which authentication mechanism is
authoritative for the request.</t>
        <t>The authorization server MUST consider the security implications of
interacting with unauthenticated clients and take measures to limit
the potential exposure of tokens issued to such clients
(e.g., by limiting the lifetime of refresh tokens).</t>
        <t>The privileges an authorization server associates with a certain
client identity MUST depend on the assessment of the overall process
for client identification and client credential lifecycle management.
See <xref target="security-client-authentication"/> for additional details.</t>
        <section anchor="client-secret">
          <name>Client Secret</name>
          <t>To support confidential clients in possession of a client secret,
the authorization server MUST support the client including the
client credentials in the request content using the following
parameters:</t>
          <dl>
            <dt>"client_id":</dt>
            <dd>
              <t>REQUIRED.  The client identifier issued to the client during
the registration process described in <xref target="client-identifier"/>.</t>
            </dd>
            <dt>"client_secret":</dt>
            <dd>
              <t>REQUIRED.  The client secret.</t>
            </dd>
          </dl>
          <t>The parameters can only be transmitted in the request content and MUST NOT
be included in the target URI.</t>
          <t>This is also known as <tt>client_secret_post</tt> as defined in <xref section="2" sectionFormat="of" target="RFC7591"/>.</t>
          <t>For example, a request to refresh an access token (<xref target="refreshing-an-access-token"/>) using
the content parameters:</t>
          <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA\
&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw
]]></sourcecode>
          <t>The authorization server MAY support the HTTP Basic
authentication scheme for authenticating clients that were issued a
client secret.</t>
          <t>When using the HTTP Basic authentication scheme as defined in <xref section="11" sectionFormat="of" target="HTTP"/>
to authenticate with the authorization server, the client identifier is encoded using the
<tt>application/x-www-form-urlencoded</tt> encoding algorithm per
<xref target="application-x-www-form-urlencoded"/>, and the encoded value is used as the username; the client
secret is encoded using the same algorithm and used as the
password.</t>
          <t>This is also known as <tt>client_secret_basic</tt> as defined in <xref section="2" sectionFormat="of" target="RFC7591"/>.</t>
          <t>For example, the same request to refresh an access token using the HTTP
Basic authentication scheme:</t>
          <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
]]></sourcecode>
          <t>Note: This method of initially form-encoding the client identifier and secret,
and then using the encoded values as the HTTP Basic authentication username
and password, has led to many interoperability problems in the past. Some
implementations have missed the encoding step, or decided to only encode
certain characters, or ignored the encoding requirement when validating the
credentials, leading to clients having to special-case how they present the
credentials to individual authorization servers. Including the credentials
in the request content avoids the encoding issues and leads to more
interoperable implementations.</t>
          <t>Since the client secret authentication method involves a password, the
authorization server MUST protect any endpoint utilizing it against
brute-force attacks.</t>
        </section>
        <section anchor="other-authentication-methods">
          <name>Other Authentication Methods</name>
          <t>The authorization server MAY support any suitable authentication
scheme matching its security requirements.  When using other
authentication methods, the authorization server MUST define a
mapping between the client identifier (registration record) and
the authentication scheme.</t>
          <t>Some additional authentication methods such as mTLS <xref target="RFC8705"/>
and Private Key JWT (<xref target="RFC7523"/>, <xref target="I-D.ietf-oauth-rfc7523bis"/>)
are defined in the
"<eref target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#token-endpoint-auth-method">OAuth Token Endpoint Authentication Methods</eref>" registry,
and may be useful as generic client authentication methods beyond
the specific use of protecting the token endpoint.</t>
        </section>
      </section>
      <section anchor="unregistered-clients">
        <name>Unregistered Clients</name>
        <t>This specification does not require that clients be registered with
the authorization server.
However, the use of unregistered clients is beyond the scope of this
specification and requires additional security analysis and review of
its interoperability impact.</t>
      </section>
    </section>
    <section anchor="protocol-endpoints">
      <name>Protocol Endpoints</name>
      <t>The authorization process utilizes two authorization server endpoints
(HTTP resources):</t>
      <ul spacing="normal">
        <li>
          <t>Authorization endpoint - used by the client to obtain
authorization from the resource owner via user agent redirection.</t>
        </li>
        <li>
          <t>Token endpoint - used by the client to exchange an authorization
grant for an access token, typically with client authentication.</t>
        </li>
      </ul>
      <t>As well as one client endpoint:</t>
      <ul spacing="normal">
        <li>
          <t>Redirection endpoint - used by the authorization server to return
responses containing authorization credentials to the client via
the resource owner's user agent.</t>
        </li>
      </ul>
      <t>Not every authorization grant type utilizes both endpoints.
Extension grant types MAY define additional endpoints as needed.</t>
      <section anchor="authorization-endpoint">
        <name>Authorization Endpoint</name>
        <t>The authorization endpoint is used to interact with the resource
owner and obtain an authorization grant.  The authorization server
MUST first authenticate the resource owner.  The way in
which the authorization server authenticates the resource owner
(e.g., username and password login, passkey, federated login, or by using an established session)
is beyond the scope of this specification.</t>
        <t>The means through which the client obtains the URL of the
authorization endpoint are beyond the scope of this specification,
but the URL is typically provided in the service documentation,
or in the authorization server's metadata document <xref target="RFC8414"/>.</t>
        <t>The authorization endpoint URL MUST NOT include a fragment component,
and MAY include a query string component (<xref target="query-string-serialization"/>),
which MUST be retained when adding additional query parameters.
The query string component MUST NOT include any parameters defined
for use in the authorization request.</t>
        <t>The authorization server MUST support the use of the HTTP GET
method (<xref section="9.3.1" sectionFormat="of" target="HTTP"/>) for the authorization endpoint and MAY support
the POST method (<xref section="9.3.3" sectionFormat="of" target="HTTP"/>) as well.
When using GET, the request parameters are serialized using
<xref target="query-string-serialization"/>. When using POST, the request parameters
are serialized using <xref target="form-serialization"/>.</t>
        <t>The authorization server MUST ignore unrecognized request parameters sent to the authorization endpoint.</t>
        <t>Request and response parameters
defined by this specification MUST NOT be included more than once.
This requirement also applies to parameters defined by extensions
unless the extension explicitly defines otherwise for a specific
parameter.
Parameters sent without a value MUST be treated as if they were
omitted from the request.</t>
        <t>An authorization server that redirects a request potentially containing
user credentials MUST avoid forwarding these user credentials accidentally
(see <xref target="redirect_307"/> for details).</t>
        <t>Cross-Origin Resource Sharing <xref target="WHATWG.CORS"/> MUST NOT be
supported at the authorization endpoint, as the client does not access this
endpoint directly; instead, the client redirects the user agent to it.</t>
        <t>Grant types define the required parameters at the authorization endpoint.
This specification defines the "Authorization Code Grant" (<xref target="authorization-code-grant"/>),
including the base list of parameters to include in the request. Extensions
such as Pushed Authorization Requests (<xref target="RFC9126"/>) define a different set
of parameters to use in the request to the authorization endpoint.</t>
      </section>
      <section anchor="token-endpoint">
        <name>Token Endpoint</name>
        <t>The token endpoint is used by the client to obtain an access token using
a grant such as those described in <xref target="obtaining-authorization"/> and
<xref target="refreshing-an-access-token"/>.</t>
        <t>The means through which the client obtains the URL of the token
endpoint are beyond the scope of this specification, but the URL
is typically provided in the service documentation and configured during
development of the client, or provided in the authorization server's metadata
document <xref target="RFC8414"/> and fetched programmatically at runtime.</t>
        <t>The token endpoint URL MUST NOT include a fragment component,
and MAY include a query string component (<xref target="query-string-serialization"/>).</t>
        <t>The client MUST use the HTTP POST method when making requests to the token endpoint.</t>
        <t>The authorization server MUST ignore unrecognized request parameters sent to the token endpoint.</t>
        <t>Parameters sent without a value MUST be treated as if they were
omitted from the request. Request and response parameters
defined by this specification MUST NOT be included more than once.
This requirement also applies to parameters defined by extensions
unless the extension explicitly defines otherwise for a specific
parameter.</t>
        <t>Authorization servers that support browser-based applications
(for example, applications running exclusively in client-side JavaScript without
access to a supporting backend server) MUST ensure the token endpoint
supports the necessary CORS <xref target="WHATWG.CORS"/> header fields to allow the responses
to be visible to the application.
If the authorization server provides additional endpoints to the application, such
as metadata URLs, dynamic client registration, revocation, introspection, discovery, or
user info endpoints, these endpoints may also be accessed by the browser-based
application and MUST also send the CORS header fields to allow access.
Note that CORS header fields are not needed in the case where the browser-based
application shares an origin with the authorization server.
See <xref target="browser-based-apps"/> and <xref target="RFC10017"/> for further details.</t>
        <section anchor="token-endpoint-client-authentication">
          <name>Client Authentication</name>
          <t>Confidential clients MUST
authenticate with the authorization server as described in
<xref target="client-authentication"/> when making requests to the token endpoint.</t>
          <t>Client authentication is used for:</t>
          <ul spacing="normal">
            <li>
              <t>Enforcing the binding of refresh tokens and authorization codes to
the client to which they were issued.  Client authentication adds an
additional layer of security when an authorization code is transmitted
to the redirection endpoint over an insecure channel.</t>
            </li>
            <li>
              <t>Recovering from a compromised client by disabling the client or
changing its credentials, thus preventing an attacker from abusing
stolen refresh tokens.  Changing a single set of client
credentials is significantly faster than revoking an entire set of
refresh tokens.</t>
            </li>
            <li>
              <t>Implementing authentication management best practices, which
require periodic credential rotation.  Rotation of an entire set
of refresh tokens can be challenging, while rotation of a single
set of client credentials is significantly easier.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-request">
          <name>Token Endpoint Request</name>
          <t>The client makes a request to the token endpoint by sending the
following parameters using the form-encoded serialization
format per <xref target="form-serialization"/> with a character encoding of UTF-8 in the HTTP
request content:</t>
          <dl>
            <dt>"grant_type":</dt>
            <dd>
              <t>REQUIRED.  Identifier of the grant type the client uses with the particular token request.
This specification defines the values <tt>authorization_code</tt>, <tt>refresh_token</tt>, and <tt>client_credentials</tt>.
The grant type determines the further parameters required or supported by the token request. The
details of those grant types are defined below.</t>
            </dd>
            <dt>"client_id":</dt>
            <dd>
              <t>OPTIONAL.  The client identifier is needed when a form of client authentication that
relies on the parameter is used, or the <tt>grant_type</tt> requires identification of public clients.</t>
            </dd>
          </dl>
          <t>Confidential clients MUST authenticate with the authorization
server as described in <xref target="token-endpoint-client-authentication"/>.</t>
          <t>For example, the client makes the following HTTPS request:</t>
          <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code\
&code=SplxlOBeZQQYbYS6WxSbIA\
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb\
&code_verifier=\
3641a2d12d66101249cdf7a79c000c1f8c05d2aafcf14bf146497bed
]]></sourcecode>
          <t>The authorization server MUST:</t>
          <ul spacing="normal">
            <li>
              <t>require client authentication for confidential clients
(or clients with other authentication requirements), and</t>
            </li>
            <li>
              <t>authenticate the client if client authentication is included.</t>
            </li>
          </ul>
          <t>Further grant-type-specific processing rules apply and are specified with the respective
grant type.</t>
        </section>
        <section anchor="token-response">
          <name>Token Endpoint Response</name>
          <t>If the access token request is valid and authorized, the
authorization server issues an access token and, optionally, a refresh
token.</t>
          <t>If client authentication fails or is invalid, the authorization server returns
an error response as described in <xref target="token-error-response"/>.</t>
          <t>The authorization server issues an access token and, optionally, a refresh
token by creating an HTTP response according to <xref target="json-serialization"/>,
using the <tt>application/json</tt> media type as defined by <xref target="RFC8259"/>,
with the following parameters and a 200 (OK) status code:</t>
          <dl>
            <dt>"access_token":</dt>
            <dd>
              <t>REQUIRED.  The access token issued by the authorization server.</t>
            </dd>
            <dt>"token_type":</dt>
            <dd>
              <t>REQUIRED.  The type of the access token issued as described in
<xref target="access-tokens"/>.  The value is case insensitive.</t>
            </dd>
            <dt>"expires_in":</dt>
            <dd>
              <t>RECOMMENDED.  A JSON number that represents the lifetime
in seconds of the access token.  For
example, the value <tt>3600</tt> denotes that the access token will
expire one hour from the time the response was generated.
If omitted, the authorization server SHOULD provide the
lifetime via other means or document the default value. Note
that the authorization server may prematurely expire an access
token, and clients MUST NOT expect an access token to be valid
for the provided lifetime.</t>
            </dd>
            <dt>"scope":</dt>
            <dd>
              <t>RECOMMENDED, if identical to the scope requested by the client;
otherwise, REQUIRED.  The scope of the access token as
described by <xref target="access-token-scope"/>.</t>
            </dd>
            <dt>"refresh_token":</dt>
            <dd>
              <t>OPTIONAL.  The refresh token, which can be used to obtain new
access tokens based on the grant passed in the corresponding
token request.</t>
            </dd>
          </dl>
          <t>Authorization servers SHOULD determine, based on a risk assessment
and their own policies, whether to issue refresh tokens to a certain client.
For example, an authorization server might issue refresh tokens only to
clients that are registered to receive them, only when the client requests
a particular scope (such as the <tt>offline_access</tt> scope defined in
<xref target="OpenID.Connect"/>), or depending on whether the client is confidential or
public, and might tie the lifetime of the refresh token to the resource
owner's session at the authorization server, as recommended for
browser-based applications in <xref target="browser-based-apps-refresh-tokens"/>.  If the
authorization server decides not to issue refresh tokens, the client
MAY obtain new access tokens by starting the OAuth flow over, for example, by
initiating a new authorization code request.  In such a case, the authorization
server may utilize cookies and persistent grants to optimize the user
experience.</t>
          <t>If refresh tokens are issued, those refresh tokens MUST be bound to
the scope and resource servers as consented by the resource owner.
This is to prevent privilege escalation by the legitimate client and to
reduce the impact of refresh token leakage.</t>
          <t>The parameters are serialized into a JavaScript Object Notation (JSON)
structure as described in <xref target="json-serialization"/>.</t>
          <t>The authorization server MUST include the Cache-Control
response header field (<xref section="5.2" sectionFormat="of" target="HTTP-CACHING"/>) with a value of <tt>no-store</tt> in any
response containing tokens, credentials, or other sensitive
information.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA",
  "example_parameter": "example_value"
}
]]></sourcecode>
          <t>The client MUST ignore unrecognized value names in the response.  The
length of tokens and other values received from the authorization
server is left undefined, as described in <xref target="value-sizes"/>.</t>
        </section>
        <section anchor="token-error-response">
          <name>Token Endpoint Error Response</name>
          <t>The authorization server responds with a 400 (Bad Request)
status code (unless specified otherwise) and includes the following
parameters with the response:</t>
          <dl>
            <dt>"error":</dt>
            <dd>
              <t>REQUIRED.  A single ASCII <xref target="USASCII"/> error code from the following:
</t>
              <dl>
                <dt>"invalid_request":</dt>
                <dd>
                  <t>The request is missing a required parameter, includes an
unsupported parameter value (other than grant type),
repeats a parameter, includes multiple credentials,
utilizes more than one mechanism for authenticating the
client, contains a <tt>code_verifier</tt> although no
<tt>code_challenge</tt> was sent in the authorization request,
or is otherwise malformed.</t>
                </dd>
                <dt>"invalid_client":</dt>
                <dd>
                  <t>Client authentication failed (e.g., unknown client, no
client authentication included, or unsupported
authentication method).  The authorization server MAY
return a 401 (Unauthorized) status code to indicate
which HTTP authentication schemes are supported.  If the
client attempted to authenticate via the Authorization
request header field (<xref section="11.6.2" sectionFormat="of" target="HTTP"/>), the authorization server MUST
respond with a 401 (Unauthorized) status code and
include the WWW-Authenticate response header field
(<xref section="11.6.1" sectionFormat="of" target="HTTP"/>) matching the authentication scheme used by the client.
Client authentication methods that do not use an HTTP
authentication scheme have no corresponding challenge
in the WWW-Authenticate header field.</t>
                </dd>
                <dt>"invalid_grant":</dt>
                <dd>
                  <t>The provided authorization grant (e.g., authorization
code, resource owner credentials) or refresh token is
invalid, expired, revoked, does not match the redirect
URI used in the authorization request, or was issued to
another client.</t>
                </dd>
                <dt>"unauthorized_client":</dt>
                <dd>
                  <t>The authenticated client is not authorized to use this
authorization grant type.</t>
                </dd>
                <dt>"unsupported_grant_type":</dt>
                <dd>
                  <t>The authorization grant type is not supported by the
authorization server.</t>
                </dd>
                <dt>"invalid_scope":</dt>
                <dd>
                  <t>The requested scope is invalid, unknown, malformed, or
exceeds the scope granted by the resource owner.</t>
                </dd>
              </dl>
              <t>Values for the <tt>error</tt> parameter MUST NOT include characters
outside the set %x20-21 / %x23-5B / %x5D-7E.</t>
            </dd>
            <dt>"error_description":</dt>
            <dd>
              <t>OPTIONAL.  Human-readable ASCII <xref target="USASCII"/> text providing
additional information, used to assist the client developer in
understanding the error that occurred.
Values for the <tt>error_description</tt> parameter MUST NOT include
characters outside the set %x20-21 / %x23-5B / %x5D-7E.</t>
            </dd>
            <dt>"error_uri":</dt>
            <dd>
              <t>OPTIONAL.  A URI identifying a human-readable web page with
information about the error, used to provide the client
developer with additional information about the error.
Values for the <tt>error_uri</tt> parameter MUST conform to the
URI-reference syntax and thus MUST NOT include characters
outside the set %x21 / %x23-5B / %x5D-7E.</t>
            </dd>
          </dl>
          <t>The parameters are included in the content of the HTTP response
using the <tt>application/json</tt> media type as defined in <xref target="json-serialization"/>.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_request"
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="obtaining-authorization">
      <name>Grant Types</name>
      <t>To request an access token, the client obtains authorization from the
resource owner. This specification defines the following authorization grant types:</t>
      <ul spacing="normal">
        <li>
          <t>authorization code</t>
        </li>
        <li>
          <t>client credentials</t>
        </li>
        <li>
          <t>refresh token</t>
        </li>
      </ul>
      <t>It also provides an extension mechanism for defining additional grant types.</t>
      <section anchor="authorization-code-grant">
        <name>Authorization Code Grant</name>
        <t>The authorization code grant type is used to obtain both access
tokens and refresh tokens.</t>
        <t>The grant type uses the additional authorization endpoint to let the authorization server
interact with the resource owner in order to get consent for resource access.</t>
        <t>Since this is a redirect-based flow, the client must be capable of
initiating the flow with the resource owner's user agent (typically a web
browser) and capable of receiving incoming requests (via redirection) from the authorization server.</t>
        <figure anchor="fig-authorization-code-flow">
          <name>Authorization Code Flow</name>
          <artwork><![CDATA[
 +----------+
 | Resource |
 |   Owner  |
 +----------+
       ^
       |
       |
 +-----|----+          Client Identifier      +---------------+
 | .---+---------(1)-- & Redirect URI ------->|               |
 | |   |    |                                 |               |
 | |   '---------(2)-- User authenticates --->|               |
 | | User-  |                                 | Authorization |
 | | Agent  |                                 |     Server    |
 | |        |                                 |               |
 | |    .--------(3)-- Authorization Code ---<|               |
 +-|----|---+                                 +---------------+
   |    |                                         ^      v
   |    |                                         |      |
   ^    v                                         |      |
 +---------+                                      |      |
 |         |>---(4)-- Authorization Code ---------'      |
 |  Client |          & Redirect URI                     |
 |         |                                             |
 |         |<---(5)----- Access Token -------------------'
 +---------+       (w/ Optional Refresh Token)
]]></artwork>
        </figure>
        <t>The flow illustrated in <xref target="fig-authorization-code-flow"/> includes the following steps:</t>
        <t>(1)  The client initiates the flow by directing the resource owner's
     user agent to the authorization endpoint.  The client includes
     its client identifier, code challenge (derived from a generated code verifier),
     optional requested scope, optional local state, and a
     redirect URI to which the authorization server will send the
     user agent back once access is granted (or denied).</t>
        <t>(2)  The authorization server authenticates the resource owner (via
     the user agent) and establishes whether the resource owner
     grants or denies the client's access request.</t>
        <t>(3)  Assuming the resource owner grants access, the authorization
     server redirects the user agent back to the client using the
     redirect URI provided earlier (in the request or during
     client registration).  The redirect URI includes an
     authorization code and any local state provided by the client
     earlier.</t>
        <t>(4)  The client requests an access token from the authorization
     server's token endpoint by including the authorization code
     received in the previous step, and including its code verifier.
     When making the request, the
     client authenticates with the authorization server if it can.  The client
     includes the redirect URI used to obtain the authorization
     code for verification.</t>
        <t>(5)  The authorization server authenticates the client when possible, validates the
     authorization code, validates the code verifier, and ensures that the redirect URI
     received matches the URI used to redirect the user agent to the client in
     step (3).  If valid, the authorization server responds with
     an access token and, optionally, a refresh token.</t>
        <section anchor="authorization-request">
          <name>Authorization Request</name>
          <t>To begin the authorization request, the client builds the authorization
request URL by adding parameters to the authorization server's
authorization endpoint URL. The client will eventually redirect the user agent
to this URL to initiate the request.</t>
          <t>Clients use a unique secret, called the "code verifier", per authorization request to protect against authorization code
injection and CSRF attacks. The client first generates the code verifier, then derives the "code challenge" to include in the authorization request. The client
uses the code verifier when exchanging the authorization code at the token endpoint to prove that the client using the
authorization code is the same client that requested it.</t>
          <t>The client constructs the request URL by adding the following
parameters to the query component of the authorization endpoint URL
as described by <xref target="query-string-serialization"/>:</t>
          <dl>
            <dt>"response_type":</dt>
            <dd>
              <t>REQUIRED.  The authorization endpoint supports different sets of request and response
parameters. The client determines the type of flow by using a certain <tt>response_type</tt>
value. This specification defines the value <tt>code</tt>, which must be used to signal that
the client wants to use the authorization code flow.</t>
            </dd>
          </dl>
          <t>Extension response types MAY contain a space-delimited (%x20) set of
values, where the order of values does not matter (e.g., response
type <tt>a b</tt> is the same as <tt>b a</tt>).  The meaning of such composite
response types is defined by their respective specifications.</t>
          <t>Some extension response types are defined by <xref target="OpenID.Connect"/>.</t>
          <t>If an authorization request is missing the <tt>response_type</tt> parameter,
or if the response type is not understood, the authorization server
MUST return an error response as described in <xref target="authorization-code-error-response"/>.</t>
          <dl>
            <dt>"client_id":</dt>
            <dd>
              <t>REQUIRED.  The client identifier as described in <xref target="client-identifier"/>.</t>
            </dd>
            <dt>"code_challenge":</dt>
            <dd>
              <t>REQUIRED unless the specific requirements of <xref target="authorization_codes"/> are met.  The code challenge derived from the code verifier.</t>
            </dd>
            <dt>"code_challenge_method":</dt>
            <dd>
              <t>REQUIRED.  The code challenge transformation method: either <tt>S256</tt> or a value defined by a future extension.</t>
            </dd>
            <dt>"redirect_uri":</dt>
            <dd>
              <t>OPTIONAL if only one redirect URI is registered for this client.
REQUIRED if multiple redirect URIs are registered for this client.
See <xref target="multiple-redirect-uris"/>.</t>
            </dd>
            <dt>"scope":</dt>
            <dd>
              <t>OPTIONAL.  The scope of the access request as described by
<xref target="access-token-scope"/>.</t>
            </dd>
            <dt>"state":</dt>
            <dd>
              <t>OPTIONAL.  An opaque value used by the client to maintain
state between the request and callback.  The authorization
server includes this value when redirecting the user agent back
to the client.  This value is carried in the query component of
the authorization request URL and again in the redirect back to
the client, so its length is bounded in practice by the URL and
HTTP header field lengths accepted by the authorization server,
the user agent, and the client; see <xref target="value-sizes"/>.</t>
            </dd>
          </dl>
          <t>The <tt>code_verifier</tt> is a unique, high-entropy, cryptographically random string generated
for each authorization request, using the unreserved characters <tt>[A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~"</tt>,
with a minimum length of 43 characters and a maximum length of 128 characters.</t>
          <t>The client stores the <tt>code_verifier</tt> temporarily and calculates the
<tt>code_challenge</tt>, which it uses in the authorization request.</t>
          <t>The ABNF for <tt>code_verifier</tt> is as follows.</t>
          <artwork><![CDATA[
code-verifier = 43*128unreserved
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
ALPHA = %x41-5A / %x61-7A
DIGIT = %x30-39
]]></artwork>
          <t>Clients MUST use code challenge methods that
do not expose the <tt>code_verifier</tt> in the authorization request.
Otherwise, attackers that can read the authorization request (cf.
Attacker A4 in <xref target="RFC9700"/>) can break the security provided
by this mechanism. Currently, <tt>S256</tt> is the only such method.</t>
          <t>NOTE: The code verifier SHOULD have enough entropy to make it
impractical to guess the value.  It is RECOMMENDED that the output of
a suitable random number generator be used to create a 32-octet
sequence.  The octet sequence is then base64url-encoded to produce a
43-octet URL-safe string to use as the code verifier.</t>
          <t>The client then creates a <tt>code_challenge</tt> derived from the code
verifier by transforming the code verifier with a valid transformation method:</t>
          <artwork><![CDATA[
S256
  code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
]]></artwork>
          <t>This specification defines only the <tt>S256</tt> transformation. Future extensions
may define additional transformation methods.</t>
          <t>The ABNF for <tt>code_challenge</tt> is as follows.</t>
          <artwork><![CDATA[
code-challenge = 43*128unreserved
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
ALPHA = %x41-5A / %x61-7A
DIGIT = %x30-39
]]></artwork>
          <t>The properties <tt>code_challenge</tt> and <tt>code_verifier</tt> are adopted from the OAuth 2.0 extension
known as "Proof Key for Code Exchange", or PKCE <xref target="RFC7636"/>, where this technique
was originally developed. The <tt>plain</tt> transformation method defined in <xref target="RFC7636"/>
is removed and explicitly prohibited in this specification. See <xref target="pkce-plain"/> for additional details.</t>
          <t>Authorization servers MUST support the <tt>code_challenge</tt> and <tt>code_verifier</tt> parameters.</t>
          <t>Clients MUST use <tt>code_challenge</tt> and <tt>code_verifier</tt>, and
authorization servers MUST enforce their use except under the conditions
described in <xref target="authorization_codes"/>. Even in this case, using and enforcing
<tt>code_challenge</tt> and <tt>code_verifier</tt> as described above is still
RECOMMENDED.</t>
          <t>The <tt>state</tt> and <tt>scope</tt> parameters SHOULD NOT include sensitive
client or resource owner information in cleartext, as they can be
transmitted over insecure channels or stored insecurely.</t>
          <t>The client directs the resource owner to the constructed URI using an
HTTP redirection, or by other means available to it via the user agent.</t>
          <t>For example, the client directs the user agent to make the following
HTTPS request:</t>
          <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz\
    &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb\
    &code_challenge=6fdkQaPm51l13DSukcAH3Mdx7_ntecHYd1vi3n0hMZY\
    &code_challenge_method=S256 HTTP/1.1
Host: server.example.com
]]></sourcecode>
          <t>The authorization server validates the request to ensure that all
required parameters are present and valid.</t>
          <t>In particular, the authorization server MUST validate the <tt>redirect_uri</tt>
in the request if present, ensuring that it matches one of the registered
redirect URIs previously established during client registration (<xref target="client-registration"/>).
When comparing the two URIs the authorization server MUST ensure that the
two URIs are equal using simple string comparison as defined in <xref section="6.2.1" sectionFormat="of" target="RFC3986"/>,
i.e., a case-sensitive, character-by-character comparison with no normalization applied.
The only exception is loopback interface redirect URIs used by native apps: in this case, the authorization server
MUST allow variable port numbers as described in <xref target="loopback-interface-redirection"/>.</t>
          <t>If the request is valid,
the authorization server authenticates the resource owner and obtains
an authorization decision (by asking the resource owner or by
establishing approval via other means).</t>
          <t>When a decision is established, the authorization server directs the
user agent to the provided client redirect URI using an HTTP
redirection response, or by other means available to it via the
user agent.</t>
        </section>
        <section anchor="authorization-response">
          <name>Authorization Response</name>
          <t>If the resource owner grants the access request, the authorization
server issues an authorization code and delivers it to the client by
adding the following parameters to the query component of the
redirect URI using the query string serialization described by
<xref target="query-string-serialization"/>, unless specified otherwise by an extension:</t>
          <dl>
            <dt>"code":</dt>
            <dd>
              <t>REQUIRED.  The authorization code is generated by the
authorization server and opaque to the client.  The authorization code MUST expire
shortly after it is issued to mitigate the risk of leaks.  A
maximum authorization code lifetime of 10 minutes is
RECOMMENDED. The authorization code is bound to
the client identifier, code challenge, and redirect URI.</t>
            </dd>
            <dt>"state":</dt>
            <dd>
              <t>REQUIRED if the <tt>state</tt> parameter was present in the client
authorization request.  The exact value received from the
client.</t>
            </dd>
            <dt>"iss":</dt>
            <dd>
              <t>REQUIRED. The issuer identifier of the authorization server, which the
client can use to prevent mix-up attacks, if the client interacts
with more than one authorization server. See <xref target="mix-up"/> and <xref target="RFC9207"/> for
additional details on how the client can use it to prevent mix-up attacks.</t>
            </dd>
          </dl>
          <t>For example, the authorization server redirects the user agent by
sending the following HTTP response:</t>
          <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA\
  &state=xyz&iss=https%3A%2F%2Fauthorization-server.example.com
]]></sourcecode>
          <t>The client MUST ignore unrecognized response parameters.  The
length of the authorization code string is left undefined by this
specification, as described in <xref target="value-sizes"/>.</t>
          <t>The authorization server MUST associate the <tt>code_challenge</tt> and
<tt>code_challenge_method</tt> values with the issued authorization code
so the code challenge can be verified later.</t>
          <t>The exact method that the server uses to associate the <tt>code_challenge</tt>
with the issued code is out of scope for this specification. The
code challenge could be stored on the server and associated with the
code there. The <tt>code_challenge</tt> and <tt>code_challenge_method</tt> values may
be stored in encrypted form in the code itself, but the server
MUST NOT include the <tt>code_challenge</tt> value in a response parameter
in a form that entities other than the AS can extract.</t>
          <t>Clients MUST prevent injection (replay) of authorization codes into the
authorization response by attackers. Using <tt>code_challenge</tt> and <tt>code_verifier</tt> prevents injection of authorization codes since the authorization server will reject a token request with a mismatched <tt>code_verifier</tt>. See <xref target="authorization_codes"/> for more details.</t>
          <section anchor="authorization-code-error-response">
            <name>Authorization Error Response</name>
            <t>If the request fails due to a missing, invalid, or mismatching
redirect URI, or if the client identifier is missing or invalid,
the authorization server MUST NOT redirect the user agent to the
invalid redirect URI and SHOULD inform the resource owner of the
error, for example, by displaying a message to the user in their browser.
When returning an error response directly to the user agent, the
authorization server SHOULD use the 400 (Bad Request) status code.
The 401 (Unauthorized) status code used for client authentication
errors at the token endpoint does not apply to authorization endpoint
request errors.</t>
            <t>The authorization server MUST validate the client identifier and redirect
URI before redirecting an error response to the client. Once both have been
validated, the authorization server redirects request errors using the error
codes defined below.</t>
            <t>An authorization server MUST reject requests without a <tt>code_challenge</tt> from public clients,
and MUST reject such requests from other clients unless there is
reasonable assurance that the client mitigates authorization code injection
in other ways. See <xref target="authorization_codes"/> for details.</t>
            <t>If the server does not support the requested <tt>code_challenge_method</tt> transformation,
the authorization endpoint MUST return the
authorization error response with the <tt>error</tt> value set to
<tt>invalid_request</tt>.  The <tt>error_description</tt> or the resource referenced by
<tt>error_uri</tt> SHOULD explain the nature of the error (e.g., that the transform
algorithm is not supported).</t>
            <t>If the resource owner denies the access request or if the request
fails after the client identifier and redirect URI have been validated,
the authorization server informs the client by redirecting the user agent
to the redirect URI and adding the following
parameters to the query component of the redirect URI as described
by <xref target="query-string-serialization"/>:</t>
            <dl>
              <dt>"error":</dt>
              <dd>
                <t>REQUIRED.  A single ASCII <xref target="USASCII"/> error code from the
following:
</t>
                <dl>
                  <dt>"invalid_request":</dt>
                  <dd>
                    <t>The request is missing a required parameter, includes an
invalid parameter value, includes a parameter more than
once, or is otherwise malformed.</t>
                  </dd>
                  <dt>"unauthorized_client":</dt>
                  <dd>
                    <t>The client is not authorized to request an authorization
code using this method.</t>
                  </dd>
                  <dt>"access_denied":</dt>
                  <dd>
                    <t>The resource owner or authorization server denied the
request.</t>
                  </dd>
                  <dt>"unsupported_response_type":</dt>
                  <dd>
                    <t>The authorization server does not support obtaining an
authorization code using this method.</t>
                  </dd>
                  <dt>"invalid_scope":</dt>
                  <dd>
                    <t>The requested scope is invalid, unknown, or malformed.</t>
                  </dd>
                  <dt>"server_error":</dt>
                  <dd>
                    <t>The authorization server encountered an unexpected
condition that prevented it from fulfilling the request.
(This error code is needed because a 500 (Internal Server
Error) status code cannot be returned to the client
via an HTTP redirect.)</t>
                  </dd>
                  <dt>"temporarily_unavailable":</dt>
                  <dd>
                    <t>The authorization server is currently unable to handle
the request due to a temporary overloading or maintenance
of the server.  (This error code is needed because a 503
(Service Unavailable) status code cannot be returned
to the client via an HTTP redirect.)</t>
                  </dd>
                </dl>
                <t>Values for the <tt>error</tt> parameter MUST NOT include characters
outside the set %x20-21 / %x23-5B / %x5D-7E.</t>
              </dd>
              <dt>"error_description":</dt>
              <dd>
                <t>OPTIONAL.  Human-readable ASCII <xref target="USASCII"/> text providing
additional information, used to assist the client developer in
understanding the error that occurred.
Values for the <tt>error_description</tt> parameter MUST NOT include
characters outside the set %x20-21 / %x23-5B / %x5D-7E.</t>
              </dd>
              <dt>"error_uri":</dt>
              <dd>
                <t>OPTIONAL.  A URI identifying a human-readable web page with
information about the error, used to provide the client
developer with additional information about the error.
Values for the <tt>error_uri</tt> parameter MUST conform to the
URI-reference syntax and thus MUST NOT include characters
outside the set %x21 / %x23-5B / %x5D-7E.</t>
              </dd>
              <dt>"state":</dt>
              <dd>
                <t>REQUIRED if a <tt>state</tt> parameter was present in the client
authorization request.  The exact value received from the
client.</t>
              </dd>
              <dt>"iss":</dt>
              <dd>
                <t>REQUIRED. The issuer identifier of the authorization server. See
<xref target="authorization-response"/> above for details.</t>
              </dd>
            </dl>
            <t>For example, the authorization server indicates that the request was denied
by redirecting the user agent with the following HTTP response:</t>
            <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied\
  &state=xyz&iss=https%3A%2F%2Fauthorization-server.example.com
]]></sourcecode>
          </section>
        </section>
        <section anchor="code-token-extension">
          <name>Token Endpoint Extension</name>
          <t>The authorization code grant type is identified at the token endpoint with the <tt>grant_type</tt> value of <tt>authorization_code</tt>.</t>
          <t>If this value is set, the following additional token request parameters beyond <xref target="token-request"/> are supported:</t>
          <dl>
            <dt>"code":</dt>
            <dd>
              <t>REQUIRED.  The authorization code received from the
authorization server.</t>
            </dd>
            <dt>"code_verifier":</dt>
            <dd>
              <t>REQUIRED, if the <tt>code_challenge</tt> parameter was included in the authorization
request. MUST NOT be used otherwise. The original code verifier string.</t>
            </dd>
            <dt>"client_id":</dt>
            <dd>
              <t>REQUIRED, if the client is not authenticating with the authorization server
as described in <xref target="token-endpoint-client-authentication"/>.</t>
            </dd>
          </dl>
          <t>The authorization server MUST return an access token only once for a given authorization code.</t>
          <t>If a second valid token request is made with the same
authorization code as a previously successful token request,
the authorization server MUST deny the request and SHOULD
revoke (when possible) all access tokens and refresh tokens
previously issued based on that authorization code.
See <xref target="authorization-code-reuse"/> for further details.</t>
          <t>For example, the client makes the following HTTPS request:</t>
          <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code\
&code=SplxlOBeZQQYbYS6WxSbIA\
&code_verifier=\
3641a2d12d66101249cdf7a79c000c1f8c05d2aafcf14bf146497bed
]]></sourcecode>
          <t>In addition to the processing rules in <xref target="token-request"/>, the authorization server MUST:</t>
          <ul spacing="normal">
            <li>
              <t>ensure that the authorization code was issued to the authenticated
confidential client or, if the client is public, ensure that the
code was issued to the <tt>client_id</tt> in the request,</t>
            </li>
            <li>
              <t>verify that the authorization code is valid,</t>
            </li>
            <li>
              <t>verify that the <tt>code_verifier</tt> parameter is present if and only if a
<tt>code_challenge</tt> parameter was present in the authorization request,</t>
            </li>
            <li>
              <t>if a <tt>code_verifier</tt> is present, verify the <tt>code_verifier</tt> by calculating
the code challenge from the received <tt>code_verifier</tt> and comparing it with
the previously associated <tt>code_challenge</tt>, after first transforming it
according to the <tt>code_challenge_method</tt> method specified by the client, and</t>
            </li>
            <li>
              <t>reject the token request if there was no <tt>code_challenge</tt> in the
authorization request associated with the authorization code in the
token request.</t>
            </li>
          </ul>
          <t>See <xref target="redirect-uri-in-token-request"/> for details on backward compatibility
with OAuth 2.0 clients regarding the <tt>redirect_uri</tt> parameter in the token request.</t>
        </section>
      </section>
      <section anchor="client-credentials-grant">
        <name>Client Credentials Grant</name>
        <t>The client can request an access token using only its client
credentials (or other supported means of authentication) when the
client is requesting access to the protected resources under its
control, or those of another resource owner that have been previously
arranged with the authorization server (the method of which is beyond
the scope of this specification).</t>
        <t>The client credentials grant type MUST only be used by confidential clients.</t>
        <figure anchor="fig-client-credentials-grant">
          <name>Client Credentials Grant</name>
          <artwork><![CDATA[
     +---------+                                  +---------------+
     |         |                                  |               |
     |         |>--(1)- Client Authentication --->| Authorization |
     | Client  |                                  |     Server    |
     |         |<--(2)---- Access Token ---------<|               |
     |         |                                  |               |
     +---------+                                  +---------------+
]]></artwork>
        </figure>
        <t>The use of the client credentials grant illustrated in <xref target="fig-client-credentials-grant"/> includes the following steps:</t>
        <t>(1)  The client authenticates with the authorization server and
     requests an access token from the token endpoint.</t>
        <t>(2)  The authorization server authenticates the client, and if valid,
     issues an access token.</t>
        <section anchor="client-credentials-access-token-request">
          <name>Token Endpoint Extension</name>
          <t>The client credentials grant type is identified at the token endpoint with the <tt>grant_type</tt> value of <tt>client_credentials</tt>.</t>
          <t>If this value is set, the following additional token request parameters beyond <xref target="token-request"/> are supported:</t>
          <dl>
            <dt>"scope":</dt>
            <dd>
              <t>OPTIONAL.  The scope of the access request as described by
<xref target="access-token-scope"/>.</t>
            </dd>
          </dl>
          <t>For example, the client makes the following HTTP request using
transport-layer security:</t>
          <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
]]></sourcecode>
          <t>The authorization server MUST authenticate the client.</t>
        </section>
      </section>
      <section anchor="refreshing-an-access-token">
        <name>Refresh Token Grant</name>
        <t>The refresh token is a credential issued by the authorization server to a client, which can be used
to obtain new (fresh) access tokens based on an existing grant. The client uses this option either because the previous access
token has expired or the client previously obtained an access token with a scope narrower than that
approved by the respective grant and later requires an access token with a different scope
under the same grant.</t>
        <t>Refresh tokens MUST be kept confidential in transit and storage, and
shared only between the authorization server and the client to which the
refresh tokens were issued.  The authorization server MUST maintain
the binding between a refresh token and the client to which it was
issued.</t>
        <t>The authorization server MUST verify the binding between the refresh
token and the client identity whenever the client identity can be
authenticated.  When client authentication is not possible, the
authorization server SHOULD issue sender-constrained refresh tokens
or use refresh token rotation as described in <xref target="refresh-token-endpoint-extension"/>.</t>
        <t>The authorization server MUST ensure that refresh tokens cannot be
generated, modified, or guessed to produce valid refresh tokens by
unauthorized parties.</t>
        <section anchor="refresh-token-endpoint-extension">
          <name>Token Endpoint Extension</name>
          <t>The refresh token grant type is identified at the token endpoint with the <tt>grant_type</tt> value of <tt>refresh_token</tt>.</t>
          <t>If this value is set, the following additional parameters beyond <xref target="token-request"/> are supported:</t>
          <dl>
            <dt>"refresh_token":</dt>
            <dd>
              <t>REQUIRED.  The refresh token issued to the client.</t>
            </dd>
            <dt>"scope":</dt>
            <dd>
              <t>OPTIONAL.  The scope of the access request as described by
<xref target="access-token-scope"/>. The requested scope MUST NOT include any scope
not originally granted by the resource owner and, if omitted, is
treated as equal to the scope originally granted by the
resource owner.</t>
            </dd>
          </dl>
          <t>Because refresh tokens are typically long-lasting credentials used to
request additional access tokens, the refresh token is bound to the
client to which it was issued. Confidential clients
MUST authenticate with the authorization server as described in
<xref target="token-endpoint-client-authentication"/>.</t>
          <t>For example, the client makes the following HTTP request using
transport-layer security:</t>
          <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
]]></sourcecode>
          <t>In addition to the processing rules in <xref target="token-request"/>, the authorization server MUST:</t>
          <ul spacing="normal">
            <li>
              <t>if client authentication is included in the request, ensure that the refresh token was issued to the authenticated client or, if a <tt>client_id</tt> is included in the request, ensure that the refresh token was issued to the matching client,</t>
            </li>
            <li>
              <t>validate that the grant corresponding to this refresh token is still active, and</t>
            </li>
            <li>
              <t>validate the refresh token.</t>
            </li>
          </ul>
          <t>If the authorization associated with the grant has been reduced since
the refresh token was issued (e.g., the resource owner revoked some scopes),
the authorization server MAY issue an access token with the reduced scope,
in which case it MUST include the <tt>scope</tt> response parameter as described in <xref target="token-response"/>.</t>
          <t>Authorization servers MUST utilize one of these methods to detect
refresh token replay by malicious actors for public clients:</t>
          <ul spacing="normal">
            <li>
              <t><em>Sender-constrained refresh tokens:</em> the authorization server
cryptographically binds the refresh token to a certain client
instance, e.g., by utilizing DPoP <xref target="RFC9449"/> or mTLS <xref target="RFC8705"/>.</t>
            </li>
            <li>
              <t><em>Refresh token rotation:</em> the authorization server issues a new
refresh token with every access token refresh response.  The
previous refresh token is invalidated, but information about the
relationship is retained by the authorization server.  If a
refresh token is compromised and subsequently used by both the
attacker and the legitimate client, one of them will present an
invalidated refresh token, which will inform the authorization
server of the breach.  The authorization server cannot determine
which party submitted the invalid refresh token, but it will
revoke the active refresh token as well as the access authorization
grant associated with it. This stops the attack at the
cost of forcing the legitimate client to obtain a fresh
authorization grant.</t>
            </li>
          </ul>
          <t>Implementation note: the grant to which a refresh token belongs
may be encoded into the refresh token itself.  This can enable an
authorization server to efficiently determine the grant to which a
refresh token belongs and, by extension, all refresh tokens that
need to be revoked.  Authorization servers MUST ensure the
integrity of the refresh token value in this case, for example,
by using signatures.</t>
        </section>
        <section anchor="refresh-token-response">
          <name>Refresh Token Response</name>
          <t>If valid and authorized, the authorization server issues an access
token as described in <xref target="token-response"/>.</t>
          <t>The authorization server MAY issue a new refresh token, in which case
the client MUST discard the old refresh token and replace it with the
new refresh token.</t>
        </section>
        <section anchor="refresh-token-recommendations">
          <name>Refresh Token Recommendations</name>
          <t>The authorization server MAY revoke the old
refresh token after issuing a new refresh token to the client.  If a
new refresh token is issued, the refresh token scope MUST be
identical to that of the refresh token included by the client in the
request, unless the grant has been reduced as described in
<xref target="refresh-token-endpoint-extension"/>.</t>
          <t>Authorization servers MAY revoke refresh tokens automatically in case
of a security event, such as:</t>
          <ul spacing="normal">
            <li>
              <t>password change</t>
            </li>
            <li>
              <t>logout at the authorization server</t>
            </li>
          </ul>
          <t>Refresh tokens SHOULD expire if the client has been inactive for some
time, i.e., the refresh token has not been used to obtain new
access tokens for some time.  The expiration time is at the
discretion of the authorization server.  It might be a global value
or determined based on the client policy or the grant associated with
the refresh token (and its sensitivity).</t>
          <t>When refresh token rotation is used, a failure to deliver the refresh
token response (e.g., due to a network error) can leave the client
holding only an invalidated refresh token, forcing a new authorization
flow. Authorization servers that wish to avoid this failure mode can
use sender-constrained refresh tokens instead of rotation.</t>
        </section>
      </section>
      <section anchor="extension-grants">
        <name>Extension Grants</name>
        <t>The client uses an extension grant type by specifying the grant type
using an absolute URI (defined by the authorization server) as the
value of the <tt>grant_type</tt> parameter of the token endpoint, and by
adding any additional parameters necessary.</t>
        <t>For example, to request an access token using the Device Authorization Grant
as defined by <xref target="RFC8628"/> after the user has authorized the client on a separate device,
the client makes the following HTTPS request:</t>
        <sourcecode type="http-message"><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code\
&device_code=GmRhmhcxhwEzkoEqiMEg_DnyEysNkuNhszIySk9eS\
&client_id=C409020731
]]></sourcecode>
        <t>If the access token request is valid and authorized, the
authorization server issues an access token and, optionally, a refresh
token as described in <xref target="token-response"/>.  If the request failed client
authentication or is invalid, the authorization server returns an
error response as described in <xref target="token-error-response"/>.</t>
      </section>
    </section>
    <section anchor="accessing-protected-resources">
      <name>Resource Requests</name>
      <t>The client accesses protected resources by presenting an access
token to the resource server.  The resource server MUST validate the
access token and ensure that it has not expired and that its scope
covers the requested resource.  The methods used by the resource
server to validate the access token
are beyond the scope of this specification, but generally involve an
interaction or coordination between the resource server and the
authorization server. For example, when the resource server and
authorization server are colocated or are part of the same system,
they may share a database or other storage; when the two components
are operated independently, they may use Token Introspection <xref target="RFC7662"/>
or a structured access token format such as a JWT <xref target="RFC9068"/>.</t>
      <section anchor="bearer-token-requests">
        <name>Bearer Token Requests</name>
        <t>This section defines two methods of sending bearer tokens in resource
requests to resource servers. Clients MUST use one of the two methods defined below,
and MUST NOT use more than one method to transmit the token in each request.</t>
        <t>In particular, clients MUST NOT send the access token in a URI query parameter,
and resource servers MUST ignore access tokens in a URI query parameter.</t>
        <section anchor="authorization-request-header-field">
          <name>Authorization Request Header Field</name>
          <t>When sending the access token in the Authorization request header
field defined in <xref section="11.6.2" sectionFormat="of" target="HTTP"/>, the client uses the <tt>Bearer</tt>
scheme to transmit the access token.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer mF_9.B5f-4.1JqM
]]></sourcecode>
          <t>The syntax of the Authorization header field for this scheme
follows the usage of the Basic scheme defined in <xref section="2" sectionFormat="of" target="RFC7617"/>.
As with Basic, the credentials use the <tt>token68</tt> syntax
(<xref section="11.2" sectionFormat="of" target="HTTP"/>) rather than the auth-param syntax, in order
to reflect existing deployments; this syntax is compatible with the
general authentication framework in <xref section="11" sectionFormat="of" target="HTTP"/>.
The syntax for Bearer credentials is as follows:</t>
          <artwork><![CDATA[
token68    = 1*( ALPHA / DIGIT /
                 "-" / "." / "_" / "~" / "+" / "/" ) *"="
credentials = "bearer" 1*SP token68
]]></artwork>
          <t>Clients SHOULD make authenticated requests with a bearer token using
the Authorization request header field with the <tt>Bearer</tt> HTTP
authorization scheme.  Resource servers MUST support this method.</t>
          <t>As described in <xref section="11.1" sectionFormat="of" target="HTTP"/>, the string <tt>bearer</tt>
is case insensitive. This means all of the following are valid uses
of the Authorization header field:</t>
          <ul spacing="normal">
            <li>
              <t><tt>Authorization: Bearer mF_9.B5f-4.1JqM</tt></t>
            </li>
            <li>
              <t><tt>Authorization: bearer mF_9.B5f-4.1JqM</tt></t>
            </li>
            <li>
              <t><tt>Authorization: BEARER mF_9.B5f-4.1JqM</tt></t>
            </li>
            <li>
              <t><tt>Authorization: bEaReR mF_9.B5f-4.1JqM</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="form-encoded-content-parameter">
          <name>Form-Encoded Content Parameter</name>
          <t>When sending the access token in the HTTP request content, the
client adds the access token to the request content using the
<tt>access_token</tt> parameter.  The client MUST NOT use this method unless
all of the following conditions are met:</t>
          <ul spacing="normal">
            <li>
              <t>The HTTP request includes the Content-Type header
field (<xref section="8.3" sectionFormat="of" target="HTTP"/>) set to <tt>application/x-www-form-urlencoded</tt>.</t>
            </li>
            <li>
              <t>The content follows the encoding requirements of the
<tt>application/x-www-form-urlencoded</tt> media type as defined by
the URL Living Standard <xref target="WHATWG.URL"/>.</t>
            </li>
            <li>
              <t>The HTTP request content is single-part.</t>
            </li>
            <li>
              <t>The content to be encoded in the request MUST consist entirely
of ASCII <xref target="USASCII"/> characters.</t>
            </li>
            <li>
              <t>The HTTP request method is one for which the content has
defined semantics.  In particular, this means that the GET
method MUST NOT be used.</t>
            </li>
          </ul>
          <t>The content MAY include other request-specific parameters, in
which case the <tt>access_token</tt> parameter MUST be properly separated
from the request-specific parameters using <tt>&amp;</tt> character(s) (ASCII
code 38).</t>
          <t>For example, the client makes the following HTTP request using
transport-layer security:</t>
          <sourcecode type="http-message"><![CDATA[
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

access_token=mF_9.B5f-4.1JqM
]]></sourcecode>
          <t>The <tt>application/x-www-form-urlencoded</tt> method SHOULD NOT be used
except in application contexts where participating clients do not
have access to the Authorization request header field.  Resource
servers MAY support this method.</t>
        </section>
      </section>
      <section anchor="access-token-validation">
        <name>Access Token Validation</name>
        <t>After receiving the access token, the resource server MUST check that
the access token has not expired, is authorized to access the requested
resource, was issued with the appropriate scope, and meets other policy
requirements of the resource server to access the protected resource.</t>
        <t>Access tokens generally fall into two categories: reference tokens or self-encoded tokens.
Reference tokens can be validated by querying the authorization server or
looking up the token in a token database, whereas self-encoded tokens
contain the authorization information in an encrypted and/or signed string
that can be extracted by the resource server.</t>
        <t>A standardized method to query the authorization server to check the validity
of an access token is defined in Token Introspection <xref target="RFC7662"/>.</t>
        <t>A standardized method of encoding information in a token string is
defined in the JWT Profile for Access Tokens <xref target="RFC9068"/>.</t>
        <t>See <xref target="access-token-security-considerations"/> for additional considerations
around creating and validating access tokens.</t>
      </section>
      <section anchor="error-response">
        <name>Error Response</name>
        <t>If a resource access request fails, the resource server SHOULD inform
the client of the error. The details of the error response are determined by the particular token type, such as the
description of bearer tokens in <xref target="bearer-token-error-codes"/>.</t>
        <section anchor="the-www-authenticate-response-header-field">
          <name>The WWW-Authenticate Response Header Field</name>
          <t>If the protected resource request does not include authentication
credentials or does not contain an access token that enables access
to the protected resource, the resource server MUST include the
WWW-Authenticate response header field; it MAY include it in
response to other conditions as well.  The WWW-Authenticate header
field uses the framework defined in <xref section="11" sectionFormat="of" target="HTTP"/>.</t>
          <t>All challenges for this token type MUST use the auth-scheme
value <tt>Bearer</tt>.  This scheme MAY be followed by one or more
auth-param values.  The auth-param attributes used or defined by this
specification for this token type are as follows.  Other auth-param
attributes MAY be used as well.</t>
          <dl>
            <dt>"realm":</dt>
            <dd>
              <t>A <tt>realm</tt> attribute MAY be included to indicate the scope of
protection in the manner described in <xref section="11.5" sectionFormat="of" target="HTTP"/>.  The
<tt>realm</tt> attribute MUST NOT appear more than once.</t>
            </dd>
            <dt>"scope":</dt>
            <dd>
              <t>The <tt>scope</tt> attribute is defined in <xref target="access-token-scope"/>.  The
<tt>scope</tt> attribute is a space-delimited set of case-sensitive scope
values indicating the required scope of the access token for
accessing the requested resource. Scope values are implementation
defined; there is no centralized registry for them, and allowed values
are defined by the authorization server.  The order of <tt>scope</tt> values
is not significant.  In some cases, the <tt>scope</tt> value will be used
when requesting a new access token with sufficient scope of access to
utilize the protected resource.  Use of the <tt>scope</tt> attribute is
OPTIONAL.  The <tt>scope</tt> attribute MUST NOT appear more than once.  The
<tt>scope</tt> value is intended for programmatic use and is not meant to be
displayed to end-users.
</t>
              <t>Two example scope values follow; these are taken from the OpenID
Connect <xref target="OpenID.Connect"/> and the Open Authentication Technology
Committee (OATC) Online Multimedia Authorization Protocol <xref target="OMAP"/>
OAuth 2.0 use cases, respectively:</t>
              <artwork><![CDATA[
scope="openid profile email"
scope="urn:example:channel=HBO&urn:example:rating=G,PG-13"
]]></artwork>
            </dd>
            <dt>"error":</dt>
            <dd>
              <t>If the protected resource request included an access token and failed
authentication, the resource server SHOULD include the <tt>error</tt>
attribute to provide the client with the reason why the access
request was declined.  The parameter value is described in
<xref target="bearer-token-error-codes"/>.</t>
            </dd>
            <dt>"error_description":</dt>
            <dd>
              <t>The resource server MAY include the
<tt>error_description</tt> attribute to provide developers with a human-readable
explanation that is not meant to be displayed to end-users.</t>
            </dd>
            <dt>"error_uri":</dt>
            <dd>
              <t>The resource server MAY include the <tt>error_uri</tt> attribute with an absolute URI
identifying a human-readable web page explaining the error.</t>
            </dd>
          </dl>
          <t>The <tt>error</tt>, <tt>error_description</tt>, and <tt>error_uri</tt> attributes MUST NOT
appear more than once.</t>
          <t>Values for the <tt>scope</tt> attribute (specified in <xref target="scope-syntax"/>)
MUST NOT include characters outside the set %x21 / %x23-5B
/ %x5D-7E for representing scope values and %x20 for delimiters
between scope values.  Values for the <tt>error</tt> and <tt>error_description</tt>
attributes (specified in <xref target="error-syntax"/> and <xref target="error-description-syntax"/>) MUST
NOT include characters outside the set %x20-21 / %x23-5B / %x5D-7E.
Values for the <tt>error_uri</tt> attribute (specified in <xref target="error-uri-syntax"/>)
MUST conform to the URI-reference syntax and thus MUST NOT
include characters outside the set %x21 / %x23-5B / %x5D-7E.</t>
        </section>
        <section anchor="bearer-token-error-codes">
          <name>Error Codes</name>
          <t>When a request fails, the resource server responds using the
appropriate HTTP status code (typically, 400, 401, 403, or 405) and
includes one of the following error codes in the response:</t>
          <dl>
            <dt>"invalid_request":</dt>
            <dd>
              <t>The request is missing a required parameter, includes an
unsupported parameter or parameter value, repeats the same
parameter, uses more than one method for including an access
token, or is otherwise malformed.  The resource server SHOULD
respond with the 400 (Bad Request) status code.</t>
            </dd>
            <dt>"invalid_token":</dt>
            <dd>
              <t>The access token provided is expired, revoked, malformed, or
invalid for other reasons.  The resource server SHOULD respond with
the 401 (Unauthorized) status code.  The client MAY
request a new access token and retry the protected resource
request.</t>
            </dd>
            <dt>"insufficient_scope":</dt>
            <dd>
              <t>The request requires higher privileges (scopes) than provided by the
scopes granted to the client and represented by the access token.
The resource server SHOULD respond with the
403 (Forbidden) status code and MAY include the <tt>scope</tt>
attribute with the scope necessary to access the protected
resource.</t>
            </dd>
          </dl>
          <t>Extensions may define additional error codes or specify additional
circumstances in which the above error codes are returned.</t>
          <t>If the request lacks any authentication information (e.g., the client
was unaware that authentication is necessary or attempted using an
unsupported authentication method), the resource server SHOULD NOT
include an error code or other error information.</t>
          <t>For example:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
]]></sourcecode>
          <t>And in response to a protected resource request with an
authentication attempt using an expired access token:</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example",
                  error="invalid_token",
                  error_description="The access token expired"
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="extensibility">
      <name>Extensibility</name>
      <section anchor="defining-access-token-types">
        <name>Defining Access Token Types</name>
        <t>Access token types can be defined in one of two ways: by registering them in
the "OAuth Access Token Types" registry (following the procedures in
<xref section="11.1" sectionFormat="of" target="RFC6749"/>) or by using a unique absolute URI as the name.</t>
        <section anchor="registered-access-token-types">
          <name>Registered Access Token Types</name>
          <t><xref target="RFC6750"/> establishes a common registry, the "OAuth Extensions Error
Registry" (<xref section="11.4" sectionFormat="of" target="RFC6749"/>), for error values to be shared among OAuth token authentication schemes.</t>
          <t>New authentication schemes designed primarily for OAuth token
authentication SHOULD define a mechanism for providing an error
status code to the client, in which the error values allowed are
registered in the "OAuth Extensions Error Registry".</t>
          <t>Such schemes MAY limit the set of valid error codes to a subset of
the registered values.  If the error code is returned using a named
parameter, the parameter name SHOULD be <tt>error</tt>.</t>
          <t>Other schemes capable of being used for OAuth token authentication,
but not primarily designed for that purpose, MAY bind their error
values to the registry in the same manner.</t>
          <t>New authentication schemes MAY choose to also specify the use of the
<tt>error_description</tt> and <tt>error_uri</tt> parameters to return error
information in a manner parallel to their usage in this
specification.</t>
          <t>Type names MUST conform to the
type-name ABNF.  If the type definition includes a new HTTP
authentication scheme, the type name SHOULD be identical to the HTTP
authentication scheme name (as defined in <xref section="11.1" sectionFormat="of" target="HTTP"/>).  The token type
<tt>example</tt> is reserved for use in examples.</t>
          <artwork><![CDATA[
type-name  = 1*name-char
name-char  = "-" / "." / "_" / DIGIT / ALPHA
]]></artwork>
        </section>
        <section anchor="vendor-specific-access-token-types">
          <name>Vendor-Specific Access Token Types</name>
          <t>Types utilizing a URI name SHOULD be limited to vendor-specific
implementations that are not commonly applicable and are specific to
the implementation details of the resource server where they are
used.</t>
          <t>All other types MUST be registered.</t>
        </section>
      </section>
      <section anchor="defining-new-endpoint-parameters">
        <name>Defining New Endpoint Parameters</name>
        <t>New request or response parameters for use with the authorization
endpoint or the token endpoint are defined and registered in the
"OAuth Parameters" registry following the procedure in <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
        <t>Parameter names MUST conform to the param-name ABNF, and parameter
value syntax MUST be well-defined (e.g., using ABNF or a reference
to the syntax of an existing parameter).</t>
        <artwork><![CDATA[
param-name  = 1*name-char
name-char   = "-" / "." / "_" / DIGIT / ALPHA
]]></artwork>
        <t>Unregistered vendor-specific parameter extensions that are not
commonly applicable and that are specific to the implementation
details of the authorization server where they are used SHOULD
utilize a vendor-specific prefix that is not likely to conflict with
other registered values (e.g., begin with <tt>companyname_</tt>).</t>
      </section>
      <section anchor="defining-new-authorization-grant-types">
        <name>Defining New Authorization Grant Types</name>
        <t>New authorization grant types can be defined by assigning them a
unique absolute URI for use with the <tt>grant_type</tt> parameter.  If the
extension grant type requires additional token endpoint parameters,
they MUST be registered in the "OAuth Parameters" registry as described
by <xref section="11.2" sectionFormat="of" target="RFC6749"/>.</t>
      </section>
      <section anchor="new-response-types">
        <name>Defining New Authorization Endpoint Response Types</name>
        <t>New response types for use with the authorization endpoint are
defined and registered in the "OAuth Authorization Endpoint Response
Types" registry following the procedure in <xref section="11.3" sectionFormat="of" target="RFC6749"/>.  Response type
names MUST conform to the response-type ABNF.</t>
        <artwork><![CDATA[
response-type  = response-name *( SP response-name )
response-name  = 1*response-char
response-char  = "_" / DIGIT / ALPHA
]]></artwork>
        <t>If a response type contains one or more space characters (%x20), it
is compared as a space-delimited set of values in which the order of
values does not matter.  Only one order of values can be registered,
which covers all other arrangements of the same set of values.</t>
        <t>For example, an extension can define and register the <tt>code other_token</tt>
response type.  Once registered, the same combination cannot be registered
as <tt>other_token code</tt>, but both values can be used to
denote the same response type.</t>
      </section>
      <section anchor="defining-additional-error-codes">
        <name>Defining Additional Error Codes</name>
        <t>In cases where protocol extensions (i.e., access token types,
extension parameters, or extension grant types) require additional
error codes to be used with the authorization code grant error
response (<xref target="authorization-code-error-response"/>), the token error response (<xref target="token-error-response"/>), or the
resource access error response (<xref target="error-response"/>), such error codes MAY be
defined.</t>
        <t>Extension error codes MUST be registered (following the procedures in
<xref section="11.4" sectionFormat="of" target="RFC6749"/>) if the extension with which they are used is a
registered access token type, a registered endpoint parameter, or an
extension grant type.  Error codes used with unregistered extensions
MAY be registered.</t>
        <t>Error codes MUST conform to the error ABNF and SHOULD be prefixed by
an identifying name when possible.  For example, an error identifying
an invalid value of the extension parameter <tt>example</tt> SHOULD be
named <tt>example_invalid</tt>.</t>
        <artwork><![CDATA[
error      = 1*error-char
error-char = %x20-21 / %x23-5B / %x5D-7E
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As a flexible and extensible framework, OAuth's security
considerations depend on many factors.  The following sections
provide implementers with security guidelines focused on the three
client profiles described in <xref target="client-types"/>: web application,
browser-based application, and native application.</t>
      <t>A comprehensive OAuth security model and analysis, as well as
background for the protocol design, is provided by
<xref target="RFC6819"/> and <xref target="RFC9700"/>.</t>
      <section anchor="access-token-security-considerations">
        <name>Access Token Security Considerations</name>
        <section anchor="security-threats">
          <name>Security Threats</name>
          <t>The following list presents several common threats against protocols
utilizing some form of tokens.  This list of threats was originally
derived from NIST Special Publication 800-63-1 <xref target="NIST800-63"/>, as
described in <xref target="RFC6750"/>.</t>
          <section anchor="access-token-manufacturemodification">
            <name>Access Token Manufacture/Modification</name>
            <t>An attacker may generate a bogus
access token or modify the token contents (such as the authentication or
attribute statements) of an existing token, causing the resource
server to grant inappropriate access to the client.  For example,
an attacker may modify the token to extend the validity period; a
malicious client may modify the assertion to gain access to
information that they should not be able to view.</t>
          </section>
          <section anchor="access-token-information-disclosure">
            <name>Access Token Information Disclosure</name>
            <t>Access tokens may contain authentication and attribute
statements that include sensitive information.</t>
            <t>If the client should be prevented from observing the contents of the access token,
content encryption MUST be applied.</t>
            <t>Since cookies are by default transmitted in cleartext, any
information contained in them is at risk of disclosure:
Bearer tokens MUST NOT be stored in cookies that can be sent in the
clear.
See Sections 7 and 8 of <xref target="COOKIES"/> for security
considerations about cookies.</t>
          </section>
          <section anchor="access-token-redirect">
            <name>Access Token Redirect</name>
            <t>An attacker uses an access token generated for consumption
by one resource server to gain access to a different resource
server that mistakenly believes the token to be for it.</t>
          </section>
          <section anchor="access-token-replay">
            <name>Access Token Replay</name>
            <t>An attacker attempts to use an access token that has already
been used with that resource server in the past.</t>
          </section>
        </section>
        <section anchor="threat-mitigation">
          <name>Threat Mitigation</name>
          <t>A large range of threats can be mitigated by protecting the contents
of the access token by using a digital signature and by following
best practices for signing key management such as periodic key rotation.</t>
          <t>Alternatively, a bearer token can contain a reference to
authorization information, rather than encoding the information
directly.  Using a reference may require an extra interaction between a
resource server and an authorization server to resolve the reference to the
authorization information.  The mechanics of such an interaction are
not defined by this specification, but one such mechanism is defined
in Token Introspection <xref target="RFC7662"/>.</t>
          <t>This document does not specify the encoding or the contents of the
access token; hence, detailed recommendations about the means of
guaranteeing access token integrity protection are outside the scope of this
specification. One example of an encoding and
signing mechanism for access tokens is described in
the JSON Web Token Profile for Access Tokens <xref target="RFC9068"/>.</t>
          <t>To deal with access token redirects, it is important for the authorization
server to include the identity of the intended recipients (the
audience), typically a single resource server (or a list of resource
servers), in the token.  Restricting the use of the token to a
specific scope is also RECOMMENDED.</t>
          <t><xref target="communication-security"/> provides information on
protecting against access token disclosure and on providing
confidentiality and integrity for the communications
among the client, resource server, and authorization server.</t>
        </section>
        <section anchor="summary-of-recommendations">
          <name>Summary of Recommendations</name>
          <section anchor="safeguard-bearer-tokens">
            <name>Safeguard Bearer Tokens</name>
            <t>Client implementations MUST ensure that
bearer tokens are not leaked to unintended parties, as those parties would
be able to use them to gain access to protected resources.  This
is the primary security consideration when using bearer tokens and
underlies all the more specific recommendations that follow.</t>
          </section>
          <section anchor="validate-tls-certificate-chains">
            <name>Validate TLS Certificate Chains</name>
            <t>The client MUST validate the TLS
certificate chain when making requests to protected resources.
Failing to do so may enable DNS hijacking attacks to steal the
token and gain unintended access.</t>
          </section>
          <section anchor="always-use-tls-https">
            <name>Always Use TLS (https)</name>
            <t>Clients MUST always use TLS
(https) or equivalent transport security when making requests with
bearer tokens.  Failing to do so exposes the token to numerous
attacks that could give attackers unintended access.</t>
          </section>
          <section anchor="dont-store-bearer-tokens-in-http-cookies">
            <name>Don't Store Bearer Tokens in HTTP Cookies</name>
            <t>Implementations MUST NOT store
bearer tokens within cookies that can be sent in the clear (which
is the default transmission mode for cookies).  Implementations
that do store bearer tokens in cookies MUST take precautions
against cross-site request forgery.</t>
          </section>
          <section anchor="issue-short-lived-bearer-tokens">
            <name>Issue Short-Lived Bearer Tokens</name>
            <t>Authorization servers SHOULD issue
short-lived bearer tokens, particularly when
issuing tokens to clients that run within a web browser or other
environments where information leakage may occur.  Using
short-lived bearer tokens can reduce the impact of their
leakage.</t>
          </section>
          <section anchor="issue-scoped-bearer-tokens">
            <name>Issue Scoped Bearer Tokens</name>
            <t>Authorization servers SHOULD issue bearer tokens
that contain an audience restriction, scoping their use to the
intended resource server or set of resource servers.</t>
          </section>
          <section anchor="dont-pass-bearer-tokens-in-page-urls">
            <name>Don't Pass Bearer Tokens in Page URLs</name>
            <t>Bearer tokens MUST NOT be
passed in page URLs (for example, as query string parameters).
Instead, bearer tokens SHOULD be passed in HTTP header fields or
message content for which confidentiality measures are taken.
Browsers, web servers, and other software may not adequately
secure URLs in the browser history, web server logs, and other
data structures.  If bearer tokens are passed in page URLs,
attackers might be able to steal them from the history data, logs,
or other unsecured locations.</t>
          </section>
        </section>
        <section anchor="access-token-privilege-restriction">
          <name>Access Token Privilege Restriction</name>
          <t>The client SHOULD request access tokens with the minimal scope
necessary.  The authorization server SHOULD take the client identity
into account when choosing how to honor the requested scope and MAY
issue an access token with fewer scopes than requested.</t>
          <t>The privileges associated with an access token SHOULD be restricted
to the minimum required for the particular application or use case.
This prevents clients from exceeding the privileges authorized by the
resource owner.  It also prevents users from exceeding their
privileges authorized by the respective security policy.  Privilege
restrictions also help to reduce the impact of access token leakage.</t>
          <t>In particular, access tokens SHOULD be restricted to certain resource
servers (audience restriction), preferably to a single resource
server.  To put this into effect, the authorization server associates
the access token with certain resource servers, and every resource
server is obliged to verify, for every request, whether the access
token sent with that request was meant to be used for that particular
resource server.  If not, the resource server MUST refuse to serve
the respective request.  Clients and authorization servers MAY
utilize the parameters <tt>scope</tt> or <tt>resource</tt> as specified in
this document and <xref target="RFC8707"/>, respectively, to
determine the resource server they want to access.</t>
          <t>Additionally, access tokens SHOULD be restricted to certain resources
and actions on resource servers or resources.  To put this into effect,
the authorization server associates the access token with the
respective resource and actions, and every resource server is obliged
to verify, for every request, whether the access token sent with that
request was meant to be used for that particular action on the
particular resource.  If not, the resource server MUST refuse to
serve the respective request.  Clients and authorization servers MAY
utilize the parameters <tt>scope</tt> and
<tt>authorization_details</tt> as specified in <xref target="RFC9396"/> to
determine those resources and/or actions.</t>
          <t>The privileges associated with an access token represent the
authorization granted to the client, and are not necessarily the only
factor in an access control decision.  A resource server may apply
additional authorization logic, such as evaluating the resource
owner's own permissions on a particular resource, and may deny a
request even when the access token carries the scopes required for it.
Access tokens may also convey authorization information beyond the
scope of access delegated to the client, such as roles or entitlements
of the resource owner.  Such mechanisms are out of scope for this
specification.</t>
        </section>
      </section>
      <section anchor="security-client-authentication">
        <name>Client Authentication</name>
        <t>Depending on the overall process of client registration and credential
lifecycle management, this may affect the confidence an authorization
server has in a particular client.</t>
        <t>For example, authentication of a dynamically registered client does not
prove the identity of the client; it only ensures that repeated requests
to the authorization server were made from the same client instance. Such
clients may be limited in terms of which scopes they are allowed to request,
or may have other limitations such as shorter token lifetimes.</t>
        <t>In contrast, if a registered application's developer has had their identity
verified and has signed a contract, and the application has been issued a client secret
that is only used in a secure backend service, the authorization
server might allow this client to request more sensitive scopes
or to be issued longer-lasting tokens.</t>
      </section>
      <section anchor="client-impersonation">
        <name>Client Impersonation</name>
        <t>If a confidential client has its credentials stolen,
a malicious client can impersonate the client and obtain access
to protected resources.</t>
        <t>The authorization server SHOULD require active resource owner
interaction and provide the resource owner with information about
the client and the requested authorization scope and lifetime.  It is
up to the resource owner to review the information in the context of
the current client and to authorize or deny the request.</t>
        <t>The authorization server SHOULD NOT process repeated authorization
requests automatically (without active resource owner interaction)
without authenticating the client or relying on other measures to
ensure that the repeated request comes from the original client and
not an impersonator.</t>
        <section anchor="native-app-client-impersonation">
          <name>Impersonation of Native Apps</name>
          <t>As stated above, the authorization
server SHOULD NOT process authorization requests automatically
without user consent or interaction, except when the identity of the
client can be assured.  This includes the case where the user has
previously approved an authorization request for a given client ID --
unless the identity of the client can be proven, the request SHOULD
be processed as if no previous request had been approved.</t>
          <t>Measures such as claimed <tt>https</tt> scheme redirects provide stronger
assurance than private-use URI schemes that the authorization response
is delivered to the intended app, and authorization servers may take
this into account when deciding whether to process a repeated
authorization request automatically. Such measures do not authenticate
the client, and do not make the client a confidential client. Some
operating systems may offer alternative platform-specific identity
features that may be used similarly, as appropriate.</t>
        </section>
        <section anchor="browser-based-application-impersonation">
          <name>Impersonation of Browser-Based Applications</name>
          <t>Authorization servers restrict redirect URIs to a fixed set of
URIs, preventing the use of wildcard domains, wildcard
paths, or wildcard query string components as described in <xref target="registration-requirements"/>.
When a client uses an absolute <tt>https</tt> URI as a redirect URI,
an exact match may be accepted by authorization servers as proof
of identity of a browser-based application for the purpose of deciding
whether to process an authorization request automatically when a previous
request for the same <tt>client_id</tt> has already been approved.</t>
        </section>
      </section>
      <section anchor="client-impersonating-resource-owner">
        <name>Client Impersonating Resource Owner</name>
        <t>Resource servers may make access control decisions based on the identity of a
resource owner for which an access token was issued, or based on the identity
of a client in the client credentials grant. If both options are possible,
depending on the details of the implementation, a client's identity may be
mistaken for the identity of a resource owner. For example, if a client is able
to choose its own <tt>client_id</tt> during registration with the authorization server,
a malicious client may set it to a value identifying an end-user (e.g., a <tt>sub</tt>
value if OpenID Connect is used). If the resource server cannot properly
distinguish between access tokens issued to clients and access tokens issued to
end-users, the client may then be able to access resources of the end-user.</t>
        <t>If the authorization server has a common namespace for client IDs and user
identifiers, causing the resource server to be unable to distinguish an access
token authorized by a resource owner from an access token authorized by a client
itself, authorization servers SHOULD NOT allow clients to influence their <tt>client_id</tt> or
any other claim if that can cause confusion with a genuine resource owner. Where
this cannot be avoided, authorization servers MUST provide other means for the
resource server to distinguish between the two types of access tokens.</t>
      </section>
      <section anchor="authorization-code-security-considerations">
        <name>Authorization Code Security Considerations</name>
        <section anchor="authorization_codes">
          <name>Authorization Code Injection</name>
          <t>Authorization code injection is an attack in which the client receives an authorization code from the attacker in its redirect URI instead of the authorization code from the legitimate authorization server. Without protections in place, there is no mechanism by which the client can know that the attack has taken place. Authorization code injection can lead to both the attacker obtaining access to a victim's account and a victim accidentally gaining access to the attacker's account.</t>
          <section anchor="countermeasures">
            <name>Countermeasures</name>
            <t>To prevent injection of authorization codes into the client, using <tt>code_challenge</tt> and
<tt>code_verifier</tt> is REQUIRED for clients, and authorization servers MUST enforce
their use, unless both of the following criteria are met:</t>
            <ul spacing="normal">
              <li>
                <t>The client is a confidential client.</t>
              </li>
              <li>
                <t>In the specific deployment and the specific request, there is reasonable
assurance by the authorization server that the client implements the OpenID
Connect <tt>nonce</tt> mechanism properly.</t>
              </li>
            </ul>
            <t>In this case, using and enforcing <tt>code_challenge</tt> and <tt>code_verifier</tt> is still RECOMMENDED.</t>
            <t>The <tt>code_challenge</tt> or OpenID Connect <tt>nonce</tt> value MUST be
transaction-specific and securely bound to the client and the user agent in
which the transaction was started. If a transaction leads to an error, fresh
values for <tt>code_challenge</tt> or <tt>nonce</tt> MUST be chosen.</t>
            <t>Relying on the client to validate the OpenID Connect <tt>nonce</tt> parameter
means the authorization server has no way to confirm that the client
has actually protected itself against authorization code injection attacks.
If an attacker is able to inject an authorization code into a client, the
client would still exchange the injected authorization code and obtain tokens, and
would only later reject the ID token after validating the <tt>nonce</tt> and seeing
that it doesn't match. In contrast, the authorization server enforcing the
<tt>code_challenge</tt> and <tt>code_verifier</tt> parameters provides stronger security,
since the authorization server is able to recognize the authorization code
injection attack preemptively and avoid issuing any tokens in the first place.</t>
            <t>Historical note: Although PKCE <xref target="RFC7636"/>
(where the <tt>code_challenge</tt> and <tt>code_verifier</tt> parameters were created)
was originally designed as a mechanism
to protect native apps from authorization code exfiltration attacks,
all kinds of OAuth clients, including web applications and other confidential clients,
are susceptible to authorization code injection attacks, which are addressed by
the <tt>code_challenge</tt> and <tt>code_verifier</tt> mechanism.</t>
          </section>
        </section>
        <section anchor="pkce-plain">
          <name>PKCE "plain" Code Challenge Method</name>
          <t>The <tt>plain</tt> code challenge method, defined in <xref target="RFC7636"/>, is explicitly forbidden
in OAuth 2.1. The <tt>plain</tt> method offers no protection against authorization code
interception by attackers who can read the authorization request
(Attacker A4 in <xref target="RFC9700"/>), as the code verifier is transmitted
in plaintext in the authorization request.</t>
          <t>Historical arguments for supporting the <tt>plain</tt> method (devices lacking cryptographic
hashing capabilities) are obsoleted by OAuth 2.1's requirement for TLS 1.2+,
which mandates SHA-256 support for certificate validation. Any device capable
of implementing OAuth 2.1 necessarily supports SHA-256.</t>
          <t>Authorization servers that support the <tt>plain</tt> code challenge method create an
unverifiable downgrade attack vector, as servers cannot distinguish legitimate
constrained clients from attacker-modified requests claiming to be constrained.</t>
          <t>Deployments with existing clients that cannot support <tt>S256</tt> SHOULD issue
extended-lifetime refresh tokens before discontinuing support for legacy
authorization methods, as the refresh token grant (<xref target="refreshing-an-access-token"/>)
does not require PKCE.</t>
        </section>
        <section anchor="authorization-code-reuse">
          <name>Reuse of Authorization Codes</name>
          <t>Several types of attacks are possible if authorization codes can be
used more than once.</t>
          <t>As described in <xref target="code-token-extension"/>, the authorization server must reject
a token request and revoke any issued tokens when receiving a second valid
request with an authorization code that has already been used to
issue an access token. If an attacker is able to exfiltrate an authorization code
and use it before the legitimate client, the attacker will obtain the access token
and the legitimate client will not. Revoking any issued tokens means the attacker's
tokens will then be revoked, stopping the attack from proceeding any further.</t>
          <t>However, the authorization server should only revoke issued tokens if the
request containing the authorization code is also valid, including any other parameters
such as the <tt>code_verifier</tt> and client authentication. The authorization server
SHOULD NOT revoke any issued tokens when receiving a replayed authorization code
that contains invalid parameters. If it were to do so, this would create a denial-of-service
opportunity for an attacker who is able to obtain an authorization code but
unable to obtain the client authentication or <tt>code_verifier</tt> by sending an invalid
authorization code request before the legitimate client and thereby revoking
the legitimate client's tokens once it makes the valid request.</t>
        </section>
        <section anchor="redirect_307">
          <name>307 (Temporary Redirect) Status Code</name>
          <t>An authorization server that redirects a request that potentially contains user
credentials MUST NOT use the 307 (Temporary Redirect) status code
(<xref section="15.4.8" sectionFormat="of" target="HTTP"/>) for
redirection.
If an HTTP redirection (and not, for example,
JavaScript) is used for such a request, the AS SHOULD use the 303
(See Other) status code.</t>
          <t>At the authorization endpoint, a typical protocol flow is that the AS
prompts the user to enter their credentials in a form that is then
submitted (using the POST method) back to the authorization
server.  The AS checks the credentials and, if successful, redirects
the user agent to the client's redirect URI.</t>
          <t>If the 307 status code were used for redirection, the user agent
would send the user credentials via a POST request to the client.</t>
          <t>This discloses the sensitive credentials to the client.  If the
client is malicious, it can use the credentials to impersonate
the user at the AS.</t>
          <t>The behavior might be unexpected for developers, but is defined in
<xref section="15.4.8" sectionFormat="of" target="HTTP"/>.  This status code does not require the user
agent to rewrite the POST request to a GET request and thereby drop
the form data in the POST request content.</t>
          <t>In HTTP <xref target="HTTP"/>, only the 303 status code
unambiguously enforces rewriting the HTTP POST request to an HTTP GET
request.  For all other status codes, including the popular 302 (Found), user
agents can opt not to rewrite POST to GET requests and therefore
reveal the user credentials to the client.  (In practice, however,
most user agents will only show this behavior for 307 redirects.)</t>
        </section>
      </section>
      <section anchor="ensuring-endpoint-authenticity">
        <name>Ensuring Endpoint Authenticity</name>
        <t>The risk related to man-in-the-middle attacks is mitigated by the
mandatory use of channel security mechanisms such as TLS (<xref target="TLS"/>)
for communicating with the authorization and token endpoints.
See <xref target="communication-security"/> for further details.</t>
      </section>
      <section anchor="credentials-guessing-attacks">
        <name>Credentials-Guessing Attacks</name>
        <t>The authorization server MUST prevent attackers from guessing access
tokens, authorization codes, refresh tokens, resource owner
passwords, and client credentials.</t>
        <t>The probability of an attacker guessing generated tokens (and other
credentials not intended for handling by end-users) MUST be less than
or equal to 2^(-128) and SHOULD be less than or equal to 2^(-160).</t>
        <t>The authorization server MUST utilize other means to protect
credentials intended for use by end-users.</t>
      </section>
      <section anchor="phishing-attacks">
        <name>Phishing Attacks</name>
        <t>Wide deployment of this and similar protocols may cause end-users to
become inured to the practice of being redirected to websites where
they are asked to enter their passwords.  If end-users are not
careful to verify the authenticity of these websites before entering
their credentials, it will be possible for attackers to exploit this
practice to steal resource owners' passwords and other phishable
credentials, such as OTPs.</t>
        <t>Service providers should attempt to educate end-users about the risks
phishing attacks pose and should provide mechanisms that make it easy
for end-users to confirm the authenticity of their sites, such as using
phishing-resistant authenticators, as phishing-resistant authenticators
will offer a credential to log in to a certain site to the user only if
the platform has successfully verified the site's origin. Client
developers should consider the security implications of how they
interact with the user agent (e.g., external, embedded), and the
ability of the end-user to verify the authenticity of the
authorization server.</t>
        <t>See <xref target="communication-security"/> for further details
on mitigating the risk of phishing attacks.</t>
      </section>
      <section anchor="consent-phishing">
        <name>Consent Phishing</name>
        <t>As authorization servers deploy phishing-resistant authentication
methods, attackers may pivot to targeting the authorization step
rather than the authentication step. In a consent phishing attack,
an attacker registers an attacker-controlled client with the
authorization server, crafts an authorization request with a <tt>scope</tt>
value targeting the victim's resources, and delivers the resulting
authorization endpoint URL to the victim through a phishing message.
Because the authorization request is processed by the legitimate
authorization server, the resource owner authenticates normally,
including through any phishing-resistant factors, and is then
presented with an authorization prompt that appears trustworthy.
If the resource owner grants the request, the attacker receives an
authorization code or access token granting access to the victim's
resources.</t>
        <t>Critically, phishing-resistant authenticators do not protect against
consent phishing. The resource owner successfully authenticates to
the legitimate authorization server. The attack exploits the
subsequent consent step, not the authentication step.</t>
        <t>Authorization servers SHOULD consider enforcing controls over client
registration, including restricting which scopes a given client is
permitted to request. Where possible, authorization servers SHOULD
verify the identity of client developers prior to granting access to
sensitive scopes.</t>
        <t>Authorization servers SHOULD present resource owners with clear and
meaningful information during the authorization prompt, including the
client name, the developer or organization that registered it, and
the specific scopes being requested, so that resource owners can make
an informed decision before granting access. In scenarios where client
pre-registration is not possible, such as when using Dynamic Client Registration <xref target="RFC7591"/>,
or when the client metadata may be provided by an outside party
such as when using a Client ID Metadata Document <xref target="I-D.ietf-oauth-client-id-metadata-document"/>,
authorization servers SHOULD take additional measures to verify that the
user understands the client they are authorizing.</t>
        <t>Authorization servers SHOULD allow administrators and resource owners
to view the set of clients that have been granted access to their
resources and to revoke those grants (see <xref target="RFC7009"/>), thereby
limiting the window of exposure if a resource owner is deceived into
approving a malicious authorization request.</t>
      </section>
      <section anchor="csrf_countermeasures">
        <name>Cross-Site Request Forgery</name>
        <t>An attacker might attempt to inject a request to the redirect URI of
the legitimate client on the victim's device, e.g., to cause the
client to access resources under the attacker's control. This is a
variant of an attack known as Cross-Site Request Forgery (CSRF).</t>
        <t>The traditional countermeasure is that clients pass a random value, also
known as a CSRF token, in the <tt>state</tt> parameter that links the request to
the redirect URI to the user agent session. This
countermeasure is described in detail in <xref section="5.3.5" sectionFormat="of" target="RFC6819"/>. The
same protection is provided by the <tt>code_verifier</tt> parameter or the
OpenID Connect <tt>nonce</tt> value.</t>
        <t>When using <tt>code_verifier</tt> instead of <tt>state</tt> or <tt>nonce</tt> for CSRF protection, it is
important to note that:</t>
        <ul spacing="normal">
          <li>
            <t>Clients MUST ensure that the AS supports the <tt>code_challenge_method</tt>
intended to be used by the client. If an authorization server does not support the requested method,
<tt>state</tt> or <tt>nonce</tt> MUST be used for CSRF protection instead.</t>
          </li>
          <li>
            <t>If <tt>state</tt> is used for carrying application state, and the integrity of
its contents is a concern, clients MUST protect <tt>state</tt> against
tampering and swapping. This can be achieved by binding the
contents of <tt>state</tt> to the browser session and/or using signed or encrypted
state values <xref target="I-D.bradley-oauth-jwt-encoded-state"/>.</t>
          </li>
        </ul>
        <t>The AS therefore MUST provide a way to detect its supported code challenge methods,
either via AS metadata according to <xref target="RFC8414"/> or via a
deployment-specific way to ensure or determine support.</t>
      </section>
      <section anchor="clickjacking">
        <name>Clickjacking</name>
        <t>As described in <xref section="4.4.1.9" sectionFormat="of" target="RFC6819"/>, the authorization
request is susceptible to clickjacking attacks, also called user
interface redressing. In such an attack, an attacker embeds the
authorization endpoint user interface in an innocuous context.
A user who believes they are interacting with that context, for example,
by clicking on buttons, inadvertently interacts with the authorization
endpoint user interface instead. The opposite can be achieved as
well: a user who believes they are interacting with the authorization endpoint
might inadvertently type a password into an attacker-provided
input field overlaid on the original user interface. Clickjacking
attacks can be designed such that users can hardly notice the attack,
for example, by using almost invisible iframes overlaid on top of
other elements.</t>
        <t>An attacker can use this vector to obtain the user's authentication
credentials, change the scope of access granted to the client,
and potentially access the user's resources.</t>
        <t>Authorization servers MUST prevent clickjacking attacks. Multiple
countermeasures are described in <xref target="RFC6819"/>, including the use of the
X-Frame-Options response header field <xref target="RFC7034"/> and frame-busting
JavaScript. In addition to those, authorization servers SHOULD also
use Content Security Policy (CSP) level 2 <xref target="CSP-2"/> or greater.</t>
        <t>To be effective, CSP must be used on the authorization endpoint and,
if applicable, other endpoints used to authenticate the user and
authorize the client (e.g., the device authorization endpoint, login
pages, error pages, etc.). This prevents framing by unauthorized
origins in user agents that support CSP. The client MAY permit being
framed by an origin other than the one used in its redirection
endpoint. For this reason, authorization servers SHOULD allow
administrators to configure allowed origins for particular clients
and/or for clients to register these dynamically.</t>
        <t>Using CSP allows authorization servers to specify multiple origins in
a single response header field and to constrain these using flexible
patterns (see <xref target="CSP-2"/> for details). Level 2 of this standard provides
a robust mechanism for protecting against clickjacking by using
policies that restrict the origin of frames (using <tt>frame-ancestors</tt>)
together with those that restrict the sources of scripts allowed to
execute on an HTML page (by using <tt>script-src</tt>). A non-normative
example of such a policy is shown in the following listing:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: text/html
Content-Security-Policy: frame-ancestors https://ext.example.org:8000
Content-Security-Policy: script-src 'self'
X-Frame-Options: ALLOW-FROM https://ext.example.org:8000

[ content ]
]]></sourcecode>
        <t>Because some user agents do not support <xref target="CSP-2"/>, this technique
SHOULD be combined with others, including those described in
<xref target="RFC6819"/>, unless such legacy user agents are explicitly unsupported
by the authorization server. Even in such cases, additional
countermeasures SHOULD still be employed.</t>
      </section>
      <section anchor="injection-and-input-validation">
        <name>Injection and Input Validation</name>
        <t>An injection attack occurs when an input or otherwise external
variable is used by an application unsanitized and causes
modification to the application logic.  This may allow an attacker to
gain access to the application device or its data, cause denial of
service, or introduce a wide range of malicious side effects.</t>
        <t>The authorization server and client MUST treat parameters received
as potentially malicious external input and apply appropriate protections,
in particular, the access token, and values of the the <tt>state</tt> and <tt>redirect_uri</tt> parameters.</t>
      </section>
      <section anchor="open-redirectors">
        <name>Open Redirection</name>
        <t>An open redirector is an endpoint that forwards a user's browser
to an arbitrary URI obtained from a query parameter.
Such endpoints are sometimes implemented, for example, to show a
message before a user is then redirected to an external website,
or to redirect users back to a URL they were intending to visit
before being interrupted, e.g., by a login prompt.</t>
        <t>The following attacks can occur when an AS or client has an open
redirector.</t>
        <section anchor="open_redirector_on_client">
          <name>Client as Open Redirector</name>
          <t>Clients MUST NOT expose open redirectors. Attackers may use open
redirectors to produce URLs pointing to the client and utilize them to
exfiltrate authorization codes, as described in
<xref section="4.1.1" sectionFormat="of" target="RFC9700"/>.
Another abuse case is to produce URLs that appear to point to the client.
This might trick users into trusting the URL and following it in their browser.
This can be abused for phishing.</t>
          <t>In order to prevent open redirection, clients should only redirect if
the target URLs are included in an allowlist or if the origin and integrity of a
request can be authenticated. Countermeasures against open redirection
are described by OWASP <xref target="owasp_redir"/>.</t>
        </section>
        <section anchor="authorization-server-as-open-redirector">
          <name>Authorization Server as Open Redirector</name>
          <t>Just as with clients, attackers could try to utilize a user's trust in
the authorization server (and its URL in particular) for performing
phishing attacks. OAuth authorization servers regularly redirect users
to other websites (the clients), but must do so safely.</t>
          <t><xref target="authorization-code-error-response"/> already prevents open redirects by
stating that the authorization server MUST NOT automatically redirect the user agent in the case
of an invalid combination of <tt>client_id</tt> and <tt>redirect_uri</tt>.</t>
          <t>However, an attacker could also utilize a correctly registered
redirect URI to perform phishing attacks. The attacker could, for
example, register a client via Dynamic Client Registration <xref target="RFC7591"/>
and execute one of the following attacks:</t>
          <ol spacing="normal" type="1"><li>
              <t>Intentionally send an erroneous authorization request, e.g., by
 using an invalid scope value, thus instructing the authorization server to redirect the
 user agent to its phishing site.</t>
            </li>
            <li>
              <t>Intentionally send a valid authorization request with <tt>client_id</tt>
 and <tt>redirect_uri</tt> controlled by the attacker. After the user authenticates,
 the authorization server prompts the user to provide consent to the request. If the user
 notices an issue with the request and declines the request, the authorization server still
 redirects the user agent to the phishing site. In this case, the user agent
 will be redirected to the phishing site regardless of the action taken by
 the user.</t>
            </li>
            <li>
              <t>Intentionally send a valid silent authentication request (<tt>prompt=none</tt>)
 with <tt>client_id</tt> and <tt>redirect_uri</tt> controlled by the attacker. In this case,
 the authorization server will automatically redirect the user agent to the phishing site.</t>
            </li>
          </ol>
          <t>The authorization server MUST take precautions to prevent these threats. The authorization server MUST always
authenticate the user first and, with the exception of the silent authentication
use case, prompt the user for credentials when needed, before redirecting the
user. Based on its risk assessment, the authorization server needs to decide whether it can trust
the redirect URI or not. It could take into account URI analytics done
internally or through some external service to evaluate the credibility and
trustworthiness of the content behind the URI, and the source of the redirect URI and
other client data.</t>
          <t>The authorization server SHOULD only automatically redirect the user agent if it trusts the
redirect URI.  If the URI is not trusted, the authorization server MAY inform the user and rely on
the user to make the correct decision.</t>
        </section>
      </section>
      <section anchor="transport-security">
        <name>Transport Security</name>
        <t>In some deployments, including those utilizing load balancers,
the TLS connection to the resource server terminates prior to the actual
server that provides the resource. This could leave the token
unprotected between the front-end server where the TLS connection
terminates and the back-end server that provides the resource. In
such deployments, sufficient measures MUST be employed to ensure
confidentiality of the access token between the front-end and
back-end servers; encryption of the token is one such possible measure.</t>
        <t>See <xref section="17.2" sectionFormat="of" target="HTTP"/> for further information.</t>
      </section>
      <section anchor="mix-up">
        <name>Authorization Server Mix-Up Mitigation</name>
        <t>Mix-up is an attack on scenarios where an OAuth client interacts with
two or more authorization servers and at least one authorization
server is under the control of the attacker. This can be the case,
for example, if the attacker uses dynamic registration to register the
client at their own authorization server or if an authorization server
becomes compromised.</t>
        <t>When an OAuth client can only interact with one authorization server, a mix-up
defense is not required. In scenarios where an OAuth client interacts with two
or more authorization servers, however, clients MUST prevent mix-up attacks. Two
different methods are discussed in the following sections.</t>
        <t>For both defenses, clients MUST store, for each authorization request, the
issuer to which they sent the authorization request, bind this information to the
user agent, and check that the authorization response was received from the
correct issuer. Clients MUST ensure that the subsequent access token request,
if applicable, is sent to the same issuer. The issuer serves, via the associated
metadata, as an abstract identifier for the combination of the authorization
endpoint and token endpoint that are to be used in the flow. If an issuer identifier
is not available, for example, if neither OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/>
nor OpenID Connect Discovery <xref target="OpenID.Discovery"/> is used, a different unique identifier
for this tuple or the tuple itself can be used instead. For brevity of presentation,
such a deployment-specific identifier will be subsumed under the issuer (or
issuer identifier) in the following.</t>
        <t>Note: Just storing the authorization server URL is not sufficient to identify
mix-up attacks. An attacker might declare an uncompromised AS's authorization endpoint URL as
"their" AS URL, but declare a token endpoint under their own control.</t>
        <t>See <xref section="4.4" sectionFormat="of" target="RFC9700"/> for a detailed description
of several types of mix-up attacks.</t>
        <section anchor="mix-up-defense-via-issuer-identification">
          <name>Mix-Up Defense via Issuer Identification</name>
          <t>This defense requires that the client compare the issuer identifier value that
the authorization server sends in the authorization response to the client in the <tt>iss</tt>
parameter as described in <xref target="authorization-response"/>. When receiving the authorization
response, the client MUST compare the received issuer identifier to the stored
issuer identifier. If there is a mismatch, the client MUST abort the
interaction. The <tt>iss</tt> value MUST be evaluated according to <xref target="RFC9207"/>.</t>
          <t>While this defense may require using an additional parameter to transport the
issuer information, it is a robust and relatively simple defense against mix-up.</t>
        </section>
        <section anchor="mix-up-defense-via-distinct-redirect-uris">
          <name>Mix-Up Defense via Distinct Redirect URIs</name>
          <t>For this defense, clients MUST use a distinct redirect URI for each issuer
they interact with.</t>
          <t>Clients MUST check that the authorization response was received from the correct
issuer by comparing the distinct redirect URI for the issuer to the URI at which
the authorization response was received. If there is a mismatch, the client
MUST abort the flow.</t>
          <t>While this defense builds upon existing OAuth functionality, it cannot be used
in scenarios where clients only register once for the use of many different
issuers (as in some open banking schemes), and, due to the tight integration with
the client registration, it is harder to deploy automatically.</t>
          <t>Furthermore, an attacker might be able to circumvent the protection offered by
this defense by registering a new client with the "honest" AS using the redirect
URI that the client assigned to the attacker's AS. The attacker could then run
the attack as described above, replacing the
client ID with the client ID of their newly created client.</t>
          <t>This defense SHOULD therefore only be used if other options are not available.</t>
        </section>
      </section>
    </section>
    <section anchor="native-applications">
      <name>Native Applications</name>
      <t>Native applications are clients installed and executed on the device
used by the resource owner (e.g., desktop applications or native mobile
applications).  Native applications require special consideration
related to security, platform capabilities, and overall end-user
experience.</t>
      <t>The guidance in this section is primarily in the context of native mobile apps
as opposed to desktop apps. The native mobile platforms have matured
more than the desktop platforms in terms of the capabilities provided
to app developers relevant to the OAuth flows described here. While
the guidance is primarily focused on mobile apps, much of it can generally
apply to desktop apps as well.</t>
      <t>The authorization endpoint requires interaction between the client
and the resource owner's user agent. The best current practice is to
perform the OAuth authorization request in an external user agent
(typically the browser) rather than an embedded user agent (such as
one implemented with web-views).</t>
      <t>The native application can capture the
response from the authorization server in several different ways, each with
different security properties. For example, using a redirect URI
with an "app-claimed URL" or custom URL scheme
registered with the operating system to invoke the
client as the handler, manual copy-and-paste of the credentials,
running a local web server, installing a user agent extension, or
providing a redirect URI identifying a server-hosted
resource under the client's control, which in turn makes the
response available to the native application.</t>
      <t>Previously, it was common for native apps to use embedded user agents
(commonly implemented with web-views) for OAuth authorization
requests.  That approach has many drawbacks, including the host app
being able to copy user credentials and cookies as well as the user
needing to authenticate from scratch in each app.  See <xref target="native-apps-embedded-user-agents"/>
for a deeper analysis of the drawbacks of using embedded user agents
for OAuth.</t>
      <t>Native app authorization requests that use the system browser are more
secure and can take advantage of the user's authentication state on the device.
Being able to use the existing authentication session in the browser
enables single sign-on, as users don't need to authenticate to the
authorization server each time they use a new app (unless required by
the authorization server policy).</t>
      <t>Supporting authorization flows between a native app and the browser
is possible without changing the OAuth protocol itself, as the OAuth
authorization request and response are already defined in terms of
URIs.  This encompasses URIs that can be used for inter-app
communication.  Some OAuth server implementations that assume all
clients are confidential web clients will need to add an
understanding of public native app clients and the types of redirect
URIs they use to support these recommendations.</t>
      <section anchor="client-authentication-of-native-apps">
        <name>Client Authentication of Native Apps</name>
        <t>Secrets that are statically included as part of an app distributed to
multiple users are not confidential secrets, as one
user may inspect their copy and learn the shared secret.  For this
reason, authorization servers MUST NOT require client
authentication of native app clients using a shared secret,
as doing so serves no purpose beyond client identification, which is
already provided by the <tt>client_id</tt> request parameter.</t>
        <t>Authorization servers that still require a statically included shared
secret for native app clients MUST treat the client as a public
client (as defined in <xref target="client-types"/>) and not
accept the secret as proof of the client's identity.  Without
additional measures, such clients are subject to client impersonation
(see <xref target="native-app-client-impersonation"/>).</t>
        <section anchor="native-app-registration">
          <name>Registration of Native App Clients</name>
          <t>Except when using a mechanism like Dynamic Client Registration
<xref target="RFC7591"/> to provision per-instance credentials, native apps are
classified as public clients, as defined in <xref target="client-types"/>,
and MUST be registered with the authorization server as
such.  Authorization servers MUST record the client type in the
client registration details in order to identify and process requests
accordingly.</t>
        </section>
        <section anchor="native-app-attestation">
          <name>Native App Attestation</name>
          <t>The draft specification <xref target="I-D.ietf-oauth-attestation-based-client-auth"/>
defines a mechanism that can be used by a native app to obtain
a key-bound attestation to authenticate to an authorization server or
resource server. This can provide a higher level of assurance of
a mobile app's identity.</t>
        </section>
      </section>
      <section anchor="using-inter-app-uri-communication-for-oauth-in-native-apps">
        <name>Using Inter-App URI Communication for OAuth in Native Apps</name>
        <t>Just as URIs are used for OAuth on the web to initiate
the authorization request and return the authorization response to
the requesting website, URIs can be used by native apps to initiate
the authorization request in the device's browser and return the
response to the requesting native app.</t>
        <t>By adopting the same methods used on the web for OAuth, benefits seen
in the web context, such as the usability of a single sign-on session and
the security of a separate authentication context are likewise gained
in the native app context.  Reusing the same approach also reduces
the implementation complexity and increases interoperability by
relying on standards-based web flows that are not specific to a
particular platform.</t>
        <t>Native apps MUST use an external
user agent to perform OAuth authorization requests.  This is achieved
by opening the authorization request in the browser (detailed in
<xref target="authorization-request-native-app"/>) and using a redirect URI that will return the
authorization response to the native app (defined in <xref target="authorization-response-native-app"/>).</t>
      </section>
      <section anchor="authorization-request-native-app">
        <name>Initiating the Authorization Request from a Native App</name>
        <t>Native apps needing user authorization create an authorization
request URL with the authorization code grant type per <xref target="authorization-code-grant"/>
using a redirect URI capable of being received by the native app.</t>
        <t>The function of the redirect URI for a native app authorization
request is similar to that of a web-based authorization request.
Rather than returning the authorization response to the OAuth
client's server, the redirect URI used by a native app returns the
response to the app.  Several options for a redirect URI that will
return the authorization response to the native app in different
platforms are documented in <xref target="authorization-response-native-app"/>.  Any redirect URI that allows
the app to receive the URI and inspect its parameters is viable.</t>
        <t>After constructing the authorization request URL, the app uses
platform-specific APIs to open the URL in an external user agent.
Typically, the external user agent used is the default browser, that
is, the application configured for handling <tt>http</tt> and <tt>https</tt> scheme
URIs on the system; however, different browser selection criteria and
other categories of external user agents MAY be used.</t>
        <t>This specification focuses on the browser as the RECOMMENDED external
user agent for native apps.  An external user agent designed
specifically for user authorization and capable of processing
authorization requests and responses like a browser MAY also be used.
Other external user agents, such as a native app provided by the
authorization server, may meet the criteria set out in this
specification, including using the same redirect URI properties, but
their use is out of scope for this specification.</t>
        <t>Some platforms support a browser feature known as "in-app browser
tabs", where an app can present a tab of the browser within the app
context without switching apps, but still retain key benefits of the
browser such as a shared authentication state and security context.
On platforms where they are supported, it is RECOMMENDED, for
usability reasons, that apps use in-app browser tabs for the
authorization request.</t>
      </section>
      <section anchor="authorization-response-native-app">
        <name>Receiving the Authorization Response in a Native App</name>
        <t>There are several redirect URI options available to native apps for
receiving the authorization response from the browser, the
availability and user experience of which vary by platform.</t>
        <section anchor="claimed-https-scheme-uri-redirection">
          <name>Claimed "https" Scheme URI Redirection</name>
          <t>Some operating systems, in particular mobile operating systems, allow apps to claim <tt>https</tt> URIs
(see <xref section="4.2.2" sectionFormat="of" target="HTTP"/>)
in the domains they control.  When the browser encounters a
claimed URI, instead of the page being loaded in the browser, the
native app is launched with the URI supplied as a launch parameter.</t>
          <t>Such URIs can be used as redirect URIs by native apps.  They are
indistinguishable to the authorization server from a regular
web-based client redirect URI.  An example is:</t>
          <artwork><![CDATA[
https://app.example.com/oauth2redirect/example-provider
]]></artwork>
          <t>As the redirect URI alone is not enough to distinguish public native
app clients from confidential web clients, it is REQUIRED in
<xref target="native-app-registration"/> that the client type be recorded during client
registration to enable the server to determine the client type and
act accordingly.</t>
          <t>App-claimed <tt>https</tt> scheme redirect URIs have some advantages
compared to other native app redirect options in that the identity of
the destination app is guaranteed to the authorization server by the
operating system.  For this reason, native apps SHOULD use them over
the other options where possible.</t>
        </section>
        <section anchor="loopback-interface-redirection">
          <name>Loopback Interface Redirection</name>
          <t>Native apps that are able to open a port on the loopback network
interface without needing special permissions (typically, those on
desktop operating systems) can use the loopback interface to receive
the OAuth redirect.</t>
          <t>Loopback redirect URIs use the <tt>http</tt> scheme and are constructed with
the loopback IP literal and whatever port the client is listening on.</t>
          <t>That is, <tt>http://127.0.0.1:{port}/{path}</tt> for IPv4, and
<tt>http://[::1]:{port}/{path}</tt> for IPv6.  An example redirect using the
IPv4 loopback interface with a randomly assigned port:</t>
          <artwork><![CDATA[
http://127.0.0.1:51004/oauth2redirect/example-provider
]]></artwork>
          <t>An example redirect using the IPv6 loopback interface with a randomly
assigned port:</t>
          <artwork><![CDATA[
http://[::1]:61023/oauth2redirect/example-provider
]]></artwork>
          <t>While redirect URIs using the name <tt>localhost</tt> (i.e.,
<tt>http://localhost:{port}/{path}</tt>) function similarly to loopback IP
redirects, the use of <tt>localhost</tt> is NOT RECOMMENDED.  Specifying a
redirect URI with the loopback IP literal
rather than <tt>localhost</tt> avoids inadvertently listening on network
interfaces other than the loopback interface.  It is also less
susceptible to client-side firewalls and misconfigured host name
resolution on the user's device.</t>
          <t>The authorization server MUST allow any port to be specified at the
time of the request for loopback IP redirect URIs, to accommodate
clients that obtain an available ephemeral port from the operating
system at the time of the request.</t>
          <t>Loopback interface redirect URIs may be susceptible to interception by
other apps accessing the same loopback interface on some operating
systems.</t>
          <t>Clients SHOULD NOT assume that the device supports a particular
version of the Internet Protocol.  It is RECOMMENDED that clients
attempt to bind to the loopback interface using both IPv4 and IPv6
and use whichever is available.</t>
        </section>
        <section anchor="private-use-uri-scheme">
          <name>Private-Use URI Scheme Redirection</name>
          <t>Many mobile and desktop computing platforms support inter-app
communication via URIs by allowing apps to register private-use URI
schemes (sometimes colloquially referred to as "custom URL schemes")
like <tt>com.example.app</tt>.  When the browser or another app attempts to
load a URI with a private-use URI scheme, the app that registered it
is launched to handle the request.</t>
          <t>Many environments that support private-use URI schemes do not provide
a mechanism to claim a scheme and prevent other parties from using
another application's scheme. As such, clients using private-use URI
schemes are vulnerable to potential attacks on their redirect URIs,
so this option should only be used if the previously mentioned more
secure options are not available.</t>
          <t>To perform an authorization request with a private-use URI
scheme redirect, the native app launches the browser with a standard
authorization request, but one where the redirect URI utilizes a
private-use URI scheme it registered with the operating system.</t>
          <t>When choosing a URI scheme to associate with the app, apps MUST use a
URI scheme based on a domain name under their control, expressed in
reverse order, as recommended by <xref section="3.8" sectionFormat="of" target="RFC7595"/> for
private-use URI schemes.</t>
          <t>For example, an app that controls the domain name <tt>app.example.com</tt>
can use <tt>com.example.app</tt> as its scheme.  Some authorization
servers assign client identifiers based on domain names, for example,
<tt>client1234.usercontent.example.net</tt>, which can also be used as the
domain name for the scheme when reversed in the same manner.  A
scheme such as <tt>myapp</tt>, however, would not meet this requirement, as
it is not based on a domain name.</t>
          <t>When there are multiple apps by the same publisher, care must be
taken so that each scheme is unique within that group.  On platforms
that use app identifiers based on reverse-order domain names, those
identifiers can be reused as the private-use URI scheme for the OAuth
redirect to help avoid this problem.</t>
          <t>Following the requirements of <xref section="3.2" sectionFormat="of" target="RFC3986"/>, as there is
no naming authority for private-use URI scheme redirects, only a
single slash (<tt>/</tt>) appears after the scheme component.  A complete
example of a redirect URI utilizing a private-use URI scheme is:</t>
          <artwork><![CDATA[
com.example.app:/oauth2redirect/example-provider
]]></artwork>
          <t>When the authorization server completes the request, it redirects to
the client's redirect URI as it would normally.  As the
redirect URI uses a private-use URI scheme, it results in the
operating system launching the native app, passing in the URI as a
launch parameter.  Then, the native app uses normal processing for
the authorization response.</t>
        </section>
      </section>
      <section anchor="security-considerations-in-native-apps">
        <name>Security Considerations in Native Apps</name>
        <section anchor="native-apps-embedded-user-agents">
          <name>Embedded User Agents in Native Apps</name>
          <t>Embedded user agents are a technically possible method for authorizing native
apps.  These embedded user agents are unsafe for use by third parties
to the authorization server by definition, as the app that hosts the
embedded user agent can access the user's full authentication
credentials, not just the OAuth authorization grant that was intended
for the app. They are also typically sandboxed by the operating system,
and mechanisms such as WebAuthn that rely on the web origin are disabled.</t>
          <t>In typical web-view-based implementations of embedded user agents,
the host application can record every keystroke entered in the login
form to capture usernames and passwords, automatically submit forms
to bypass user consent, and copy session cookies and use them to
perform authenticated actions as the user.</t>
          <t>Even when used by trusted apps belonging to the same party as the
authorization server, embedded user agents violate the principle of
least privilege by having access to more powerful credentials than
they need, potentially increasing the attack surface.</t>
          <t>Encouraging users to enter credentials in an embedded user agent
without the usual address bar and visible certificate validation
features that browsers have makes it impossible for the user to know
if they are signing in to the legitimate site; even when they are, it
trains them that it's OK to enter credentials without validating the
site first.</t>
          <t>Aside from the security concerns, embedded user agents do not share
the authentication state with other apps or the browser, requiring
the user to log in for every authorization request, which is often
considered an inferior user experience.</t>
        </section>
        <section anchor="fake-external-user-agents-in-native-apps">
          <name>Fake External User Agents in Native Apps</name>
          <t>The native app that is initiating the authorization request has a
large degree of control over the user interface and can potentially
present a fake external user agent, that is, an embedded user agent
made to appear as an external user agent.</t>
          <t>When all good actors are using external user agents, the advantage is
that it is possible for security experts to detect bad actors, as
anyone faking an external user agent is provably bad.  On the other
hand, if good and bad actors alike are using embedded user agents,
bad actors don't need to fake anything, making them harder to detect.
Once a malicious app is detected, it may be possible to use this
knowledge to block the app's signature in malware scanning
software, take removal action (in the case of apps distributed by app
stores), and take other steps to reduce the impact and spread of the
malicious app.</t>
          <t>Authorization servers can also directly protect against fake external
user agents by requiring an authentication factor only available to
true external user agents.</t>
          <t>Users who are particularly concerned about their security when using
in-app browser tabs may also take the additional step of opening the
request in the full browser from the in-app browser tab and completing
the authorization there, as most implementations of the in-app
browser tab pattern offer such functionality.</t>
        </section>
        <section anchor="malicious-external-user-agents-in-native-apps">
          <name>Malicious External User Agents in Native Apps</name>
          <t>If a malicious app is able to configure itself as the default handler
for <tt>https</tt> scheme URIs in the operating system, it will be able to
intercept authorization requests that use the default browser and
abuse this position of trust for malicious ends such as phishing the
user.</t>
          <t>This attack is not confined to OAuth; a malicious app configured in
this way would present a general and ongoing risk to the user beyond
OAuth usage by native apps.  Many operating systems mitigate this
issue by requiring an explicit user action to change the default
handler for <tt>http</tt> and <tt>https</tt> scheme URIs.</t>
        </section>
        <section anchor="loopback-native-apps">
          <name>Loopback Redirect Considerations in Native Apps</name>
          <t>Loopback interface redirect URIs MAY use the <tt>http</tt> scheme (i.e., without
TLS).  This is acceptable for loopback
interface redirect URIs as the HTTP request never leaves the device.</t>
          <t>Clients SHOULD open the network port only when starting the
authorization request and close it once the response is returned.</t>
          <t>Clients SHOULD listen on the loopback network interface only, in
order to avoid interference by other network actors.</t>
          <t>Clients SHOULD use loopback IP literals rather than the string <tt>localhost</tt>
as described in <xref target="loopback-interface-redirection"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="browser-based-apps">
      <name>Browser-Based Applications</name>
      <t>Browser-based applications are clients that run in a web browser, typically
written in JavaScript, also known as "single-page apps". Because the
application's code is delivered to and executed within the user agent,
any code running in the application's origin has access to the same
data and APIs as the application itself. These types of apps
have particular security considerations similar to native apps.</t>
      <t>There are three architecture patterns available when building a
browser-based application that uses OAuth to access protected resources,
presented here in decreasing order of security:</t>
      <ul spacing="normal">
        <li>
          <t>the app relies on a backend component to handle all OAuth
responsibilities and forwards all resource requests through that
backend component, known as a "Backend for Frontend" or "BFF"
(<xref target="browser-based-apps-bff"/>)</t>
        </li>
        <li>
          <t>the app relies on a backend component to handle all OAuth
responsibilities but calls resource servers directly using the access
token, known as a "token-mediating backend"
(<xref target="browser-based-apps-token-mediating-backend"/>)</t>
        </li>
        <li>
          <t>the app is itself the OAuth client, handling all OAuth
responsibilities in the browser (<xref target="browser-based-oauth-clients"/>)</t>
        </li>
      </ul>
      <t>Each pattern offers a different trade-off between security and
simplicity. See <xref target="RFC10017"/> for the threat model of malicious
JavaScript, a detailed analysis of which attacks each pattern does and
does not withstand, and sequence diagrams of each pattern.</t>
      <t>Browser-based applications MUST use the authorization code grant
(<xref target="authorization-code-grant"/>) to obtain an access token. The Implicit
grant and the Resource Owner Password Credentials grant, both of which
were historically used by browser-based applications, are not defined in this
specification and MUST NOT be used, as described in
<xref target="oauth-2-0-differences"/>.</t>
      <section anchor="browser-based-apps-bff">
        <name>Backend for Frontend</name>
        <t>In this pattern, a backend component becomes the OAuth client for the
browser-based application. The backend component obtains and manages tokens in
the context of a cookie-based session with the browser, and forwards
every resource request to the resource server after augmenting it with
the appropriate access token. No tokens are exposed to the browser.</t>
        <t>The BFF MUST act as a confidential client (<xref target="client-types"/>) by
establishing credentials with the authorization server, and MUST use the
authorization code grant (<xref target="authorization-code-grant"/>) to obtain an
access token.</t>
        <t>See <xref section="6.1" sectionFormat="of" target="RFC10017"/> for the cookie security, Cross-Site
Request Forgery, and proxy restriction requirements that apply to the
BFF's interactions with the browser-based application.</t>
      </section>
      <section anchor="browser-based-apps-token-mediating-backend">
        <name>Token-Mediating Backend</name>
        <t>In this pattern, a backend component becomes the OAuth client for the
browser-based application and manages the refresh token in the context of a
cookie-based session, but passes the access token to the browser-based
app, which calls resource servers directly.</t>
        <t>The token-mediating backend MUST act as a confidential client
(<xref target="client-types"/>) and MUST use the authorization code grant
(<xref target="authorization-code-grant"/>) to obtain an access token.</t>
        <t>See <xref section="6.2" sectionFormat="of" target="RFC10017"/> for the cookie security, Cross-Site
Request Forgery, and access token scope requirements that apply to the
token-mediating backend's interactions with the browser-based application.</t>
      </section>
      <section anchor="browser-based-oauth-clients">
        <name>Browser-Based OAuth Clients</name>
        <t>A browser-based application acting as the OAuth client itself is a public
client, as defined in <xref target="client-types"/>, and MUST be registered with the
authorization server as such. In addition to the requirements that apply
to all clients using the authorization code grant, in particular PKCE
(<xref target="authorization-code-grant"/>), exact matching of registered redirect
URIs (<xref target="redirection-endpoint"/>), and defenses against Cross-Site Request
Forgery attacks on the redirect URI (<xref target="csrf_countermeasures"/>), the
requirements in this section apply.</t>
        <section anchor="client-authentication-of-browser-based-applications">
          <name>Client Authentication of Browser-Based Applications</name>
          <t>Because a browser-based application's source code is delivered to the end user's
browser, it cannot contain provisioned secrets. Secrets that are
statically included as part of an application distributed to multiple users are
not confidential secrets, as one user may inspect their copy and learn the
shared secret. For this reason, authorization servers MUST NOT require
client authentication of browser-based applications using a shared secret,
as this serves no value beyond client identification which is already
provided by the <tt>client_id</tt> request parameter.</t>
          <t>Authorization servers that still require a statically included shared
secret for browser-based applications MUST treat the client as a public
client (as defined in <xref target="client-types"/>), and not accept the secret as
proof of the client's identity. Without additional measures, such clients
are subject to client impersonation
(see <xref target="browser-based-application-impersonation"/>).</t>
        </section>
        <section anchor="browser-based-apps-refresh-tokens">
          <name>Refresh Tokens for Browser-Based Applications</name>
          <t>For browser-based applications, the refresh token is a bearer token unless the
app uses a mechanism such as DPoP <xref target="RFC9449"/>. As a result, the risk of a
leaked refresh token is greater than that of a leaked access token, since
an attacker may be able to continue using the stolen refresh token to
obtain new access tokens without being detected by the authorization
server.</t>
          <t>Refresh tokens issued to browser-based applications are subject to the
requirements in <xref target="refresh-token-endpoint-extension"/>. In addition,
authorization servers issuing refresh tokens to browser-based applications:</t>
          <ul spacing="normal">
            <li>
              <t>MUST either set a maximum lifetime on the refresh token, or expire the
refresh token if it has not been used within some amount of time</t>
            </li>
            <li>
              <t>MUST NOT, when issuing a rotated refresh token, extend the lifetime of
the new refresh token beyond the lifetime of the initial refresh token,
if the initial refresh token had a pre-established expiration time</t>
            </li>
          </ul>
          <t>Limiting the overall refresh token lifetime to the lifetime of the
initial refresh token ensures a stolen refresh token cannot be used
indefinitely. See <xref section="6.3.2.3" sectionFormat="of" target="RFC10017"/> for a worked example.</t>
          <t>Authorization servers SHOULD link the lifetime of the refresh token to
the user's authenticated session with the authorization server, so that
when the user logs out, previously issued refresh tokens become invalid.
Authorization servers MAY set different policies for refresh token
issuance, lifetime, and expiration for browser-based applications compared to
other public clients.</t>
        </section>
        <section anchor="in-browser-communication-in-browser-based-applications">
          <name>In-Browser Communication in Browser-Based Applications</name>
          <t>It is common for a browser-based application to execute the OAuth flow in a
secondary window, such as a pop-up or an iframe, rather than redirecting
the primary window. If the app and the authorization server are invoked
in different frames, they use in-browser communication techniques such as
the <tt>postMessage</tt> API <xref target="WHATWG.WebMessaging"/> instead of top-level
redirections. To guarantee the confidentiality and authenticity of these
messages, both the initiator origin and the receiver origin of a
<tt>postMessage</tt> MUST be verified using the mechanisms provided by the
<tt>postMessage</tt> API.</t>
          <t>See <xref section="4.17" sectionFormat="of" target="RFC9700"/> for further details about the security of
in-browser communication flows and the countermeasures that browser-based
apps and authorization servers MUST apply to defend against these
attacks.</t>
        </section>
        <section anchor="cross-origin-requests-in-browser-based-applications">
          <name>Cross-Origin Requests in Browser-Based Applications</name>
          <t>A browser-based OAuth client uses browser APIs to send requests to the
authorization server and the resource server. These requests are
typically cross-origin requests, and are subject to the browser's
restrictions on cross-origin communication. The authorization server and
resource server MUST send the necessary CORS <xref target="WHATWG.CORS"/> header fields to
enable the app to make these requests, as described in
<xref target="token-endpoint"/>. See <xref section="6.3.3.4" sectionFormat="of" target="RFC10017"/> for considerations
on choosing a CORS policy.</t>
        </section>
      </section>
      <section anchor="browser-based-apps-token-storage">
        <name>Token Storage in Browser-Based Applications</name>
        <t>A browser-based application that handles access tokens or refresh tokens directly
is responsible for storing them. None of the storage mechanisms available
in the browser prevent an attacker who is able to execute code in the
app's origin from obtaining a new set of tokens in the same way the app
does, so no storage mechanism can fully mitigate token exfiltration. The
choice of mechanism does affect the attacker's ability to obtain existing
tokens from storage. See <xref section="8" sectionFormat="of" target="RFC10017"/> for a comparison of the
available mechanisms.</t>
        <t>Storing tokens using the browser's JavaScript Cookie API is NOT
RECOMMENDED. Because such a cookie is associated with the domain of the
browser-based application, the browser will also send the token to the server
hosting the app on subsequent requests, exposing the token beyond its
intended recipient. This is different from the use of cookies by a BFF
(<xref target="browser-based-apps-bff"/>), where the cookie is inaccessible to
JavaScript and is intended to be sent to the backend.</t>
        <t>When a Service Worker <xref target="W3C.service-workers"/> or Web Worker is used to
isolate tokens from the app's execution context, it MUST NOT store those
tokens in a persistent storage API that is shared with the main window.</t>
      </section>
      <section anchor="security-considerations-in-browser-based-applications">
        <name>Security Considerations in Browser-Based Applications</name>
        <section anchor="sender-constrained-tokens-in-browser-based-applications">
          <name>Sender-Constrained Tokens in Browser-Based Applications</name>
          <t>The use of sender-constrained tokens (<xref target="sender-constrained-tokens"/>), for
example using DPoP <xref target="RFC9449"/>, enhances the security of both access
tokens and refresh tokens issued to browser-based applications, as a stolen token
is not usable without the corresponding private key. Note that this
shifts the challenge of securely storing the token to securely storing
the private key, and that it does not address an attacker's ability to
obtain a new set of tokens by running a new flow. See
<xref section="9.2" sectionFormat="of" target="RFC10017"/> for further details.</t>
        </section>
        <section anchor="reducing-the-authority-of-tokens-in-browser-based-applications">
          <name>Reducing the Authority of Tokens in Browser-Based Applications</name>
          <t>Because tokens in a browser-based application are more exposed than in other
architectures, the privilege restrictions described in
<xref target="access-token-privilege-restriction"/> are particularly important. Short
access token lifetimes, minimal scopes, and restricting an access token to
a single resource server all reduce the impact of a stolen token.</t>
        </section>
        <section anchor="isolating-browser-based-applications-using-origins">
          <name>Isolating Browser-Based Applications Using Origins</name>
          <t>Many of the web's security mechanisms, including the browser's isolation
of browsing contexts and the CORS restrictions described in
<xref target="token-endpoint"/>, rely on origins, defined as the triple of scheme,
hostname and port. Deploying more than one application in a single origin
prevents an application from taking advantage of these restrictions, and
makes security measures such as CORS harder to configure correctly. It is
therefore a best practice to deploy no more than one application per
origin.</t>
        </section>
        <section anchor="authorization-server-mix-up-in-browser-based-applications">
          <name>Authorization Server Mix-Up in Browser-Based Applications</name>
          <t>Mix-up attacks are a particular threat to browser-based applications that support
more than one authorization server. The countermeasures in <xref target="mix-up"/>
apply.</t>
        </section>
      </section>
    </section>
    <section anchor="oauth-2-0-differences">
      <name>Differences from OAuth 2.0</name>
      <t>This draft consolidates the functionality in OAuth 2.0 <xref target="RFC6749"/>,
OAuth 2.0 for Native Apps <xref target="RFC8252"/>,
Proof Key for Code Exchange <xref target="RFC7636"/>,
OAuth 2.0 for Browser-Based Applications <xref target="RFC10017"/>,
OAuth Security Best Current Practice <xref target="RFC9700"/>,
and Bearer Token Usage <xref target="RFC6750"/>.</t>
      <t>Where a later specification updates or obsoletes functionality found in the original
<xref target="RFC6749"/>, that functionality in this draft is updated with the normative
changes described in that later specification, or removed entirely.</t>
      <t>The following is a non-normative list of changes from OAuth 2.0:</t>
      <ul spacing="normal">
        <li>
          <t>The authorization code grant is extended with the functionality from PKCE <xref target="RFC7636"/>
such that the default method of using the authorization code grant according
to this specification requires the addition of the PKCE parameters</t>
        </li>
        <li>
          <t>Redirect URIs must be compared using exact string matching
as per <xref section="4.1.3" sectionFormat="of" target="RFC9700"/></t>
        </li>
        <li>
          <t>The Implicit grant (<tt>response_type=token</tt>) is omitted from this specification
as per <xref section="2.1.2" sectionFormat="of" target="RFC9700"/></t>
        </li>
        <li>
          <t>The Resource Owner Password Credentials grant is omitted from this specification
as per <xref section="2.4" sectionFormat="of" target="RFC9700"/></t>
        </li>
        <li>
          <t>Bearer token usage omits the use of bearer tokens in the query string of URIs
as per <xref section="4.3.2" sectionFormat="of" target="RFC9700"/></t>
        </li>
        <li>
          <t>Refresh tokens for public clients must either be sender-constrained or one-time-use
as per <xref section="4.14.2" sectionFormat="of" target="RFC9700"/></t>
        </li>
        <li>
          <t>Refresh tokens issued to browser-based applications have additional lifetime constraints
as per <xref section="6.3.2.3" sectionFormat="of" target="RFC10017"/></t>
        </li>
        <li>
          <t>The token endpoint request containing an authorization code no longer contains
the <tt>redirect_uri</tt> parameter</t>
        </li>
        <li>
          <t>Authorization servers must support client credentials in the request content</t>
        </li>
        <li>
          <t>The PKCE <tt>plain</tt> method is removed</t>
        </li>
      </ul>
      <t>An OAuth 2.0 client that does not use PKCE, relies on redirect URI pattern
matching, or uses the Implicit or Resource Owner Password Credentials grants
will not interoperate with an authorization server that enforces the
requirements of this specification for that client
(see <xref target="compatibility-with-oauth-2-0"/>).</t>
      <section anchor="removal-of-the-oauth-20-implicit-grant">
        <name>Removal of the OAuth 2.0 Implicit Grant</name>
        <t>The OAuth 2.0 Implicit grant is omitted from OAuth 2.1 as it was deprecated in
<xref target="RFC9700"/>.</t>
        <t>The intent of removing the Implicit grant is to no longer issue access tokens
in the authorization response, as such tokens are vulnerable to leakage
and injection and cannot be sender-constrained to a client.
This behavior was indicated by clients using the <tt>response_type=token</tt> parameter.
This value for the <tt>response_type</tt> parameter is no longer defined in OAuth 2.1.</t>
        <t>Removal of <tt>response_type=token</tt> does not have an effect on other extension
response types returning other artifacts from the authorization endpoint,
for example, <tt>response_type=id_token</tt> defined by <xref target="OpenID.Connect"/>.</t>
      </section>
      <section anchor="redirect-uri-in-token-request">
        <name>Redirect URI Parameter in Token Request</name>
        <t>In OAuth 2.0, the request to the token endpoint in the authorization code flow (<xref section="4.1.3" sectionFormat="of" target="RFC6749"/>) contains an optional <tt>redirect_uri</tt> parameter. The parameter was intended to prevent an authorization code injection attack and was required if the <tt>redirect_uri</tt> parameter was sent in the original authorization request. The authorization request only required the <tt>redirect_uri</tt> parameter if multiple redirect URIs were registered for the specific client. However, in practice, many authorization server implementations required the <tt>redirect_uri</tt> parameter in the authorization request even if only one was registered, leading the <tt>redirect_uri</tt> parameter to be required at the token endpoint as well.</t>
        <t>In OAuth 2.1, authorization code injection is prevented by the <tt>code_challenge</tt> and <tt>code_verifier</tt> parameters, so including the <tt>redirect_uri</tt> parameter in the token request serves no purpose. As such, it has been removed.</t>
        <t>To provide backward compatibility, an authorization server that supports both OAuth 2.0 and OAuth 2.1 clients MUST allow clients to send the <tt>redirect_uri</tt> parameter in the token request (<xref target="code-token-extension"/>), and MUST enforce the parameter as described in <xref target="RFC6749"/>. The authorization server can use the <tt>client_id</tt> in the request to determine whether to enforce this behavior for the specific client that it knows will be using the older OAuth 2.0 behavior (see <xref target="compatibility-with-oauth-2-0"/>).</t>
        <t>A client following only the OAuth 2.1 recommendations will not send the <tt>redirect_uri</tt> in the token request, and therefore will not be compatible with an authorization server that expects the parameter in the token request.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require any IANA actions.</t>
      <t>All referenced registries are defined by <xref target="RFC6749"/> and related documents that this
work is based upon. No changes to those registries are required by this specification.</t>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9112" to="HTTP/1.1"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <author fullname="R. Shirey" initials="R." surname="Shirey"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="FYI" value="36"/>
          <seriesInfo name="RFC" value="4949"/>
          <seriesInfo name="DOI" value="10.17487/RFC4949"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </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="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </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="RFC7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="35"/>
          <seriesInfo name="RFC" value="7595"/>
          <seriesInfo name="DOI" value="10.17487/RFC7595"/>
        </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>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="HTTP-CACHING">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </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="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>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <author fullname="T. Fossati" initials="T." surname="Fossati"/>
              <date month="November" year="2022"/>
              <abstract>
                <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
                <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="9325"/>
            <seriesInfo name="DOI" value="10.17487/RFC9325"/>
          </reference>
        </referencegroup>
        <reference anchor="USASCII">
          <front>
            <title>Coded Character Set -- 7-bit American Standard Code for Information Interchange, ANSI X3.4</title>
            <author initials="A. N. S." surname="Institute" fullname="American National Standards Institute">
              <organization/>
            </author>
            <date year="1986"/>
          </front>
        </reference>
        <reference anchor="WHATWG.URL" target="https://url.spec.whatwg.org/">
          <front>
            <title>URL</title>
            <author initials="" surname="WHATWG">
              <organization/>
            </author>
            <date year="2022" month="May"/>
          </front>
        </reference>
        <reference anchor="WHATWG.CORS" target="https://fetch.spec.whatwg.org/#http-cors-protocol">
          <front>
            <title>Fetch Standard: CORS protocol</title>
            <author initials="" surname="WHATWG">
              <organization/>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="W3C.REC-xml-20081126" target="https://www.w3.org/TR/REC-xml/REC-xml-20081126.xml">
          <front>
            <title>Extensible Markup Language</title>
            <author initials="T." surname="Bray">
              <organization/>
            </author>
            <author initials="J." surname="Paoli">
              <organization/>
            </author>
            <author initials="C. M." surname="Sperberg-McQueen">
              <organization/>
            </author>
            <author initials="E." surname="Maler">
              <organization/>
            </author>
            <author initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date year="2008" month="November"/>
          </front>
        </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="RFC7617">
          <front>
            <title>The 'Basic' HTTP Authentication Scheme</title>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This document defines the "Basic" Hypertext Transfer Protocol (HTTP) authentication scheme, which transmits credentials as user-id/ password pairs, encoded using Base64.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7617"/>
          <seriesInfo name="DOI" value="10.17487/RFC7617"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="COOKIES">
          <front>
            <title>HTTP State Management Mechanism</title>
            <author fullname="A. Barth" initials="A." surname="Barth"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol. Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet. This document obsoletes RFC 2965. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6265"/>
          <seriesInfo name="DOI" value="10.17487/RFC6265"/>
        </reference>
        <reference anchor="RFC6819">
          <front>
            <title>OAuth 2.0 Threat Model and Security Considerations</title>
            <author fullname="T. Lodderstedt" initials="T." role="editor" surname="Lodderstedt"/>
            <author fullname="M. McGloin" initials="M." surname="McGloin"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document gives additional security considerations for OAuth, beyond those in the OAuth 2.0 specification, based on a comprehensive threat model for the OAuth 2.0 protocol. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6819"/>
          <seriesInfo name="DOI" value="10.17487/RFC6819"/>
        </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="RFC7034">
          <front>
            <title>HTTP Header Field X-Frame-Options</title>
            <author fullname="D. Ross" initials="D." surname="Ross"/>
            <author fullname="T. Gondrom" initials="T." surname="Gondrom"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>To improve the protection of web applications against clickjacking, this document describes the X-Frame-Options HTTP header field, which declares a policy, communicated from the server to the client browser, regarding whether the browser may display the transmitted content in frames that are part of other web pages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7034"/>
          <seriesInfo name="DOI" value="10.17487/RFC7034"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
        <reference anchor="RFC7592">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Management Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines methods for management of OAuth 2.0 dynamic client registrations for use cases in which the properties of a registered client may need to be changed during the lifetime of the client. Not all authorization servers supporting dynamic client registration will support these management methods.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7592"/>
          <seriesInfo name="DOI" value="10.17487/RFC7592"/>
        </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>
        <reference anchor="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </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="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="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </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="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9470">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="RFC10017">
          <front>
            <title>OAuth 2.0 for Browser-Based Applications</title>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <author fullname="P. De Ryck" initials="P." surname="De Ryck"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="August" year="2026"/>
            <abstract>
              <t>This specification details the threats, attack consequences, security considerations, and best practices that must be taken into account when developing browser-based applications that use OAuth 2.0.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="212"/>
          <seriesInfo name="RFC" value="10017"/>
          <seriesInfo name="DOI" value="10.17487/RFC10017"/>
        </reference>
        <reference anchor="I-D.bradley-oauth-jwt-encoded-state">
          <front>
            <title>Encoding claims in the OAuth 2 state parameter using a JWT</title>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>YES.com AG</organization>
            </author>
            <author fullname="Hans Zandbelt" initials="H." surname="Zandbelt">
              <organization>ZmartZone IAM</organization>
            </author>
            <date day="4" month="November" year="2018"/>
            <abstract>
              <t>   This draft provides a method for a client to encode one or more
   elements encoding information about the session into the OAuth 2
   "state" parameter.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bradley-oauth-jwt-encoded-state-09"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-rfc7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="28" month="April" year="2026"/>
            <abstract>
              <t>   This document updates RFC7521, RFC7522, RFC7523 and RFC9126 with
   respect to the treatment of audience values in OAuth 2.0 Client
   Assertion Authentication and Assertion-based Authorization Grants to
   address a security vulnerability identified in the previous
   requirements for those audience values in multiple OAuth 2.0
   specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-11"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-attestation-based-client-auth">
          <front>
            <title>OAuth 2.0 Attestation-Based Client Authentication</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="12" month="October" year="2026"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2.0 protocol
   (RFC 6749) that enables a client instance to include a key-bound
   attestation when interacting with an Authorization Server or Resource
   Server.  This mechanism allows a client instance to prove its
   authenticity, as verified by a client attester, without revealing its
   target audience to that attester.  It may also serve as a mechanism
   for client authentication as per OAuth 2.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-12"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-02"/>
        </reference>
        <reference anchor="WHATWG.WebMessaging" target="https://html.spec.whatwg.org/multipage/web-messaging.html">
          <front>
            <title>HTML Living Standard: Cross-document messaging</title>
            <author initials="" surname="WHATWG">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="W3C.service-workers" target="https://www.w3.org/TR/service-workers/">
          <front>
            <title>Service Workers</title>
            <author/>
          </front>
          <seriesInfo name="W3C CR" value="service-workers"/>
          <seriesInfo name="W3C" value="service-workers"/>
        </reference>
        <reference anchor="OpenID.Connect" 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">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="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">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="E." surname="Jay">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OMAP" target="https://www.svta.org/product/online-multimedia-authorization-protocol/">
          <front>
            <title>Online Multimedia Authorization Protocol: An Industry Standard for Authorized Access to Internet Multimedia Resources</title>
            <author initials="J." surname="Huff">
              <organization/>
            </author>
            <author initials="D." surname="Schlacht">
              <organization/>
            </author>
            <author initials="A." surname="Nadalin">
              <organization/>
            </author>
            <author initials="J." surname="Simmons">
              <organization/>
            </author>
            <author initials="P." surname="Rosenberg">
              <organization/>
            </author>
            <author initials="P." surname="Madsen">
              <organization/>
            </author>
            <author initials="T." surname="Ace">
              <organization/>
            </author>
            <author initials="C." surname="Rickelton-Abdi">
              <organization/>
            </author>
            <author initials="B." surname="Boyer">
              <organization/>
            </author>
            <date year="2012" month="August"/>
          </front>
        </reference>
        <reference anchor="NIST800-63" target="http://csrc.nist.gov/publications/">
          <front>
            <title>NIST Special Publication 800-63-1, INFORMATION SECURITY (withdrawn)</title>
            <author initials="W." surname="Burr">
              <organization/>
            </author>
            <author initials="D." surname="Dodson">
              <organization/>
            </author>
            <author initials="E." surname="Newton">
              <organization/>
            </author>
            <author initials="R." surname="Perlner">
              <organization/>
            </author>
            <author initials="T." surname="Polk">
              <organization/>
            </author>
            <author initials="S." surname="Gupta">
              <organization/>
            </author>
            <author initials="E." surname="Nabbus">
              <organization/>
            </author>
            <date year="2011" month="December"/>
          </front>
        </reference>
        <reference anchor="owasp_redir" target="https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html">
          <front>
            <title>OWASP Cheat Sheet Series - Unvalidated Redirects and Forwards</title>
            <author>
              <organization/>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="CSP-2" target="https://www.w3.org/TR/CSP2">
          <front>
            <title>Content Security Policy Level 2</title>
            <author>
              <organization/>
            </author>
            <date year="2016" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 4099?>

<section anchor="augmented-backus-naur-form-abnf-syntax">
      <name>Augmented Backus-Naur Form (ABNF) Syntax</name>
      <t>This section provides Augmented Backus-Naur Form (ABNF) syntax
descriptions for the elements defined in this specification using the
notation of <xref target="RFC5234"/>.  The ABNF below is defined in terms of Unicode
code points <xref target="W3C.REC-xml-20081126"/>; these characters are typically
encoded in UTF-8.  Elements are presented in the order first defined.</t>
      <t>Some of the definitions that follow use the "URI-reference"
definition from <xref target="RFC3986"/>.</t>
      <t>Some of the definitions that follow use these common definitions:</t>
      <artwork><![CDATA[
VSCHAR     = %x20-7E
NQCHAR     = %x21 / %x23-5B / %x5D-7E
NQSCHAR    = %x20-21 / %x23-5B / %x5D-7E
]]></artwork>
      <section anchor="clientid-syntax">
        <name>"client_id" Syntax</name>
        <t>The <tt>client_id</tt> element is defined in <xref target="client-secret"/>:</t>
        <artwork><![CDATA[
client-id     = *VSCHAR
]]></artwork>
      </section>
      <section anchor="clientsecret-syntax">
        <name>"client_secret" Syntax</name>
        <t>The <tt>client_secret</tt> element is defined in <xref target="client-secret"/>:</t>
        <artwork><![CDATA[
client-secret = *VSCHAR
]]></artwork>
      </section>
      <section anchor="responsetype-syntax">
        <name>"response_type" Syntax</name>
        <t>The <tt>response_type</tt> element is defined in <xref target="authorization-request"/> and <xref target="new-response-types"/>:</t>
        <artwork><![CDATA[
response-type = response-name *( SP response-name )
response-name = 1*response-char
response-char = "_" / DIGIT / ALPHA
]]></artwork>
      </section>
      <section anchor="scope-syntax">
        <name>"scope" Syntax</name>
        <t>The <tt>scope</tt> element is defined in <xref target="access-token-scope"/>:</t>
        <artwork><![CDATA[
 scope       = scope-token *( SP scope-token )
 scope-token = 1*NQCHAR
]]></artwork>
      </section>
      <section anchor="state-syntax">
        <name>"state" Syntax</name>
        <t>The <tt>state</tt> element is defined in <xref target="authorization-request"/>, <xref target="authorization-response"/>, and <xref target="authorization-code-error-response"/>:</t>
        <artwork><![CDATA[
 state      = 1*VSCHAR
]]></artwork>
      </section>
      <section anchor="redirecturi-syntax">
        <name>"redirect_uri" Syntax</name>
        <t>The <tt>redirect_uri</tt> element is defined in <xref target="authorization-request"/> and <xref target="code-token-extension"/>:</t>
        <artwork><![CDATA[
 redirect-uri      = URI-reference
]]></artwork>
      </section>
      <section anchor="error-syntax">
        <name>"error" Syntax</name>
        <t>The <tt>error</tt> element is defined in <xref target="authorization-code-error-response"/>, <xref target="token-error-response"/>,
and <xref target="error-response"/>:</t>
        <artwork><![CDATA[
 error             = 1*NQSCHAR
]]></artwork>
      </section>
      <section anchor="error-description-syntax">
        <name>"error_description" Syntax</name>
        <t>The <tt>error_description</tt> element is defined in <xref target="authorization-code-error-response"/>,
<xref target="token-error-response"/>, and <xref target="error-response"/>:</t>
        <artwork><![CDATA[
 error-description = 1*NQSCHAR
]]></artwork>
      </section>
      <section anchor="error-uri-syntax">
        <name>"error_uri" Syntax</name>
        <t>The <tt>error_uri</tt> element is defined in <xref target="authorization-code-error-response"/>, <xref target="token-error-response"/>,
and <xref target="error-response"/>:</t>
        <artwork><![CDATA[
 error-uri         = URI-reference
]]></artwork>
      </section>
      <section anchor="granttype-syntax">
        <name>"grant_type" Syntax</name>
        <t>The <tt>grant_type</tt> element is defined in <xref target="token-request"/>:</t>
        <artwork><![CDATA[
 grant-type = grant-name / URI-reference
 grant-name = 1*name-char
 name-char  = "-" / "." / "_" / DIGIT / ALPHA
]]></artwork>
      </section>
      <section anchor="code-syntax">
        <name>"code" Syntax</name>
        <t>The <tt>code</tt> element is defined in <xref target="code-token-extension"/>:</t>
        <artwork><![CDATA[
 code       = 1*VSCHAR
]]></artwork>
      </section>
      <section anchor="accesstoken-syntax">
        <name>"access_token" Syntax</name>
        <t>The <tt>access_token</tt> element is defined in <xref target="token-response"/>:</t>
        <artwork><![CDATA[
 access-token = 1*VSCHAR
]]></artwork>
      </section>
      <section anchor="tokentype-syntax">
        <name>"token_type" Syntax</name>
        <t>The <tt>token_type</tt> element is defined in <xref target="token-response"/> and <xref target="defining-access-token-types"/>:</t>
        <artwork><![CDATA[
 token-type = type-name / URI-reference
 type-name  = 1*name-char
 name-char  = "-" / "." / "_" / DIGIT / ALPHA
]]></artwork>
      </section>
      <section anchor="expiresin-syntax">
        <name>"expires_in" Syntax</name>
        <t>The <tt>expires_in</tt> element is defined in <xref target="token-response"/>:</t>
        <artwork><![CDATA[
 expires-in = 1*DIGIT
]]></artwork>
      </section>
      <section anchor="refreshtoken-syntax">
        <name>"refresh_token" Syntax</name>
        <t>The <tt>refresh_token</tt> element is defined in <xref target="token-response"/> and <xref target="refreshing-an-access-token"/>:</t>
        <artwork><![CDATA[
 refresh-token = 1*VSCHAR
]]></artwork>
      </section>
      <section anchor="endpoint-parameter-syntax">
        <name>Endpoint Parameter Syntax</name>
        <t>The syntax for new endpoint parameters is defined in <xref target="defining-new-endpoint-parameters"/>:</t>
        <artwork><![CDATA[
 param-name = 1*name-char
 name-char  = "-" / "." / "_" / DIGIT / ALPHA
]]></artwork>
      </section>
      <section anchor="codeverifier-syntax">
        <name>"code_verifier" Syntax</name>
        <t>The ABNF for <tt>code_verifier</tt> is as follows.</t>
        <artwork><![CDATA[
code-verifier = 43*128unreserved
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
ALPHA = %x41-5A / %x61-7A
DIGIT = %x30-39
]]></artwork>
      </section>
      <section anchor="codechallenge-syntax">
        <name>"code_challenge" Syntax</name>
        <t>The ABNF for <tt>code_challenge</tt> is as follows.</t>
        <artwork><![CDATA[
code-challenge = 43*128unreserved
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
ALPHA = %x41-5A / %x61-7A
DIGIT = %x30-39
]]></artwork>
      </section>
    </section>
    <section anchor="application-x-www-form-urlencoded">
      <name>Use of application/x-www-form-urlencoded Media Type</name>
      <t>The <tt>application/x-www-form-urlencoded</tt> media type is defined by the
URL Living Standard <xref target="WHATWG.URL"/>, and is registered in the IANA
"Media Types" registry with a reference to that definition.</t>
      <t>When generating content using this media type, names and values MUST
be encoded using the UTF-8 character encoding scheme <xref target="RFC3629"/>
first; the resulting octet sequence is then percent-encoded as defined
by the <tt>application/x-www-form-urlencoded</tt> serializer in <xref target="WHATWG.URL"/>.</t>
      <t>When parsing data from content using this media type, the names and
values resulting from reversing the name/value encoding consequently
need to be treated as octet sequences, to be decoded using the UTF-8
character encoding scheme.</t>
      <t>For example, the value consisting of the six Unicode code points
(1) U+0020 (SPACE), (2) U+0025 (PERCENT SIGN),
(3) U+0026 (AMPERSAND), (4) U+002B (PLUS SIGN),
(5) U+00A3 (POUND SIGN), and (6) U+20AC (EURO SIGN) would be encoded
into the octet sequence below (using hexadecimal notation):</t>
      <artwork><![CDATA[
20 25 26 2B C2 A3 E2 82 AC
]]></artwork>
      <t>and then represented in the content as:</t>
      <artwork><![CDATA[
+%25%26%2B%C2%A3%E2%82%AC
]]></artwork>
    </section>
    <section anchor="serializations">
      <name>Serializations</name>
      <t>Various messages in this specification are serialized using one of the methods described below. This section describes the syntax of these serialization methods; other sections describe when they can and must be used. Note that not all methods can be used for all messages.</t>
      <section anchor="query-string-serialization">
        <name>Query String Serialization</name>
        <t>In order to serialize the parameters using the Query String Serialization, the client constructs the string by adding the parameters and values to the query component of a URL using the <tt>application/x-www-form-urlencoded</tt> format as defined by <xref target="WHATWG.URL"/>. Query String Serialization is typically used in HTTP GET requests.</t>
      </section>
      <section anchor="form-serialization">
        <name>Form-Encoded Serialization</name>
        <t>Parameters and their values are form-serialized by adding the parameter names and values to the content of the HTTP request using the <tt>application/x-www-form-urlencoded</tt> format as defined in <xref target="application-x-www-form-urlencoded"/>. Form-Encoded Serialization is typically used in HTTP POST requests.</t>
      </section>
      <section anchor="json-serialization">
        <name>JSON Serialization</name>
        <t>The parameters are serialized into a JSON <xref target="RFC8259"/> object structure by adding each parameter at the highest structure level. Parameter names and string values are represented as JSON strings. Numerical values are represented as JSON numbers. Boolean values are represented as JSON booleans. Omitted parameters and parameters with no value SHOULD be omitted from the object and not represented by a JSON null value, unless otherwise specified. A parameter MAY have a JSON object or a JSON array as its value. The order of parameters does not matter and can vary.</t>
      </section>
    </section>
    <section anchor="extensions">
      <name>Extensions</name>
      <t>The following is a list of extensions that are well established at the time of publication:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC7009"/>: Token Revocation
          </t>
          <ul spacing="normal">
            <li>
              <t>The Token Revocation extension defines a mechanism for clients to indicate to the authorization server that an access token is no longer needed.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7591"/>: Dynamic Client Registration
          </t>
          <ul spacing="normal">
            <li>
              <t>Dynamic Client Registration provides a mechanism for programmatically registering clients with an authorization server.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7662"/>: Token Introspection
          </t>
          <ul spacing="normal">
            <li>
              <t>The Token Introspection extension defines a mechanism for resource servers to obtain information about access tokens.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8414"/>: Authorization Server Metadata
          </t>
          <ul spacing="normal">
            <li>
              <t>Authorization Server Metadata (also known as OAuth Discovery) defines an endpoint clients can use to look up the information needed to interact with a particular OAuth server, such as the location of the authorization and token endpoints and the supported grant types.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8628"/>: OAuth 2.0 Device Authorization Grant
          </t>
          <ul spacing="normal">
            <li>
              <t>The Device Authorization Grant (formerly known as the Device Flow) is an extension that enables devices with no browser or limited input capability to obtain an access token. This is commonly used by smart TV apps or devices such as hardware video encoders that can stream video to a streaming video service.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8705"/>: Mutual TLS
          </t>
          <ul spacing="normal">
            <li>
              <t>Mutual TLS describes a mechanism of binding tokens to the clients to which they were issued, as well as a client authentication mechanism, via TLS certificate authentication.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8707"/>: Resource Indicators
          </t>
          <ul spacing="normal">
            <li>
              <t>Resource Indicators provide a way for the client to explicitly signal to the authorization server where it intends to use the access token it is requesting.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9068"/>: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
          </t>
          <ul spacing="normal">
            <li>
              <t>This specification defines a profile for issuing OAuth access tokens in JSON Web Token (JWT) format.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9126"/>: Pushed Authorization Requests
          </t>
          <ul spacing="normal">
            <li>
              <t>The Pushed Authorization Requests extension describes a technique of initiating an OAuth flow from the back channel, providing better security and more flexibility for building complex authorization requests.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9207"/>: Authorization Server Issuer Identification
          </t>
          <ul spacing="normal">
            <li>
              <t>The <tt>iss</tt> parameter in the authorization response indicates the identity of the authorization server to prevent mix-up attacks in the client.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9396"/>: Rich Authorization Requests
          </t>
          <ul spacing="normal">
            <li>
              <t>Rich Authorization Requests specifies a new parameter <tt>authorization_details</tt> that is used to carry fine-grained authorization data in the OAuth authorization request.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9449"/>: Demonstrating Proof of Possession (DPoP)
          </t>
          <ul spacing="normal">
            <li>
              <t>DPoP describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism at the application level.</t>
            </li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9470"/>: Step-Up Authentication Challenge Protocol
          </t>
          <ul spacing="normal">
            <li>
              <t>Step-Up Auth describes a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This specification is the work of the OAuth Working Group, and its starting point was based on the contents of the following specifications: OAuth 2.0 Authorization Framework (RFC 6749), OAuth 2.0 for Native Apps (RFC 8252), OAuth Security Best Current Practice, and OAuth 2.0 for Browser-Based Applications. The editors would like to thank everyone involved in the creation of those specifications upon which this is built.</t>
      <t>The editors would also like to thank the following individuals for their ideas, feedback, corrections, and wording that helped shape this version of the specification: Andrii Deinega, Bob Hamburg, Brian Campbell, Brian Pontarelli, Brock Allen, Daniel Fett, Deng Chao, Emelia Smith, Falko, Filip Skokan, Frederik Krogsdal Jacobsen, George Fletcher, Goutam Adwant, Jeremy Tennant, Johannes Koch, Joseph Heenan, Justin Richer, Karsten Meyer zu Selhausen, Lauritz Holtmann, Max Gerber, Michael Jones, Michael Peck, Nick Watson, Roberto Polli, Shon T. Urbas, Tim Würtele, and Vittorio Bertocci.</t>
      <t>Discussions around this specification have also occurred at the OAuth Security Workshop in 2021 and 2022. The authors thank the organizers of the workshop (Guido Schmitz, Steinar Noem, and Daniel Fett) for hosting an event that's conducive to collaboration and community input.</t>
    </section>
    <section removeInRFC="true" anchor="document-history">
      <name>Document History</name>
      <t>-17</t>
      <ul spacing="normal">
        <li>
          <t>Added <tt>obsoletes: 6749, 6750</tt> to the document metadata</t>
        </li>
        <li>
          <t>Added <tt>access_token</tt> to the parameters called out in Injection and Input Validation</t>
        </li>
        <li>
          <t>Changed "MAY" to "may" in the client impersonation subsections, since they describe inputs to a decision made only by the authorization server</t>
        </li>
        <li>
          <t>Updated the <tt>application/x-www-form-urlencoded</tt> appendix to reference the WHATWG URL Standard and its IANA registration, and used "URL" consistently for the authorization endpoint and authorization request</t>
        </li>
        <li>
          <t>Clarified that the client impersonation mitigation requires active resource owner interaction rather than explicit re-authentication</t>
        </li>
        <li>
          <t>Added examples of authorization server policies for issuing refresh tokens</t>
        </li>
        <li>
          <t>Editorial alignment with the HTTP WG style guide: named references for HTTP, HTTP caching, HTTP/1.1, TLS, and cookies; status code, field, and method formatting; quoted registry names; HTTP examples labeled as <tt>http-message</tt> and wrapped per RFC 8792</t>
        </li>
        <li>
          <t>Clarified that an authorization server supporting both OAuth 2.0 and OAuth 2.1 clients determines which rules apply to each client through its configuration for that client</t>
        </li>
        <li>
          <t>Removed duplicate "Access Token Privilege Restriction" section</t>
        </li>
        <li>
          <t>Clarified that redirect URI comparison is case-sensitive and aligned loopback redirect URI terminology</t>
        </li>
        <li>
          <t>Clarified that claimed <tt>https</tt> scheme redirects do not authenticate the client</t>
        </li>
        <li>
          <t>Restored loopback interception note from RFC 8252</t>
        </li>
        <li>
          <t>Updated attribution of the token threat list to NIST SP 800-63-1</t>
        </li>
        <li>
          <t>Clarified scope of grants and refresh token requests when the resource owner revokes scopes</t>
        </li>
        <li>
          <t>Added note about refresh token rotation and lost responses</t>
        </li>
        <li>
          <t>Updated abstract protocol flow diagram and description to show the authorization server as the intermediary for the authorization request</t>
        </li>
        <li>
          <t>Filled in the Browser-Based Applications section with the normative requirements from RFC 10017</t>
        </li>
        <li>
          <t>Updated references to OAuth 2.0 for Browser-Based Applications to the published RFC 10017</t>
        </li>
        <li>
          <t>Made auth-param values optional in the <tt>WWW-Authenticate</tt> Bearer challenge</t>
        </li>
        <li>
          <t>Clarified <tt>WWW-Authenticate</tt> behavior for client authentication methods that do not use an HTTP authentication scheme</t>
        </li>
        <li>
          <t>Clarified that the query component of the redirect URI and authorization endpoint must not include parameters defined for the request or response</t>
        </li>
        <li>
          <t>Clarified serialization of authorization request parameters when using <tt>GET</tt> or <tt>POST</tt></t>
        </li>
        <li>
          <t>Added note about interoperability with OAuth 2.0 clients</t>
        </li>
        <li>
          <t>Clarified that the privileges in an access token are not necessarily the only factor in a resource server's access control decision</t>
        </li>
        <li>
          <t>Added a reference to RFC 10017 for considerations on choosing a CORS policy</t>
        </li>
        <li>
          <t>Simplified mix-up defense via issuer identification to rely on the required <tt>iss</tt> response parameter</t>
        </li>
        <li>
          <t>Mentioned <tt>state</tt> alongside the authorization code in the Value Sizes section</t>
        </li>
        <li>
          <t>Replaced obsolete and superseded references</t>
        </li>
        <li>
          <t>Editorial cleanups</t>
        </li>
      </ul>
      <t>-16</t>
      <ul spacing="normal">
        <li>
          <t>Remove PKCE <tt>plain</tt> method</t>
        </li>
        <li>
          <t>Mention PAR in the authorization endpoint definition section</t>
        </li>
        <li>
          <t>Added security consideration section about OAuth consent phishing</t>
        </li>
        <li>
          <t>Make <tt>iss</tt> response parameter required to be sent by the AS (let clients choose the mix-up mitigation still)</t>
        </li>
        <li>
          <t>Consolidated text about lengths of values into a new "Value Sizes" section</t>
        </li>
        <li>
          <t>Clarified authorization endpoint error response behavior</t>
        </li>
      </ul>
      <t>-15</t>
      <ul spacing="normal">
        <li>
          <t>add additional context for JWT client authentication and specifically recommend RFC7523bis</t>
        </li>
        <li>
          <t>editorial clarifications and updates</t>
        </li>
        <li>
          <t>clarify error responses in authorization endpoint and token endpoint</t>
        </li>
        <li>
          <t>synced language from RFC9700 for AS open redirect considerations</t>
        </li>
        <li>
          <t>applied RFC6750 erratas 3500 and 6613</t>
        </li>
        <li>
          <t>resolved ambiguity around repeated parameters</t>
        </li>
      </ul>
      <t>-14</t>
      <ul spacing="normal">
        <li>
          <t>Editorial clarifications</t>
        </li>
        <li>
          <t>Corrected an instance of "relying party" vs "resource server"</t>
        </li>
        <li>
          <t>Add references to <tt>client_secret_post</tt> and <tt>client_secret_basic</tt> terms from RFC7591</t>
        </li>
        <li>
          <t>Replaced "sanitize" language with treating as untrusted input</t>
        </li>
        <li>
          <t>Clarified that native apps guidance applies primarily to mobile app platforms</t>
        </li>
        <li>
          <t>Clarify that there is no requirement that an AS supports public or confidential clients in particular</t>
        </li>
      </ul>
      <t>-13</t>
      <ul spacing="normal">
        <li>
          <t>Updated references to RFC 9700</t>
        </li>
        <li>
          <t>Updated and sorted list of OAuth extensions</t>
        </li>
        <li>
          <t>Updated references to link to section numbers</t>
        </li>
      </ul>
      <t>-12</t>
      <ul spacing="normal">
        <li>
          <t>Updated language around client registration to better reflect alternative registration methods such as those in use by OpenID Federation and open ecosystems</t>
        </li>
        <li>
          <t>Added DPoP and Step-Up Auth to appendix of extensions</t>
        </li>
        <li>
          <t>Updated reference for case insensitivity of auth scheme to HTTP instead of ABNF</t>
        </li>
        <li>
          <t>Corrected an instance of "relying party" vs "client"</t>
        </li>
        <li>
          <t>Moved <tt>client_id</tt> requirement to the individual grant types</t>
        </li>
        <li>
          <t>Consolidated the descriptions of serialization methods to the appendix</t>
        </li>
      </ul>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>Explicitly mention that Bearer is case insensitive</t>
        </li>
        <li>
          <t>Recommend against defining custom scopes that conflict with known scopes</t>
        </li>
        <li>
          <t>Change client credentials to be required to be supported in the request body to avoid HTTP Basic authentication encoding interop issues</t>
        </li>
      </ul>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Clarify that the client id is an opaque string</t>
        </li>
        <li>
          <t>Extensions may define additional error codes on a resource request</t>
        </li>
        <li>
          <t>Improved formatting for error field definitions</t>
        </li>
        <li>
          <t>Moved and expanded "scope" definition to introduction section</t>
        </li>
        <li>
          <t>Split access token section into structure and request</t>
        </li>
        <li>
          <t>Renamed b64token to token68 for consistency with RFC7235</t>
        </li>
        <li>
          <t>Restored content from old appendix B about application/x-www-form-urlencoded</t>
        </li>
        <li>
          <t>Clarified that clients must not parse access tokens</t>
        </li>
        <li>
          <t>Expanded text around when <tt>redirect_uri</tt> parameter is required in the authorization request</t>
        </li>
        <li>
          <t>Changed "permissions" to "privileges" in refresh token section for consistency</t>
        </li>
        <li>
          <t>Consolidated authorization code flow security considerations</t>
        </li>
        <li>
          <t>Clarified authorization code reuse - an authorization code can only obtain an access token once</t>
        </li>
      </ul>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>AS MUST NOT support CORS requests at authorization endpoint</t>
        </li>
        <li>
          <t>more detail on asymmetric client authentication</t>
        </li>
        <li>
          <t>sync CSRF description from security BCP</t>
        </li>
        <li>
          <t>update and move sender-constrained access tokens section</t>
        </li>
        <li>
          <t>sync client impersonating resource owner with security BCP</t>
        </li>
        <li>
          <t>add reference to authorization request from redirect URI registration section</t>
        </li>
        <li>
          <t>sync refresh rotation section from security BCP</t>
        </li>
        <li>
          <t>sync redirect URI matching text from security BCP</t>
        </li>
        <li>
          <t>updated references to RAR (RFC9396)</t>
        </li>
        <li>
          <t>clarifications on URIs</t>
        </li>
        <li>
          <t>removed redirect_uri from the token request</t>
        </li>
        <li>
          <t>expanded security considerations around code_verifier</t>
        </li>
        <li>
          <t>revised introduction section</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Updated acknowledgments</t>
        </li>
        <li>
          <t>Swap "by a trusted party" with "by an outside party" in client ID definition</t>
        </li>
        <li>
          <t>Replaced "verify the identity of the resource owner" with "authenticate"</t>
        </li>
        <li>
          <t>Clarified refresh token rotation to match RFC6819</t>
        </li>
        <li>
          <t>Added appendix to hold application/x-www-form-urlencoded examples</t>
        </li>
        <li>
          <t>Fixed references to entries in appendix</t>
        </li>
        <li>
          <t>Incorporated new "Phishing via AS" section from Security BCP</t>
        </li>
        <li>
          <t>Rephrase description of the motivation for client authentication</t>
        </li>
        <li>
          <t>Moved "scope" parameter in token request into specific grant types to match OAuth 2.0</t>
        </li>
        <li>
          <t>Updated Clickjacking and Open Redirection description from the latest version of the Security BCP</t>
        </li>
        <li>
          <t>Moved normative requirements out of authorization code security considerations section</t>
        </li>
        <li>
          <t>Security considerations clarifications, and removed a duplicate section</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Removed "third party" from abstract</t>
        </li>
        <li>
          <t>Added MFA and passwordless as additional motiviations in introduction</t>
        </li>
        <li>
          <t>Mention PAR as one way redirect URI registration can happen</t>
        </li>
        <li>
          <t>Added a reference to requiring CORS headers on the token endpoint</t>
        </li>
        <li>
          <t>Updated reference to OMAP extension</t>
        </li>
        <li>
          <t>Fixed numbering in sequence diagram</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Removed "credentialed client" term</t>
        </li>
        <li>
          <t>Simplified definition of "confidential" and "public" clients</t>
        </li>
        <li>
          <t>Incorporated the <tt>iss</tt> response parameter referencing RFC9207</t>
        </li>
        <li>
          <t>Added section on access token validation by the RS</t>
        </li>
        <li>
          <t>Removed requirement for authorization servers to support all 3 redirect methods for native apps</t>
        </li>
        <li>
          <t>Fixes for some references</t>
        </li>
        <li>
          <t>Updates HTTP references to RFC 9110</t>
        </li>
        <li>
          <t>Clarifies "authorization grant" term</t>
        </li>
        <li>
          <t>Clarifies client credential grant usage</t>
        </li>
        <li>
          <t>Clean up authorization code diagram</t>
        </li>
        <li>
          <t>Updated reference for application/x-www-form-urlencoded and removed outdated note about it not being in the IANA registry</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Added a section about the removal of the implicit flow</t>
        </li>
        <li>
          <t>Moved many normative requirements from security considerations into the appropriate inline sections</t>
        </li>
        <li>
          <t>Reorganized and consolidated TLS language</t>
        </li>
        <li>
          <t>Require TLS on redirect URIs except for localhost/custom URL scheme</t>
        </li>
        <li>
          <t>Updated refresh token guidance to match security BCP</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Added explicit mention of not sending access tokens in URI query strings</t>
        </li>
        <li>
          <t>Clarifications on definition of client types</t>
        </li>
        <li>
          <t>Consolidated text around loopback vs localhost</t>
        </li>
        <li>
          <t>Editorial clarifications throughout the document</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>refactoring to collect all the grant types under the same top-level header in section 4</t>
        </li>
        <li>
          <t>Better split normative and security consideration text into the appropriate places, both moving text that was really security considerations out of the main part of the document, as well as pulling normative requirements from the security considerations sections into the appropriate part of the main document</t>
        </li>
        <li>
          <t>Incorporated many of the published errata on RFC6749</t>
        </li>
        <li>
          <t>Updated references to various RFCs</t>
        </li>
        <li>
          <t>Editorial clarifications throughout the document</t>
        </li>
      </ul>
      <t>-02</t>
      <t>-01</t>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial revision</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963YbyZUu+D+eIg9r2UXaAERSd9nqbupWpXLpYlHVOnb3
OWICSJJpAUg0EhBFq9RvMO8wzzJrzXvNvkbsiIwEWeVqd581zWWXSCAz7rHv
+9vD4dCt6/WselC8Pa+KV0eb9XlxODoo8JdmVf+1XNfNoni2KufVRbP64KbN
ZAG/Pyimq/J0Payr9emwKeHh4cfD4cHw4K77+KC46Vy9XD0o1qtNuz7c37+/
f+guzh5I8++gnXpxVnyzajZL9+HiQfF8sa5Wi2o9fIKNukm5flC066krV1X5
oDiuJptVvb50zbhtZtW6ah8Ud+7euj+A/97ed25ZP3BFsW4mD4rLqoVf22a1
XlWnrf/7ch7+dCXNDF8ZFvUCPn0yKr4tV9M1fFIUzeqsXMi0HxTfVrPZ//t/
0Rc86yf15IN5upqX9QzWAj4dneOn/3SGn4wmzTy0fzQqXsNMJh9qemfV4GpX
03rdrEzLR+UKFto+KI2X+MU/LfkLaTkd56sP65I+hoV6UJyv18v2wY0b9Gb8
ogzp7aj4vplOq1W7rmQqPIq3DX606HwrY1nz1/80C1+PYN8yIzp+/eb5yyfO
LZrVHD76WOGCv3n2+Oadw/v66/17d+TXW/dv6ae3D2/ekl9xk/2vt/fl17u3
Dw/Crzf9r/dvy6/3Dm8fhl+phbffHz/Av+/fu3UH/vz27dvX/PfBwb78PXx8
9Pjb5y+/0c8PuIX7h/t3pbH7d/dpDI8evz7gzn44Pjp+/Pz5A5q/XKOdx820
mhaP4TiUEzjWcHzXxXBY3B2O63VxNK9W9aRcFMfrcjGFE1Pg48Vps4JLcMpr
BceALsTkvFycVYPi6OXx8+J/3hzd2qF+wvkN27bj231JDZQz30ELjbUwts26
4ven5RreOIDFhz/ffXv09t03ox/efB9PAj7gp9fl6qxahzO1Wc1G7bKajC7O
y/XF2Qh2/UZmWHLOuHnT7YvysjjcPzwMXT9+9eY47vtZtZ6c+/E/KPCJYrlq
4IY3s/yoTvGVzri+wq+HEzizQ339Jwz1u82iwrHexLHefDx68/Tx8NN8NgR6
du/g4PBOPOinn+BetPV4VsEcVx82y+J72L1NeVblR3xxcTG6uEnDfPvmhrR9
I+1jBH/0Dxlu8aNVeRl/+B1Sm2ZWx58+HhUvRsXxslqNq9XZ8MXkj5uqWsTP
PIVnylm1ij99Nir+BK9U5caszcvmYzWHlgocKBB7Pbp8zR+/evWH50/5xt05
vHNbrvC9A73NcJHCr/66370dHrh9P9zx+3qb7965ecf/esff8VsH2sK9O4f3
9Ne7+7fDr/4K79/RB+CKH/J6Tut2OSsvHxAZuHEw0psve4y/3rzvf73ladL9
W3eVJh3s7x9QH8+HT0bjVTmdVZfCFv9ysR5WiwkShWG7xtWTxwzrXJ1OkJSN
6zbzZbkGjremaz0cly00M5nV1WI9xG8zz8u39XQ4r9Yl7Fc5BKa9mcOHD1y4
d++q8YuqbcszYMXxUf727Yvvi+/rj8ijzS1cNW3rWyrm+m7+eJ+v5106Md/M
1vUSrsSNi2o89C2M8OGfcDHhTt5xcinbavWxnlRDlE2AIdEEXy2rxfMno8fN
YlFN1tHc+KtCvoJ/V1VxMNqHjoBKLJsVrDJMulrBL2XRAuE+zM6ugWbqKXK+
GzjHVj4AUkPtIsmphgfv98PMeORPqglfm4PbAyUtPbN+Cbe1/FDPN6uyc78f
8QGLP4fr/V2zIHnHfPpoVAB7eVFNqxr2r0sTQFKq5zBas25P6nYC13t1uW3l
/EP/Ecs31cb/a6wh0MXvgMriCr04eh3flVeLWQ1s4gWe7DnIdGUiOL8WvgPy
HXL1KcjDsGae+SPf1xdAaDiaTOBSgJTlJWLb8puqbTYreCInB4SZfbs5PY0/
BAH3eHI+Kyfn6/gLkExfAoWAKXRaOa7n82aRrMTrUfGmaasF8pDONy/KaZuy
FOBQR5Oqc+zegLxczdZA0I7G07pzYh81l8KFeMuPNmewbrjbB/kDhcy0/bgu
icoAq59uJusbDW3NcO4XcFjarfEiwQ3c2ZfPj9/e298f3rkZ7y9+jmxzUoNI
9XoznoGQRRvLDw8PBsXzl89evXlx9Pb5q5fF8dPHP7x5/vZPxe5FvT4HFeli
sbeTObw0l4MtNA8WYbNadbbxSTNtmy7bflldrNOP34AcUK1mi5Sfw5a8bmYf
4g+PR8U3m+W67LZcjsebtrPosOaTdjUZLep2PTprPt5YhqVpaUGbi7Jdvl/B
uq+SG/Pu6Pg1iMdVuS6Ozys44scgulYtdPrD4iOcRVypKRx2eBOIQVvAVSme
NasLlGXzzGaCjbXYVktNjahzOgzmqxum+fe++ffQ/Htt/j0N6z0NK6U7QGr2
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
+FZN0otpdiKtXIrcdw6lm7FIrWiT0rm3WUEE5S6111RCn0EkL5DYzHqWEXsg
A1Jydpm6EWdzHFQ162qaV+xbzvGamyVfYNL3++1mZIAA3Qf5XrnuPRd7eAiI
P1shSITb9BiwxYjuDew/kXMSLMUi5Xokz6JcEYNF++rS31o/bOwLX0Bh3rkt
fM6+NQgWmYt6FpzZwTuj6oFv0NgZCox2o8g9S/aSNl3UZqRKnMOEzs5VKQCR
Bz7cLdvY8/z5MwhqtNQ3R7dxaVlKBTKZHdKChb7+8fTOsfAmUh0Yfke3jFab
DSUjkBtRNBNv3/pyWbUgn7HzaEVsYArKTz1rRdbRQKni2ay5cO7f/Y+EpFz3
57fD+Oe3P/H9Hwvja8C/f8b7RfGKTtHPef9vHb/+/O+f+d6Pxe7hnouH8tsr
3tEHP8Zj/tG3ORzuHuwNE6n+jZgFh//wY9Lej+n7V475ivd/P9y9uTdMB/AN
OTtgvH97/3HDnfdh/rf6+5f5s3s06v8x37hfYv6392hrNMTwrYQz0M/fOv+e
Mxve/6Xbg/W80z8fXk9ziX/eecrsh34P63kX+yeqxdK4765/PX/yfQrzN+Tw
84Piq9P6zIcvDk9nyJoxFO3hzpEEiMXkdOeLWPb12xA5Ri8Dud9Q0Jaykk77
X754bsNBIX1SRdBOSaKoF5PZRp0gp40GbgGHWKL6eiDiVSdkKIlno/ijDpNG
NUu1nLy8yxbHkqIIW3YNo3qDwaCry5z4TE2lYjAbppw7HCUqoEhOFG5TqdTH
NnnnbqZzm1T1x1zMFinmOlZkzjSKniCjfJBT1CArW9UnfAllDlZn0ScvRqVM
9wUxaC9Rk8W+ZsUvVkUajZNBV7IK5aYNsYp1tyQ8Ar0sQbBqJTxHPI0oeai/
gRfAG1LVfxQ3qNvEI5cYkriJrNvCuVt9py4J9uoGDKlo1ts6jSrZrcw6wCBu
b9EsurK1VdHU0yFRufke2P5an/LTA3VDJ1OEcdzpWYy8kaV7F/mM+AirdO5x
Z3fTGyQv+illHEXRPEJv6XXrriWm3MSXK0S7ZRe9dSmFCAGl17h2sMYuS0nj
sHMcltJUeiTzNY2azIDHrP147XdcncFL7LoVSdzfD7834eqs+3zNahZfXEYK
otc9Ej+D0zCA15v2HA25OUlOTLqYNwVz0/v5hOw1Lif6sLX5zuE9NMqyvhCm
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
uIrDoaAwohBNOHrXUCTXt9Pw2fS66lYWlffI/yIcDNzeo5y3Z4w1skCTKEr+
2q2a0dISrK3gDdh/+7Qxk9x0etlSvD32sHHxPuXcE09L+clp96+Xi0gpGdfY
zgjd4X0BCZLz1lo3MrFP1WkTpPOorrE7CXFBAMS+pHbFNv9mfrtJTnHHgV1k
vUSBOWQoz7IlQSOkFBtKy+rjKdcppdULNGN0fcGwLTNJwtr2GdcQjWrbD01t
ukaFA2fBQhhmc1Q/dkvQiOhOF2acY2rX19QUG+5uPGq7qc4Pjpcpz8+XL4U6
vvU1UiTV/LZrTGfb69EHvFkGp9kmcNcf5MM6Sfxc5RGRDaKleWjPQgx10oqY
4aELLSmng6G6sE0xWCQjJXuJZUDcJX4d9OlmWue3kApBOU4VgViD6LVT7DwZ
dVMUC3QC25q11DSC1qtfgsFRyEHFhoUDJzd8JHaqyPakWdwWVLG1Zhe2/2Es
ASDXpHqPI3N8eiUfpdYEze2lmMOR9226mOrQlq6oOlIx511jfKPW3auL3461
7OSSfFEJqJhgxJBrHaD2A/pKKvC3RgAJaVxpQ6ltvny9Kw5hEvwiIUKinUEu
DI9bj5WkAZ/C9jqKshGGzbqLwxz1zRxI7eqXTDytCz+bMbm80hqgxu+8vF6f
huXxM+57zcFp0giT9ye6KBZkT8Z6YESP6AXrBaO3lTmQD5jDVKjTTsEUEqNe
4Pq+ZMquLFlrUD5CIldLK5gnW418tuZ0zeZtYdUlCclbOlHcdZxRlpTzhu6g
qEg4rK4lJUxsbqQd0Ze6rpbSdCn4g+gvSjcQ9kxQt22u0zHUmFrpanz1ZmRg
LdQqSJ49Iat51uJMbyX2jnYU0q/ztL5tI7y7SQJ+digG09twcXmNfMSY6BZx
KOaNbQ+A87f+4oOryK9S8KtkJ2ga0GFMeuK7UhEKBFcNl+3Kk8AS2RiThUB4
iURZuJELbpXKC8mP1taoaQNl1+oyrLG0aisGGESEVcXvyG59yu1+Wpv8pE+8
1Cbd1RX7y471G3CJxmTLWJYn6bHtgxjBj33hmlqrIMWypnkTjrENyL3CIfcM
BoaTKIx1CtOOnJykDNTbQhUlxOcUbgDvHc02q5yIWd24dFwiqvHOIdN2uLCB
2eTD2m2oGSVNtZx50UJZMB+xxUBIyBqlNg6xrPYpZCz2gmfTorC4LEJFtJxu
+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
QJe9RZrmrzXTCDwjY//FJ4HXc/eVxw8e9++3yVdyMD79mdkQT0lknkkXx7cq
OnwiIyLBtcZPORfCLtqvKCuQl3u0J22lgbot50hcpFCz9TXPFoVeTsPkgRQg
nbZztBHRwg9IYzUv/PyxWPQmexVXhuw2PMkZTwtuS31DnglNYQYQxz0Hhjxh
J/CqJd56ii6R0lG6euONQJZo0S6m9hSA5mEJy9NSCUP2oO/yO2AUNRD7JPat
vUQ2VXRLwgJ4cShKVh2On4srXaQ63/rjbQIcRNJOAGXLPge05j0Fx6PIBzkm
MKjI3x7e9V3KZMZ0IzFcqyWLdHYJnF+RC2EElBOH0e6iZRZuZ+GU6VTcpaLL
TrTC4XfKjf4ZZ8jJDgpSrwhqb2258/cbeupBeOrB0FPvDev8px/8MH/s0yQl
iW1IN7aydO66EK8xjz94fctbneNwEViIB6f4Qf9ls0Qe6E2S+DqvrGTE2CfL
XQRU9dVTMoWIb2JkeR/e+fB7ZRFRQ+Dy2JZWsRGtBt9+MKMjq63ZI9dOFw1w
GfrhyhmznbWgsumgC5Z6aSe5thMNdv8eNPFJ3DfhecNJFUyy0pxJYDQrtFf8
kY6MAG48fOzNk+t5GMCJKgVEs6DjwOYZDxQl9CVlYg4HiRfdZeLw+ynBPKMQ
C93CUKJrBf3ZHg0f3nvndAX3LWxXrkWOlq+PdZViEqNFENMz6+2akvsMKDaG
2xkDoeIXoKpWjMm/ndJjp2YjWNuXd1Ky23qsP82jvfNPQAvi+Bj4dlhJ6IX7
SoSDyGywQDnh10gzNt4ocjYhNrJi1FcYk5Gx9p60ap1gcqlfEgTV+OQwO81E
AXAejpyy1xFWIaingtt7/F3RXFw/LxnWwUgCBc+k5TusrtOa6CzC6jCPykzy
ncGF7SPpBvW+B/bgjgwgUnxl+ht3NRdw6hw54I0tDDAOtvTDD7ftwzopaBAO
hLbirca+x64TDAqiYjca4WkgCozqbNWNdaFW3TQpPBNaPq5m9rsOTV4JbHFv
ruvF0fPdZ+1iEYan+H5/fodtajOzEEtQAaifv1JNAILMZiFOtOgihiqb5E8S
PSWxu0y/DsofFCpyqdvDVgHbijumamnCmdIwrNGYwmUHIq67J+wp0eQwxub7
w3HCzXW/II6uXD9cgUOMPR4XI4qZmb8jLYsGDEidStSG2nM3PjQMyqCEac0q
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

-->

</rfc>
