<?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.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-v2-1-07" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title>The OAuth 2.1 Authorization Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-v2-1-07"/>
    <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">
      <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>yes.com</organization>
      <address>
        <email>torsten@lodderstedt.net</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <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>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>In the traditional client-server authentication model, the client
requests an access-restricted resource (protected resource) on the
server by authenticating with 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>Applications are required to store the resource
owner's credentials for future use, typically a password in
clear-text.</li>
        <li>Servers are required to support password authentication, despite
the security weaknesses inherent in passwords.</li>
        <li>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.</li>
        <li>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.</li>
        <li>Resource owners cannot revoke access to an individual application
without revoking access to all third parties, and must do so by
changing their password.</li>
        <li>Compromise of any application results in compromise of
the end-user's password and all of the data protected by that
password.</li>
      </ul>
      <t>OAuth addresses these issues by introducing an authorization layer
and 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>For example, an end-user (resource owner) can grant a printing
service (client) access to their protected photos stored at a photo-
sharing service (resource server), without sharing their username and
password with the printing service.  Instead, they authenticate
directly with a server trusted by the photo-sharing service
(authorization server), which issues the printing 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>This specification is designed for use with HTTP (<xref target="RFC9110"/>).  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="I-D.ietf-oauth-security-topics"/>),
and OAuth 2.0 for Browser-Based Apps (<xref target="I-D.ietf-oauth-browser-based-apps"/>).
The OAuth 2.0 Authorization Framework: Bearer Token Usage (<xref target="RFC6750"/>)
has also been updated with (<xref target="I-D.ietf-oauth-security-topics"/>). 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="I-D.ietf-oauth-security-topics"/>.</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>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>
      </section>
      <section anchor="protocol-flow">
        <name>Protocol Flow</name>
        <figure anchor="fig-protocol-flow">
          <name>Abstract Protocol Flow</name>
          <artwork><![CDATA[
     +--------+                               +---------------+
     |        |--(1)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(2)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(3)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(4)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(5)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(6)--- 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>The client requests authorization from the resource owner.  The
authorization request can be made directly to the resource owner
(as shown), or preferably indirectly via the authorization
server as an intermediary.</li>
          <li>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.</li>
          <li>The client requests an access token by authenticating with the
authorization server and presenting the authorization grant.</li>
          <li>The authorization server authenticates the client and validates
the authorization grant, and if valid, issues an access token.</li>
          <li>The client requests the protected resource from the resource
server and authenticates by presenting the access token.</li>
          <li>The resource server validates the access token, and if valid,
serves the request.</li>
        </ol>
        <t>The preferred method for the client to obtain an authorization grant
from the resource owner (depicted in steps (1) and (2)) is to use the
authorization server as an intermediary, which is illustrated in
<xref target="fig-authorization-code-flow"/> in <xref target="authorization-code-grant"/>.</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 are 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 permissions than authorized by the resource
owner).  Issuing a refresh token is optional at the discretion of the
authorization server, and may be issued 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"/>).</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>The client requests an access token by authenticating with the
authorization server and presenting an authorization grant.</li>
            <li>The authorization server authenticates the client and validates
the authorization grant, and if valid, issues an access token
and optionally a refresh token.</li>
            <li>The client makes a protected resource request to the resource
server by presenting the access token.</li>
            <li>The resource server validates the access token, and if valid,
serves the request.</li>
            <li>Steps (3) and (4) repeat until the access token expires.  If the
client knows the access token expired, it skips to step (7);
otherwise, it makes another protected resource request.</li>
            <li>Since the access token is invalid, the resource server returns
an invalid token error.</li>
            <li>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.</li>
            <li>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).</li>
          </ol>
        </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"/>)
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-token">
        <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.  The string is considered opaque to the client, even if it has
a structure. Depending on the authorization server, the access token
string may be parseable by the resource server, such as when using the
JSON Web Token Profile for Access Tokens (<xref target="RFC9068"/>).</t>
        <t>Access tokens represent specific scopes and durations of access, granted by the
resource owner, and enforced by the resource server and authorization server.</t>
        <t>The token may be used by the RS to retrieve the authorization information,
or the token may self-contain the authorization information in a verifiable
manner (i.e., 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 <xref target="RFC9068"/>,
a method of encoding 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. This is typically referred to as a sender-constrained
access token, such as Mutual TLS 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 the
access token is valid for, and the client to whom 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>
      <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 <xref target="RFC8446"/>,
to protect the exchange of clear-text credentials and tokens
either in the content or in header fields
from eavesdropping, tampering, and message forgery
(eg. see <xref target="client-secret"/>, <xref target="authorization_codes"/>, <xref target="token-endpoint"/>, and <xref target="bearer-tokens"/>).</t>
        <t>OAuth URLs 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 target="RFC9110"/>.
At the time of this writing,
TLS version 1.3 <xref target="RFC8446"/> 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 HTTP 302 status code, any other
method available via the user agent to accomplish this redirection,
with the exception of HTTP 307, 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 which implementations can choose to use, such as:</t>
        <ul spacing="normal">
          <li>
            <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</li>
          <li>
            <xref target="RFC7591"/>: Dynamic Client Registration, providing a mechanism for programmatically registering clients with an authorization server</li>
          <li>
            <xref target="RFC7592"/>: Dynamic Client Management, providing a mechanism for updating dynamically registered client information</li>
          <li>
            <xref target="RFC7662"/>: Token Introspection, defining a mechanism for resource servers to obtain information about access tokens</li>
        </ul>
        <t>Please refer to <xref target="extensions"/> for a list of current known extensions at
the time of this publication.</t>
      </section>
      <section anchor="compatibility-with-oauth-20">
        <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 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>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.</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 Section 6.4 of <xref target="RFC9110"/>.</t>
        <t>The term "user agent" is to be interpreted as described in Section 3.5 of <xref target="RFC9110"/>.</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 establish its registration with the
authorization server. The means through which the client registers
with the authorization server are beyond the scope of this
specification but typically involve 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 by using Dynamic Client Registration (<xref target="RFC7591"/>).</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>When registering a client, the client developer SHALL:</t>
      <ul spacing="normal">
        <li>specify the client type as described in <xref target="client-types"/>,</li>
        <li>provide client details needed by the grant type in use,
such as redirect URIs as described in <xref target="redirection-endpoint"/>, and</li>
        <li>include any other information required by the authorization server
(e.g., application name, website, description, logo image, the
acceptance of legal terms).</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 clients with credentials MUST take precautions to prevent leakage and abuse of their credentials.</t>
        <t>Client authentication allows an Authorization Server to ensure it interacts with a certain client
(identified by its <tt>client_id</tt>) in an OAuth flow. This might by the pre-requisite to use client
policy and metadata in the course of processing this flow. For example, the Authorization Server
may show the trustworthy client name in user consent or allow access to certain functions as
defined in the respective's client policy.</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 of this specification.
Authorization servers SHOULD consider the level of confidence in a client's identity
when deciding whether they allow a client access to certain resource servers or critical functions
such as the Client Credentials grant 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., 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 utilize the
backend for frontend pattern. 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
might even be protected from other applications residing on the same
device. If such applications wish to use
client credentials, it is recommended to utilize the
backend for frontend pattern, or 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. The Authorization Server may itself
issue the client identifier, it may also serve clients whose client identifier
was issued by a trusted third party. 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 string size is left undefined by this
specification.  The client should avoid making assumptions about the
identifier size.  The authorization server SHOULD document the size
of any identifier it issues.</t>
        <t>Authorization servers SHOULD NOT allow clients to choose or influence their
<tt>client_id</tt> value. See <xref target="client-impersonating-resource-owner"/> for details.</t>
      </section>
      <section anchor="redirection-endpoint">
        <name>Client Redirection Endpoint</name>
        <t>The client redirection endpoint (also referred to as "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 target="RFC3986"/> Section 4.3.  The endpoint URI MAY include an
"application/x-www-form-urlencoded" formatted query
component (<xref target="WHATWG.URL"/>), which MUST be retained when adding
additional query parameters. The endpoint 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 redirects, where an exact match is required except for the
port URI component.</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 reverse domain name based.  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 the collision-resistant properties,
this 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 claimed <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 was used.</t>
          <t>Clients MUST NOT expose URLs that forward the user's browser to
arbitrary URIs obtained from a query parameter ("open redirector").
Open redirectors can enable exfiltration of authorization codes and
access tokens, see (#open_redirector_on_client).</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, the client MUST
include a redirect URI with the authorization request using the
<tt>redirect_uri</tt> request parameter.</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 a malicious third party
(see Section 4.4.1.8. of <xref 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
(#csrf_countermeasures)).</t>
        </section>
        <section anchor="preventing-mix-up-attacks">
          <name>Preventing Mix-Up Attacks</name>
          <t>In order to prevent mix-up attacks (see (#mix_up)), clients MUST only process redirect
responses of the authorization server they sent the respective request
to and from the same user agent this authorization request was
initiated with. Clients MUST store the authorization server they sent
an authorization request to and bind this information to the user
agent and check that the authorization response was received from the
correct authorization server. Clients MUST ensure that the subsequent
access token request, if applicable, is sent to the same authorization
server. Clients SHOULD use distinct redirect URIs for each
authorization server as a means to identify the authorization server a
particular response came from.</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 credentials (e.g. authorization code)
it contains. Additionally, the request URL containing the authorization code
may be sent in the HTTP Referer header 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 redirection
endpoint response.  Instead, it SHOULD extract the credentials from
the URI and redirect the user agent again to another endpoint without
exposing the credentials (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>If the client is confidential, the authorization server MAY accept any
form of client authentication meeting its security requirements
(e.g., password, 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 a JWT
<xref target="RFC7523"/>.  When asymmetric methods for client authentication are
used, authorization servers do not need to store sensitive symmetric
keys, making these methods more robust against a number of attacks.</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 of 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., 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>Clients in possession of a client secret, sometimes known as a client password,
MAY use the HTTP Basic
authentication scheme as defined in Section 11 of <xref target="RFC9110"/> to authenticate with
the authorization server.  The client identifier is encoded using the
<tt>application/x-www-form-urlencoded</tt> encoding algorithm per
Appendix B, and the encoded value is used as the username; the client
secret is encoded using the same algorithm and used as the
password.  The authorization server MUST support the HTTP Basic
authentication scheme for authenticating clients that were issued a
client secret.</t>
          <t>For example (with extra line breaks for display purposes only):</t>
          <artwork><![CDATA[
Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
]]></artwork>
          <t>In addition to that, the authorization server MAY support 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 by <xref target="client-identifier"/>.</t>
            </dd>
            <dt>"client_secret":</dt>
            <dd>
              <t>REQUIRED.  The client secret.</t>
            </dd>
          </dl>
          <t>Including the client credentials in the request content using the two
parameters is NOT RECOMMENDED and SHOULD be limited to clients unable
to directly utilize the HTTP Basic authentication scheme (or other
password-based HTTP authentication schemes).  The parameters can only
be transmitted in the request content and MUST NOT be included in the
request URI.</t>
          <t>For example, a request to refresh an access token (<xref target="refreshing-an-access-token"/>) using
the content parameters (with extra line breaks for display purposes
only):</t>
          <artwork><![CDATA[
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
]]></artwork>
          <t>Since this client 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
authentication scheme.</t>
          <t>Some additional authentication methods such as mTLS <xref target="RFC8705"/>
and "private_key_jwt" <xref target="OpenID"/> 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>Authorization endpoint - used by the client to obtain
authorization from the resource owner via user agent redirection.</li>
        <li>Token endpoint - used by the client to exchange an authorization
grant for an access token, typically with client authentication.</li>
      </ul>
      <t>As well as one client endpoint:</t>
      <ul spacing="normal">
        <li>Redirection endpoint - used by the authorization server to return
responses containing authorization credentials to the client via
the resource owner user agent.</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 verify the identity of the resource owner.  The way in
which the authorization server authenticates the resource owner
(e.g., username and password login, session cookies) is beyond the
scope of this specification.</t>
        <t>The means through which the client obtains the location of the
authorization endpoint are beyond the scope of this specification,
but the location is typically provided in the service documentation,
or in the authorization server's metadata document (<xref target="RFC8414"/>).</t>
        <t>The endpoint URI MAY include an "application/x-www-form-urlencoded"
formatted query component <xref target="WHATWG.URL"/>,
which MUST be retained when adding additional query parameters.  The
endpoint URI MUST NOT include a fragment component.</t>
        <t>The authorization server MUST support the use of the HTTP <tt>GET</tt>
method Section 9.3.1 of <xref target="RFC9110"/> for the authorization endpoint and MAY support
the <tt>POST</tt> method (Section 9.3.3 of RFC9110) as well.</t>
        <t>The authorization server MUST ignore unrecognized request parameters.</t>
        <t>Request and response parameters
defined by this specification MUST NOT be included more than once.
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>
      </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 location of the token
endpoint are beyond the scope of this specification, but the location
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 endpoint URI MAY include an <tt>application/x-www-form-urlencoded</tt>
formatted query component (<xref target="WHATWG.URL"/>)
and MUST NOT include a fragment component.</t>
        <t>The client MUST use the HTTP <tt>POST</tt> method when making access token
requests.</t>
        <t>The authorization server MUST ignore unrecognized request parameters.</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.</t>
        <t>Authorization servers that wish to support browser-based applications
(applications running exclusively in client-side JavaScript without
access to a supporting backend server) will need to ensure the token endpoint
supports the necessary Cross-Origin Resource Sharing (CORS) headers.
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 will also need to have the CORS headers defined to allow access.
See <xref target="I-D.ietf-oauth-browser-based-apps"/> 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>Enforcing the binding of refresh tokens and authorization codes to
the client they were issued to.  Client authentication adds an
additional layer of security when an authorization code is transmitted
to the redirection endpoint over an insecure channel.</li>
            <li>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.</li>
            <li>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.</li>
          </ul>
        </section>
        <section anchor="token-request">
          <name>Token Request</name>
          <t>The client makes a request to the token endpoint by sending the
following parameters using the <tt>application/x-www-form-urlencoded</tt>
format per Appendix B with a character encoding of UTF-8 in the HTTP
request content:</t>
          <dl>
            <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>
            <dt>"scope":</dt>
            <dd>
              <t>OPTIONAL.  The scope of the access request as described by
<xref target="access-token-scope"/>.</t>
            </dd>
            <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>
          </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 HTTP request
(with extra line breaks for display purposes only):</t>
          <artwork><![CDATA[
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
]]></artwork>
          <t>The authorization server MUST:</t>
          <ul spacing="normal">
            <li>require client authentication for confidential clients
(or clients with other authentication requirements),</li>
            <li>authenticate the client if client authentication is included</li>
          </ul>
          <t>Further grant type specific processing rules apply and are specified with the respective
grant type.</t>
          <section anchor="access-token-scope">
            <name>Access Token Scope</name>
            <t>The authorization and token endpoints allow the client to specify the
scope of the access request using the <tt>scope</tt> request parameter.  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 list of space-
delimited, 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 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 pre-defined default value or fail the request
indicating an invalid scope.  The authorization server SHOULD
document its scope requirements and default value (if defined).</t>
          </section>
        </section>
        <section anchor="token-response">
          <name>Token Response</name>
          <t>If the access token request is valid and authorized, the
authorization server issues an access token and optional refresh
token.</t>
          <t>If the request client
authentication failed 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 optional refresh
token by creating an HTTP response content using the <tt>application/json</tt>
media type as defined by <xref target="RFC8259"/> with the following parameters
and an HTTP 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-token-types"/>.  Value is case insensitive.</t>
            </dd>
            <dt>"expires_in":</dt>
            <dd>
              <t>RECOMMENDED.  The lifetime in seconds of the access token.  For
example, the value <tt>3600</tt> denotes that the access token will
expire in one hour from the time the response was generated.
If omitted, the authorization server SHOULD provide the
expiration time via other means or document the default value.</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.  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
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
reduce the impact of refresh token leakage.</t>
          <t>The parameters are serialized into a JavaScript Object Notation (JSON)
structure by adding each parameter at the highest structure level.
Parameter names and string values are included as JSON strings.
Numerical values are included as JSON numbers.  The order of
parameters does not matter and can vary.</t>
          <t>The authorization server MUST include the HTTP <tt>Cache-Control</tt>
response header field (see Section 5.2 of <xref target="RFC9111"/>) with a value of <tt>no-store</tt> in any
response containing tokens, credentials, or other sensitive
information.</t>
          <t>For example:</t>
          <artwork><![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"
}
]]></artwork>
          <t>The client MUST ignore unrecognized value names in the response.  The
sizes of tokens and other values received from the authorization
server are left undefined.  The client should avoid making
assumptions about value sizes.  The authorization server SHOULD
document the size of any value it issues.</t>
          <section anchor="token-error-response">
            <name>Error Response</name>
            <t>The authorization server responds with an HTTP 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 an HTTP 401 (Unauthorized) status code to indicate
which HTTP authentication schemes are supported.  If the
client attempted to authenticate via the <tt>Authorization</tt>
request header field, the authorization server MUST
respond with an HTTP 401 (Unauthorized) status code and
include the <tt>WWW-Authenticate</tt> response header field
matching the authentication scheme used by the client.</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 by <xref target="RFC7159"/>.  The
parameters are serialized into a JSON structure by adding each
parameter at the highest structure level.  Parameter names and string
values are included as JSON strings.  Numerical values are included
as JSON numbers.  The order of parameters does not matter and can
vary.</t>
            <t>For example:</t>
            <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
 "error":"invalid_request"
}
]]></artwork>
          </section>
        </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>authorization code</li>
        <li>client credentials, and</li>
        <li>refresh token</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 being redirected back to from the authorization server.</t>
        <figure anchor="fig-authorization-code-flow">
          <name>Authorization Code Flow</name>
          <artwork><![CDATA[
 +----------+
 | Resource |
 |   Owner  |
 +----------+
       ^
       |
       |
 +-----|----+          Client Identifier      +---------------+
 | .---+---------(1)-- & Redirection URI ---->|               |
 | |   |    |                                 |               |
 | |   '---------(2)-- User authenticates --->|               |
 | | User-  |                                 | Authorization |
 | | Agent  |                                 |     Server    |
 | |        |                                 |               |
 | |    .--------(3)-- Authorization Code ---<|               |
 +-|----|---+                                 +---------------+
   |    |                                         ^      v
   |    |                                         |      |
   ^    v                                         |      |
 +---------+                                      |      |
 |         |>---(4)-- Authorization Code ---------'      |
 |  Client |          & Redirection 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 client in
     step (3).  If valid, the authorization server responds back 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 URI by adding parameters to the authorization server's
authorization endpoint URI. The client will eventually redirect the user agent
to this URI to initiate the request.</t>
          <t>Clients use a unique secret per authorization request to protect against authorization code
injection and CSRF attacks. The client first generates this secret, which it can
use at the time of redeeming the authorization code to prove that the client using the
authorization code is the same client that requested it.</t>
          <t>The client constructs the request URI by adding the following
parameters to the query component of the authorization endpoint URI
using the <tt>application/x-www-form-urlencoded</tt> format, per Appendix B:</t>
          <dl>
            <dt>"response_type":</dt>
            <dd>
              <t>REQUIRED.  The authorization endpoint supports different sets of request and response
pameters. 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) list 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"/>).</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 or RECOMMENDED (see <xref target="authorization_codes"/>).  Code challenge.</t>
            </dd>
            <dt>"code_challenge_method":</dt>
            <dd>
              <t>OPTIONAL, defaults to <tt>plain</tt> if not present in the request.  Code
verifier transformation method is <tt>S256</tt> or <tt>plain</tt>.</t>
            </dd>
            <dt>"redirect_uri":</dt>
            <dd>
              <t>OPTIONAL.  As described in <xref target="redirection-endpoint"/>.</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.</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>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>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 using one of the following transformations on the code
verifier:</t>
          <artwork><![CDATA[
S256
  code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))

plain
  code_challenge = code_verifier
]]></artwork>
          <t>If the client is capable of using <tt>S256</tt>, it MUST use <tt>S256</tt>, as
<tt>S256</tt> is Mandatory To Implement (MTI) on the server.  Clients are
permitted to use <tt>plain</tt> only if they cannot support <tt>S256</tt> for some
technical reason, for example constrained environments that do not have
a hashing function available, and know via out-of-band configuration or via
Authorization Server Metadata (<xref target="RFC8414"/>) that the server supports <tt>plain</tt>.</t>
          <t>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.</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"/>. In this case, using and enforcing
<tt>code_challenge</tt> and <tt>code_verifier</tt> as described in the following is still
RECOMMENDED.</t>
          <t>The <tt>state</tt> and <tt>scope</tt> parameters SHOULD NOT include sensitive
client or resource owner information in plain text, 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
HTTP request (with extra line breaks for display purposes
only):</t>
          <artwork><![CDATA[
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
]]></artwork>
          <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 using simple
character-by-character string comparison as defined in <xref target="RFC3986"/>, Section 6.2.1.</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 <tt>application/x-www-form-urlencoded</tt> format,
per Appendix B:</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 client MUST NOT use the authorization code
more than once.  If an authorization code is used more than
once, 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.  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>OPTIONAL. The identifier of the authorization server which the
client can use to prevent mixup attacks, if the client interacts
with more than one authorization server. See <xref target="RFC9207"/> for
additional details on when this parameter is necessary, and how the
client can use it to prevent mixup attacks.</t>
            </dd>
          </dl>
          <t>For example, the authorization server redirects the user agent by
sending the following HTTP response:</t>
          <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
          &state=xyz&iss=https://authorization-server.example/
]]></artwork>
          <t>The client MUST ignore unrecognized response parameters.  The
authorization code string size is left undefined by this
specification.  The client should avoid making assumptions about code
value sizes.  The authorization server SHOULD document the size of
any value it issues.</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>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 SHOULD inform the resource owner of the
error and MUST NOT automatically redirect the user agent to the
invalid redirect URI.</t>
            <t>An AS 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 <tt>error</tt> value set to
<tt>invalid_request</tt>.  The <tt>error_description</tt> or the response of
<tt>error_uri</tt> SHOULD explain the nature of error, e.g., transform
algorithm not supported.</t>
            <t>If the resource owner denies the access request or if the request
fails for reasons other than a missing or invalid redirect URI,
the authorization server informs the client by adding the following
parameters to the query component of the redirect URI using the
<tt>application/x-www-form-urlencoded</tt> format, per Appendix B:</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 HTTP 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 HTTP 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>OPTIONAL. The identifier of the authorization server. See
<xref target="authorization-response"/> above for details.</t>
              </dd>
            </dl>
            <t>For example, the authorization server redirects the user agent by
sending the following HTTP response:</t>
            <artwork><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied
          &state=xyz&iss=https://authorization-server.example/
]]></artwork>
          </section>
        </section>
        <section anchor="code-token-extension">
          <name>Token Endpoint Extension</name>
          <t>The authorization 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 required:</t>
          <dl>
            <dt>"code":</dt>
            <dd>
              <t>REQUIRED.  The authorization code received from the
authorization server.</t>
            </dd>
            <dt>"redirect_uri":</dt>
            <dd>
              <t>REQUIRED, if the <tt>redirect_uri</tt> parameter was included in the
authorization request as described in <xref target="authorization-request"/>, in which case their
values MUST be identical. If no <tt>redirect_uri</tt> was included in the
authorization request, this parameter is OPTIONAL.</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>
          </dl>
          <t>For example, the client makes the following HTTP request
(with extra line breaks for display purposes only):</t>
          <artwork><![CDATA[
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
]]></artwork>
          <t>In addition to the processing rules in <xref target="token-request"/>, the authorization server MUST:</t>
          <ul spacing="normal">
            <li>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 <tt>client_id</tt> in the request,</li>
            <li>verify that the authorization code is valid,</li>
            <li>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,</li>
            <li>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</li>
            <li>ensure that the <tt>redirect_uri</tt> parameter is present if the
<tt>redirect_uri</tt> parameter was included in the initial authorization
request as described in <xref target="authorization-request"/>, and if included ensure that
their values are identical.</li>
          </ul>
        </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 authorization 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, no additional parameters beyond <xref target="token-request"/> are required/supported:</t>
          <t>For example, the client makes the following HTTP request using
transport-layer security (with extra line breaks for display purposes
only):</t>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
]]></artwork>
          <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 more narrow than
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 among the authorization server and the client to whom the
refresh tokens were issued.  The authorization server MUST maintain
the binding between a refresh token and the client to whom it was
issued.</t>
        <t>The authorization server MUST verify the binding between the refresh
token and 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 (#refreshing-an-access-token).</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="token-endpoint-extension">
          <name>Token Endpoint Extension</name>
          <t>The authorization 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 required/supported:</t>
          <dl>
            <dt>"refresh_token":</dt>
            <dd>
              <t>REQUIRED.  The refresh token issued to the client.</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 (with extra line breaks for display purposes
only):</t>
          <artwork><![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
]]></artwork>
          <t>In addition to the processing rules in <xref target="token-request"/>, the authorization server MUST:</t>
          <ul spacing="normal">
            <li>validate the refresh token.</li>
          </ul>
          <t>Authorization servers SHOULD utilize one of these methods to detect
refresh token replay by malicious actors for public clients:</t>
          <ul spacing="normal">
            <li>
              <em>Sender-constrained refresh tokens:</em> the authorization server
cryptographically binds the refresh token to a certain client
instance by utilizing <xref target="I-D.ietf-oauth-token-binding"/>, <xref target="RFC8705"/>,
<xref target="I-D.ietf-oauth-dpop"/>, or another suitable method.</li>
            <li>
              <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.  This stops the attack at the
cost of forcing the legitimate client to obtain a fresh
authorization grant.</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,
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>
          <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.</t>
          <t>Authorization servers MAY revoke refresh tokens automatically in case
of a security event, such as:</t>
          <ul spacing="normal">
            <li>password change</li>
            <li>logout at the authorization server</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>
        </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 HTTP request
(with extra line breaks for display purposes only):</t>
        <artwork><![CDATA[
  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
]]></artwork>
        <t>If the access token request is valid and authorized, the
authorization server issues an access token and optional 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>Accessing Protected Resources</name>
      <t>The client accesses protected resources by presenting the 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 (as well as any error responses)
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>
      <t>The method in which the client utilizes the access token to
access protected resources at the resource server depends on the type of access
token issued by the authorization server.  Typically, it involves
using the HTTP <tt>Authorization</tt> request header field <xref target="RFC7235"/> with an
authentication scheme defined by the specification of the access
token type used, such as <tt>Bearer</tt>, defined below.</t>
      <section anchor="access-token-types">
        <name>Access Token Types</name>
        <t>The access token type provides the client with the information
required to successfully utilize the access token to make a protected
resource request (along with type-specific attributes).  The client
MUST NOT use an access token if it does not understand the token
type.</t>
        <t>For example, the <tt>Bearer</tt> token type defined in this specification is utilized
by simply including the access token string in the request:</t>
        <artwork><![CDATA[
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork>
        <t>The above example is provided for illustration purposes only.</t>
        <t>Each access token type definition specifies the additional attributes
(if any) sent to the client together with the <tt>access_token</tt> response
parameter.  It also defines the HTTP authentication method used to
include the access token when making a protected resource request.</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 mTLS <xref target="RFC8705"/> to provide proof-of-possession characteristics.</t>
        <t>To protect against access token disclosure, the
communication interaction 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, as described in <xref target="accessing-protected-resources"/>. If a bearer token is a reference to authorization information, such references MUST be infeasible for an attacker to guess, such as 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 JSON Web Token Profile for Access Tokens <xref target="RFC9068"/>.</t>
        <section anchor="authenticated-requests">
          <name>Authenticated 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 <tt>Authorization</tt> request header
field defined by HTTP/1.1 <xref target="RFC7235"/>, the client uses the <tt>Bearer</tt>
authentication scheme to transmit the access token.</t>
            <t>For example:</t>
            <artwork><![CDATA[
 GET /resource HTTP/1.1
 Host: server.example.com
 Authorization: Bearer mF_9.B5f-4.1JqM
]]></artwork>
            <t>The syntax of the <tt>Authorization</tt> header field for this scheme
follows the usage of the Basic scheme defined in Section 2 of
<xref target="RFC2617"/>.  Note that, as with Basic, it does not conform to the
generic syntax defined in Section 1.2 of <xref target="RFC2617"/> but is compatible
with the general authentication framework in HTTP 1.1 Authentication
<xref target="RFC7235"/>, although it does not follow the preferred
practice outlined therein in order to reflect existing deployments.
The syntax for Bearer credentials is as follows:</t>
            <artwork><![CDATA[
b64token    = 1*( ALPHA / DIGIT /
                 "-" / "." / "_" / "~" / "+" / "/" ) *"="
credentials = "Bearer" 1*SP b64token
]]></artwork>
            <t>Clients SHOULD make authenticated requests with a bearer token using
the <tt>Authorization</tt> request header field with the <tt>Bearer</tt> HTTP
authorization scheme.  Resource servers MUST support this method.</t>
          </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>The HTTP request includes the <tt>Content-Type</tt> header
field set to <tt>application/x-www-form-urlencoded</tt>.</li>
              <li>The content follows the encoding requirements of the
<tt>application/x-www-form-urlencoded</tt> content-type as defined by
the URL Living Standard <xref target="WHATWG.URL"/>.</li>
              <li>The HTTP request content is single-part.</li>
              <li>The content to be encoded in the request MUST consist entirely
of ASCII <xref target="USASCII"/> characters.</li>
              <li>The HTTP request method is one for which the content has
defined semantics.  In particular, this means that the <tt>GET</tt>
method MUST NOT be used.</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>
            <artwork><![CDATA[
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

access_token=mF_9.B5f-4.1JqM
]]></artwork>
            <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 <tt>Authorization</tt> 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 is not yet 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
which 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 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="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 HTTP
<tt>WWW-Authenticate</tt> response header field; it MAY include it in
response to other conditions as well.  The <tt>WWW-Authenticate</tt> header
field uses the framework defined by HTTP/1.1 <xref target="RFC7235"/>.</t>
          <t>All challenges for this token type MUST use the auth-scheme
value <tt>Bearer</tt>.  This scheme MUST 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>
          <t>A <tt>realm</tt> attribute MAY be included to indicate the scope of
protection in the manner described in HTTP/1.1 <xref target="RFC7235"/>.  The
<tt>realm</tt> attribute MUST NOT appear more than once.</t>
          <t>The <tt>scope</tt> attribute is defined in <xref target="access-token-scope"/>.  The
<tt>scope</tt> attribute is a space-delimited list of case-sensitive scope
values indicating the required scope of the access token for
accessing the requested resource. <tt>scope</tt> values are implementation
defined; there is no centralized registry for them; 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.Messages"/> 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>
          <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"/>.  In addition, the resource server MAY include the
<tt>error_description</tt> attribute to provide developers a human-readable
explanation that is not meant to be displayed to end-users.  It also
MAY include the <tt>error_uri</tt> attribute with an absolute URI
identifying a human-readable web page explaining the error.  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 Appendix A.4)
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 Appendixes A.7 and A.8) MUST
NOT include characters outside the set %x20-21 / %x23-5B / %x5D-7E.
Values for the <tt>error_uri</tt> attribute (specified in Appendix A.9 of)
MUST conform to the URI-reference syntax and thus MUST NOT
include characters outside the set %x21 / %x23-5B / %x5D-7E.</t>
          <t>For example, in response to a protected resource request without
authentication:</t>
          <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
]]></artwork>
          <t>And in response to a protected resource request with an
authentication attempt using an expired access token:</t>
          <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example",
                  error="invalid_token",
                  error_description="The access token expired"
]]></artwork>
        </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 HTTP 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 SHOULD respond with
the HTTP 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 HTTP
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>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>
          <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example"
]]></artwork>
        </section>
      </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 method by which the resource server
does this is determined by the particular token type, such as the
description of Bearer tokens in <xref target="bearer-token-error-codes"/>.</t>
        <section anchor="extension-token-types">
          <name>Extension Token Types</name>
          <t><xref target="RFC6750"/> establishes a common registry in Section 11.4 of <xref 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 error registry established by this specification.</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>
        </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: registered in
the Access Token Types registry (following the procedures in
Section 11.1 of <xref target="RFC6749"/>), or by using a unique absolute URI as its name.</t>
        <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.  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 by <xref target="RFC2617"/>).  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="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 Section 11.2 of <xref target="RFC6749"/>.</t>
        <t>Parameter names MUST conform to the param-name ABNF, and parameter
values 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 'companyname_').</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 Section 11.2 of <xref 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 Authorization Endpoint Response Types
registry following the procedure in Section 11.3 of <xref 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 list 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
Section 11.4 of <xref target="RFC6749"/>) if the extension they are used in conjunction with 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 set to 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="I-D.ietf-oauth-security-topics"/>.</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 is based on NIST
Special Publication 800-63 <xref target="NIST800-63"/>.</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-disclosure">
            <name>Access token disclosure</name>
            <t>Access tokens may contain authentication and attribute
statements that include sensitive information.</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.</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
server and the access token issuer to resolve the reference to the
authorization information.  The mechanics of such an interaction are
not defined by this specification.</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 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>If cookies are transmitted without TLS protection, any
information contained in them is at risk of disclosure.  Therefore,
Bearer tokens MUST NOT be stored in cookies that can be sent in the
clear, as any information in them is at risk of disclosure.
See "HTTP State Management Mechanism" <xref target="RFC6265"/> for security
considerations about cookies.</t>
          <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>
        </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 they will
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 them being
leaked.</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 relying party or set of relying parties.</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 message headers or
message bodies 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="token-replay-prevention">
          <name>Token Replay Prevention</name>
          <t>A sender-constrained access token scopes the applicability of an
access token to a certain sender.  This sender is obliged to
demonstrate knowledge of a certain secret as 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-
constrained access tokens to prevent token replay as described in
Section 4.8.1.1.2 of <xref target="I-D.ietf-oauth-security-topics"/>.
The use of Mutual TLS for OAuth 2.0 <xref target="RFC8705"/> is RECOMMENDED.</t>
          <t>It is RECOMMENDED to use end-to-end TLS.  If TLS traffic needs to be
terminated at an intermediary, refer to Section 4.11 of <xref target="I-D.ietf-oauth-security-topics"/>
for further security advice.</t>
        </section>
        <section anchor="access-token-privilege-restriction">
          <name>Access Token Privilege Restriction</name>
          <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 parameter <tt>scope</tt> and
<tt>authorization_details</tt> as specified in <xref target="I-D.ietf-oauth-rar"/> to
determine those resources and/or actions.</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.
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.
In contrast, if there is a registered application whose developer's identity
was verified, who signed a contract and is 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>A malicious client can impersonate another client and obtain access
to protected resources if the impersonated client fails to, or is
unable to, keep its client credentials confidential.</t>
        <t>The authorization server SHOULD enforce explicit resource owner
authentication 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 MAY be accepted by
authorization servers as identity proof.  Some operating systems may
offer alternative platform-specific identity features that MAY be
accepted, as appropriate.</t>
        </section>
        <section anchor="access-token-privilege-restriction-1">
          <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 less rights 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
<xref target="RFC8707"/>, respectively, to determine the
resource server they want to access.</t>
        </section>
        <section anchor="access-token-replay-prevention">
          <name>Access Token Replay Prevention</name>
          <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 parameter <tt>scope</tt> and <tt>authorization_details</tt> as specified in
<xref target="I-D.ietf-oauth-rar"/> to determine those resources and/or actions.</t>
          <t>Authorization and resource servers SHOULD use mechanisms for
sender-constrained access tokens to prevent token replay as described
in (#pop_tokens). A sender-constrained access token scopes the applicability
of an access
token to a certain sender. This sender is obliged to demonstrate knowledge
of a certain secret as prerequisite for the acceptance of that access token at
the recipient (e.g., a resource server). The use of Mutual TLS for OAuth 2.0
<xref target="RFC8705"/> is RECOMMENDED.</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 the resource owner as communicated in the <tt>sub</tt> claim
returned by the authorization server in a token introspection
response <xref target="RFC7662"/> or other mechanisms.  If a client is able to
choose its own <tt>client_id</tt> during registration with the authorization
server, then there is a risk that it can register with the same <tt>sub</tt>
value as a privileged user.  A subsequent access token obtained under
the client credentials grant may be mistaken for an access token
authorized by the privileged user if the resource server does not
perform additional checks.</t>
        <t>Authorization servers SHOULD NOT allow clients to influence their
<tt>client_id</tt> or <tt>sub</tt> value 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 access tokens authorized by a
resource owner from access tokens authorized by the client itself.</t>
      </section>
      <section anchor="protecting-the-authorization-code-flow">
        <name>Protecting the Authorization Code Flow</name>
        <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 anchor="redirect_307">
          <name>HTTP 307 Redirect</name>
          <t>An AS which redirects a request that potentially contains user
credentials MUST NOT use the 307 status code (see Section 15.4.8 of <xref target="RFC9110"/>) for
redirection.
If an HTTP redirection (and not, for example,
JavaScript) is used for such a request, AS SHOULD use the status
code 303 "See Other".</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 status code 307 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
relying party 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
Section 15.4.8 of <xref target="RFC9110"/>.  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="RFC9110"/>, only the status code 303
unambigiously enforces rewriting the HTTP POST request to an HTTP GET
request.  For all other status codes, including the popular 302, user
agents can opt not to rewrite POST to GET requests and therefore to
reveal the user credentials to the client.  (In practice, however,
most user agents will only show this behaviour for 307 redirects.)</t>
          <t>Therefore, the RECOMMENDED status code for HTTP redirects is 303.</t>
        </section>
      </section>
      <section anchor="authorization_codes">
        <name>Authorization Codes</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>The client is a confidential client.</li>
          <li>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.</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>Historic 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, this advice applies to all kinds of OAuth clients,
including web applications and other confidential clients.</t>
        <t>Clients SHOULD 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 (#secmodel)) can break the security provided
by this mechanism. Currently, <tt>S256</tt> is the only such method.</t>
        <t>When an authorization code arrives at the token endpoint, the
authorization server MUST do the following check:</t>
        <ol spacing="normal" type="1"><li>If there was a <tt>code_challenge</tt> in the authorization request for which this
code was issued, there must be a <tt>code_verifier</tt> in the token request, and it
MUST be verified according to the steps in <xref target="token-request"/>.
(This is no change from the current behavior in <xref target="RFC7636"/>.)</li>
          <li>If there was no <tt>code_challenge</tt> in the authorization request, any request to
the token endpoint containing a <tt>code_verifier</tt> MUST be rejected.</li>
        </ol>
        <t>Authorization servers MUST provide a way to detect their support for
the <tt>code_challenge</tt> mechanism. To this end, they MUST either (a) publish the element
<tt>code_challenge_methods_supported</tt> in their AS metadata (<xref target="RFC8414"/>)
containing the supported <tt>code_challenge_method</tt>s (which can be used by
the client to detect support) or (b) provide a
deployment-specific way to ensure or determine support by the AS.</t>
      </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 <xref target="RFC8446"/>
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 end-user usage.</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.</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.  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="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 are CSRF tokens that are bound to the
user agent and passed in the <tt>state</tt> parameter to the authorization
server as described in <xref 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>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.</li>
          <li>If <tt>state</tt> is used for carrying application state, and 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 state to the browser session and/or signed/encrypted
state values <xref target="I-D.bradley-oauth-jwt-encoded-state"/>.</li>
        </ul>
        <t>AS therefore MUST provide a way to detect their supported code challenge methods
either via AS metadata according to <xref target="RFC8414"/> or provide a
deployment-specific way to ensure or determine support.</t>
      </section>
      <section anchor="clickjacking">
        <name>Clickjacking</name>
        <t>As described in Section 4.4.1.9 of <xref target="RFC6819"/>, the authorization
request is susceptible to clickjacking. 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 HTTP response header field 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 some other origin 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>
        <t><tt>
HTTP/1.1 200 OK
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
...
</tt></t>
        <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="code-injection-and-input-validation">
        <name>Code Injection and Input Validation</name>
        <t>A code 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 sanitize (and validate when
possible) any value received -- in particular, the value of the
<tt>state</tt> and <tt>redirect_uri</tt> parameters.</t>
      </section>
      <section anchor="open-redirectors">
        <name>Open Redirectors</name>
        <t>The following attacks can occur when an AS or client has an open
redirector. An open redirector is an endpoint that forwards a user's
browser to an arbitrary URI obtained from a query parameter.</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 and access tokens, as described in
(#redir_uri_open_redir). Another abuse case is to produce URLs that
appear to point to the client. This might trick users into trusting the URL
and follow 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 whitelisted 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 web sites (the clients), but must do so in a safe way.</t>
          <t><xref target="authorization-code-error-response"/> already prevents open redirects by
stating that the AS MUST NOT automatically redirect the user agent in 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 intentionally send an erroneous authorization request, e.g., by
using an invalid scope value, thus instructing the AS to redirect the
user agent to its phishing site.</t>
          <t>The AS MUST take precautions to prevent this threat. Based on its risk
assessment, the AS needs to decide whether it can trust the redirect
URI and SHOULD only automatically redirect the user agent if it trusts
the redirect URI. If the URI is not trusted, the AS MAY inform the
user and rely on the user to make the correct decision.</t>
        </section>
      </section>
      <section anchor="authorization-server-mix-up-mitigation-in-native-apps">
        <name>Authorization Server Mix-Up Mitigation in Native Apps</name>
        <t>(TODO: merge this with the regular mix-up section when it is brought in)</t>
        <t>To protect against a compromised or malicious authorization server
attacking another authorization server used by the same app, it is
REQUIRED that a unique redirect URI is used for each authorization
server used by the app (for example, by varying the path component),
and that authorization responses are rejected if the redirect URI
they were received on doesn't match the redirect URI in an outgoing
authorization request.</t>
        <t>The native app MUST store the redirect URI used in the authorization
request with the authorization session data (i.e., along with <tt>state</tt>
and other related data) and MUST verify that the URI on which the
authorization response was received exactly matches it.</t>
        <t>The requirement of <xref target="native-app-registration"/>, specifically that authorization
servers reject requests with URIs that don't match what was
registered, is also required to prevent such attacks.</t>
      </section>
      <section anchor="other-recommendations">
        <name>Other Recommendations</name>
        <t>Authorization servers SHOULD NOT allow clients to influence their
<tt>client_id</tt> or <tt>sub</tt> value or any other claim if that can cause
confusion with a genuine resource owner (see (#client_impersonating)).</t>
      </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 (i.e., desktop application, native mobile
application).  Native applications require special consideration
related to security, platform capabilities, and overall end-user
experience.</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 using a redirect URI
with a 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
by 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 browser are more
secure and can take advantage of the user's authentication state.
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 this best practice.</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 secrets, native apps are
classified as public clients, as defined in <xref target="client-types"/>;
they 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 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 should not be treated as confidential secrets, as one
user may inspect their copy and learn the shared secret.  For this
reason, it is NOT
RECOMMENDED for authorization servers to require client
authentication of public native apps clients using a shared secret,
as this serves little 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 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>
      </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 like 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 back 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 URI 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 URI, the app uses
platform-specific APIs to open the URI 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 best practice 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 best
practice, 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 varies by platform.</t>
        <section anchor="claimed-https-scheme-uri-redirection">
          <name>Claimed "https" Scheme URI Redirection</name>
          <t>Some operating systems allow apps to claim <tt>https</tt> URIs
(see Section 4.2.2 of <xref target="RFC9110"/>)
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>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 Section 3.8 of <xref 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 their 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 Section 3.2 of <xref 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.</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 blacklist the app's signature in malware scanning
software, take removal action (in the case of apps distributed by app
stores) and 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 complete
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>
    </section>
    <section anchor="browser-based-apps">
      <name>Browser-Based Apps</name>
      <t>Browser-based apps are are clients that run in a web browser, typically
written in JavaScript, also known as "single-page apps". These types of apps
have particular security considerations similar to native apps.</t>
      <t>TODO: Bring in the normative text of the browser-based apps BCP when it is finalized.</t>
    </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 Apps (<xref target="I-D.ietf-oauth-browser-based-apps"/>),
OAuth Security Best Current Practice (<xref target="I-D.ietf-oauth-security-topics"/>),
and Bearer Token Usage (<xref target="RFC6750"/>).</t>
      <t>Where a later draft updates or obsoletes functionality found in the original
<xref target="RFC6749"/>, that functionality in this draft is updated with the normative
changes described in a later draft, or removed entirely.</t>
      <t>A non-normative list of changes from OAuth 2.0 is listed below:</t>
      <ul spacing="normal">
        <li>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</li>
        <li>Redirect URIs must be compared using exact string matching
as per Section 4.1.3 of <xref target="I-D.ietf-oauth-security-topics"/></li>
        <li>The Implicit grant (<tt>response_type=token</tt>) is omitted from this specification
as per Section 2.1.2 of <xref target="I-D.ietf-oauth-security-topics"/></li>
        <li>The Resource Owner Password Credentials grant is omitted from this specification
as per Section 2.4 of <xref target="I-D.ietf-oauth-security-topics"/></li>
        <li>Bearer token usage omits the use of bearer tokens in the query string of URIs
as per Section 4.3.2 of <xref target="I-D.ietf-oauth-security-topics"/></li>
        <li>Refresh tokens for public clients must either be sender-constrained or one-time use
as per Section 4.13.2 of <xref target="I-D.ietf-oauth-security-topics"/></li>
      </ul>
      <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="I-D.ietf-oauth-security-topics"/>.</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 are unable to 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"/>.</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>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <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" target="https://www.rfc-editor.org/info/rfc4949" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4949.xml">
          <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" target="https://www.rfc-editor.org/info/rfc5234" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml">
          <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" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <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" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <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="RFC7159" target="https://www.rfc-editor.org/info/rfc7159" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7159.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2014"/>
            <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="RFC" value="7159"/>
          <seriesInfo name="DOI" value="10.17487/RFC7159"/>
        </reference>
        <reference anchor="RFC7235" target="https://www.rfc-editor.org/info/rfc7235" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7235.xml">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems.  This document defines the HTTP Authentication framework.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7235"/>
          <seriesInfo name="DOI" value="10.17487/RFC7235"/>
        </reference>
        <reference anchor="RFC7523" target="https://www.rfc-editor.org/info/rfc7523" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7523.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7595" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7595.xml">
          <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="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC8252" target="https://www.rfc-editor.org/info/rfc8252" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8252.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <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="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <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 updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <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="RFC9111" target="https://www.rfc-editor.org/info/rfc9111" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9111.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9207" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9207.xml">
          <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="I-D.ietf-oauth-security-topics" target="https://www.ietf.org/archive/id/draft-ietf-oauth-security-topics-21.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-security-topics.xml">
          <front>
            <title>OAuth 2.0 Security Best Current Practice</title>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>yes.com</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Andrey Labunets" initials="A." surname="Labunets">
              <organization>Independent Researcher</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>yes.com</organization>
            </author>
            <date day="27" month="September" year="2022"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the OAuth 2.0 Security Threat Model 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.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-security-topics-21"/>
        </reference>
        <reference anchor="BCP195">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS)</title>
            <author initials="P." surname="Saint-Andre">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
        </reference>
        <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="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" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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="RFC2617" target="https://www.rfc-editor.org/info/rfc2617" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2617.xml">
          <front>
            <title>HTTP Authentication: Basic and Digest Access Authentication</title>
            <author fullname="J. Franks" initials="J." surname="Franks"/>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <author fullname="J. Hostetler" initials="J." surname="Hostetler"/>
            <author fullname="S. Lawrence" initials="S." surname="Lawrence"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <author fullname="A. Luotonen" initials="A." surname="Luotonen"/>
            <author fullname="L. Stewart" initials="L." surname="Stewart"/>
            <date month="June" year="1999"/>
            <abstract>
              <t>This document provides the specification for HTTP's authentication framework, the original Basic authentication scheme and a scheme based on cryptographic hashes, referred to as "Digest Access Authentication". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2617"/>
          <seriesInfo name="DOI" value="10.17487/RFC2617"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6265" target="https://www.rfc-editor.org/info/rfc6265" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6265.xml">
          <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" target="https://www.rfc-editor.org/info/rfc6819" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6819.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7009" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7009.xml">
          <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="RFC7519" target="https://www.rfc-editor.org/info/rfc7519" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7591" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7591.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7592" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7592.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7636" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7636.xml">
          <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" target="https://www.rfc-editor.org/info/rfc7662" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7662.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8414" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8414.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8628" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8705" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8705.xml">
          <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" target="https://www.rfc-editor.org/info/rfc8707" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8707.xml">
          <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" target="https://www.rfc-editor.org/info/rfc9068" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9068.xml">
          <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="RFC9126" target="https://www.rfc-editor.org/info/rfc9126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9126.xml">
          <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="I-D.ietf-oauth-rar" target="https://datatracker.ietf.org/api/v1/doc/document/draft-ietf-oauth-rar/" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-rar.xml">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="Torsten Lodderstedt"/>
            <author fullname="Justin Richer"/>
            <author fullname="Brian Campbell"/>
            <date day="24" month="October" year="2022"/>
            <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="Internet-Draft" value="draft-ietf-oauth-rar-14"/>
        </reference>
        <reference anchor="I-D.bradley-oauth-jwt-encoded-state" target="https://www.ietf.org/archive/id/draft-bradley-oauth-jwt-encoded-state-09.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.bradley-oauth-jwt-encoded-state.xml">
          <front>
            <title>Encoding claims in the OAuth 2 state parameter using a JWT</title>
            <author fullname="John Bradley" surname="John Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Dr.-Ing. Torsten Lodderstedt" surname="Dr.-Ing. Torsten Lodderstedt">
              <organization>YES.com AG</organization>
            </author>
            <author fullname="Hans Zandbelt" surname="Hans 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-token-binding" target="https://www.ietf.org/archive/id/draft-ietf-oauth-token-binding-08.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-token-binding.xml">
          <front>
            <title>OAuth 2.0 Token Binding</title>
            <author fullname="Michael B. Jones" initials="B." surname="Michael Jones">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Brian Campbell" surname="Brian Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="John Bradley" surname="John Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="William Denniss" surname="William Denniss">
              <organization>Google</organization>
            </author>
            <date day="19" month="October" year="2018"/>
            <abstract>
              <t>This specification enables OAuth 2.0 implementations to apply Token Binding to Access Tokens, Authorization Codes, Refresh Tokens, JWT Authorization Grants, and JWT Client Authentication. This cryptographically binds these tokens to a client's Token Binding key pair, possession of which is proven on the TLS connections over which the tokens are intended to be used. This use of Token Binding protects these tokens from man-in-the-middle and token export and replay attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-token-binding-08"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-browser-based-apps" target="https://www.ietf.org/archive/id/draft-ietf-oauth-browser-based-apps-11.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-browser-based-apps.xml">
          <front>
            <title>OAuth 2.0 for Browser-Based Apps</title>
            <author fullname="Aaron Parecki" surname="Aaron Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="David Waite" surname="David Waite">
              <organization>Ping Identity</organization>
            </author>
            <date day="13" month="September" year="2022"/>
            <abstract>
              <t>This specification details the security considerations and best practices that must be taken into account when developing browser- based applications that use OAuth 2.0. Discussion Venues This note is to be removed before publishing as an RFC. Discussion of this document takes place on the Web Authorization Protocol Working Group mailing list (oauth@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/oauth/. Source for this draft and an issue tracker can be found at https://github.com/oauth-wg/oauth-browser-based-apps.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-browser-based-apps-11"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-dpop" target="https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-11.txt" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-oauth-dpop.xml">
          <front>
            <title>OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP)</title>
            <author fullname="Daniel Fett" surname="Daniel Fett">
              <organization>yes.com</organization>
            </author>
            <author fullname="Brian Campbell" surname="Brian Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="John Bradley" surname="John Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Torsten Lodderstedt" surname="Torsten Lodderstedt">
              <organization>yes.com</organization>
            </author>
            <author fullname="Michael Jones" surname="Michael Jones">
              <organization>Microsoft</organization>
            </author>
            <author fullname="David Waite" surname="David Waite">
              <organization>Ping Identity</organization>
            </author>
            <date day="10" month="August" year="2022"/>
            <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="Internet-Draft" value="draft-ietf-oauth-dpop-11"/>
        </reference>
        <reference anchor="OpenID" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0</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="2014" month="November"/>
          </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</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="OpenID.Messages" target="http://openid.net/specs/openid-connect-messages-1_0.html">
          <front>
            <title>OpenID Connect Messages 1.0</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>
            <author initials="E." surname="Jay">
              <organization/>
            </author>
            <date year="2012" month="June"/>
          </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>
    <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
UNICODECHARNOCRLF = %x09 /%x20-7E / %x80-D7FF /
                    %xE000-FFFD / %x10000-10FFFF
]]></artwork>
      <t>(The UNICODECHARNOCRLF definition is based upon the Char definition
in Section 2.2 of <xref target="W3C.REC-xml-20081126"/>, but omitting the Carriage
Return and Linefeed characters.)</t>
      <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 Sections <xref target="authorization-code-error-response"/>, <xref target="token-error-response"/>,
7.2, and 8.5:</t>
        <artwork><![CDATA[
 error             = 1*NQSCHAR
]]></artwork>
      </section>
      <section anchor="errordescription-syntax">
        <name>"error_description" Syntax</name>
        <t>The <tt>error_description</tt> element is defined in Sections <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="erroruri-syntax">
        <name>"error_uri" Syntax</name>
        <t>The <tt>error_uri</tt> element is defined in Sections <xref target="authorization-code-error-response"/>, <xref target="token-error-response"/>,
and 7.2:</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 Section <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>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>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="extensions">
      <name>Extensions</name>
      <t>Below is a list of well-established extensions at the time of publication:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC8628"/>: OAuth 2.0 Device Authorization Grant
          </t>
          <ul spacing="normal">
            <li>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 like hardware video encoders that can stream video to a streaming video service.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8414"/>: Authorization Server Metadata
          </t>
          <ul spacing="normal">
            <li>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.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8707"/>: Resource Indicators
          </t>
          <ul spacing="normal">
            <li>Provides a way for the client to explicitly signal to the authorization server where it intends to use the access token it is requesting.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7591"/>: Dynamic Client Registration
          </t>
          <ul spacing="normal">
            <li>Dynamic Client Registration provides a mechanism for programmatically registering clients with an authorization server.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7592"/>: Dynamic Client Management
          </t>
          <ul spacing="normal">
            <li>Dynamic Client Management provides a mechanism for updating dynamically registered client information.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9068"/>: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
          </t>
          <ul spacing="normal">
            <li>This specification defines a profile for issuing OAuth access tokens in JSON Web Token (JWT) format.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC8705"/>: Mutual TLS
          </t>
          <ul spacing="normal">
            <li>Mutual TLS describes a mechanism of binding access tokens and refresh tokens to the clients they were issued to, as well as a client authentication mechanism, via TLS certificate authentication.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7662"/>: Token Introspection
          </t>
          <ul spacing="normal">
            <li>The Token Introspection extension defines a mechanism for resource servers to obtain information about access tokens.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC7009"/>: Token Revocation
          </t>
          <ul spacing="normal">
            <li>The Token Revocation extension defines a mechanism for clients to indicate to the authorization server that an access token is no longer needed.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9126"/>: Pushed Authorization Requests
          </t>
          <ul spacing="normal">
            <li>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.</li>
          </ul>
        </li>
        <li>
          <t><xref target="RFC9207"/>: Authorization Server Issuer Identification
          </t>
          <ul spacing="normal">
            <li>The <tt>iss</tt> parameter in the authorization response indicates the identity of the authorization server to prevent mix-up attacks in the client.</li>
          </ul>
        </li>
        <li>
          <t><xref target="I-D.ietf-oauth-rar"/>: Rich Authorization Requests
          </t>
          <ul spacing="normal">
            <li>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.</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 Apps. 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: Vittorio Bertocci, Michael Jones, Justin Richer, Daniel Fett, Joseph Heenan, Roberto Polli, Andrii Deinega, Falko, Michael Peck, and Bob Hamburg.</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 anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-07</t>
      <ul spacing="normal">
        <li>Removed "third party" from abstract</li>
        <li>Added MFA and passwordless as additional motiviations in introduction</li>
        <li>Mention PAR as one way redirect URI registration can happen</li>
        <li>Added a reference to requiring CORS headers on the token endpoint</li>
        <li>Updated reference to OMAP extension</li>
        <li>Fixed numbering in sequence diagram</li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>Removed "credentialed client" term</li>
        <li>Simplified definition of "confidential" and "public" clients</li>
        <li>Incorporated the <tt>iss</tt> response parameter referencing RFC9207</li>
        <li>Added section on access token validation by the RS</li>
        <li>Removed requirement for authorization servers to support all 3 redirect methods for native apps</li>
        <li>Fixes for some references</li>
        <li>Updates HTTP references to RFC 9110</li>
        <li>Clarifies "authorization grant" term</li>
        <li>Clarifies client credential grant usage</li>
        <li>Clean up authorization code diagram</li>
        <li>Updated reference for application/x-www-form-urlencoded and removed outdated note about it not being in the IANA registry</li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>Added a section about the removal of the implicit flow</li>
        <li>Moved many normative requirements from security considerations into the appropriate inline sections</li>
        <li>Reorganized and consolidated TLS language</li>
        <li>Require TLS on redirect URIs except for localhost/custom URL scheme</li>
        <li>Updated refresh token guidance to match security BCP</li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>Added explicit mention of not sending access tokens in URI query strings</li>
        <li>Clarifications on definition of client types</li>
        <li>Consolidated text around loopback vs localhost</li>
        <li>Editorial clarifications throughout the document</li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>refactoring to collect all the grant types under the same top-level header in section 4</li>
        <li>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</li>
        <li>Incorporated many of the published errata on RFC6749</li>
        <li>Updated references to various RFCs</li>
        <li>Editorial clarifications throughout the document</li>
      </ul>
      <t>-02</t>
      <t>-01</t>
      <t>-00</t>
      <ul spacing="normal">
        <li>initial revision</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963YbyZUu+D+fIg+1XEXaAERStyq51aepW5XKpYtFqXXK
Xj5iAkiQaQFIdCZAilap3+C8wzzLrDXvNfsasSMyEqTK1e7pWa3V7ZIAZGRc
duz7/vZwOMzW1Xpe3s/fnJX5y6PN+iw/HB3k+Je6qf5WrKt6mT9tikV5UTcf
smk9WcLf7+fTppith1W5ng3rAn48PD8cHgz372VZtWru5+tm064P9/e/3T/M
Lk7vy8jvYIhqeZp/19SbVfbh4n7+bLkum2W5Hj7G8bJJsb6ft+tpVjRlcT8/
LiebplpfZtmqup/l+bqe3M8vyxb+2tbNuilnrfv35cL/Myto+vjIMK+W8Onj
Uf590UzX8Eme181psZS13c+/L+fz/+f/0Be8tMfV5IP5dbkoqjksGD4dneGn
/3KKn4wm9cKPfzTKX8GcJx8qM9BR0cDm2c9lrAK/+JcVfyEDxdN6+WFd0Mew
A/fzs/V61d6/eZOeDB+UGbwZ5T/W02nZtOtSZs6zeFPjR8vOtzKXNX/9L3P/
9QgOJDEj2Fl6ZbasmwV8dl7iBr9++ujWt9/clb/e/vb2t/LXO4e3bstf795z
n969d2df/nrv4I5+eu/w1h39Kzzn/vqtfvrNwT0d7JvDO4f+rzrCN7dv6xy+
PTjY93890L8e7t/Dvz4bPh4Zsm2FxIbrelVNWvzFw0evDvjFQHF8OXZel7Dy
Rbmc0l60+axumDrL/G1b5vUsf9MUy3YFVJn/WFyWjaPdfPfNj8d7OzSaJ0v8
Q8f20yg/Pitns7Kxn74Gcq3nf7MfvYIfFtVyPTxaTpuSvoHJwNwO9w/uwD/f
Hh8dP3r2LJz2o3paTvNHQLbFZE2TWufDYX5vOK7W+dGibKpJscyP1wUsrIEf
ws9pac+WMz5joF+6opOzYnlaDvKjF8fP8v91a3Q7tSCmtx037gsaoJi7F7Qw
WAtz26zLHbOCA6Af+Oe774/evPtu9Pb1j+Ei4AP+9bpoTsu1vwybZj5qV+Vk
dHFWrC9OR0CuNxPTkgvCw5vXPi8uYfMOD/HVtx6NXj95NPy4mA+Ba31zcHB4
N5zEk49wSdpqPC/huebDZgXHvDzdFKdlem4XFxeji1s0pTevb8rYN+N3jOAf
/TOGK/2wKS7DD39ATlPPq/DTR6P8ORDIqmzGZXM6fD7546Ysl+FvnsBvirkj
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
U/17Y0NM3XSFjqno5WAPMQdJD5pIlKB5jm8maXkXZSScvHjZT0sj0YDLbxqd
BWsScS4Mus5Cm9mHjTobxz5APceChAiemfcSp3Ybz67L/R6WMwwS8Nx6rPAt
s8tSRNdvVMdcPYvPgWK+YDSqxEuHDsGMpmCgeC4uqraUVGd2kQdk8XXrWGL+
sJwUwpJiZahezi+jCfYcgfpQklzBXisMFS7ZDYD5JSb6wDMbOBGupFfDW9EX
pLELcnd+WNYX83J66oPa/uJFkQPiw9l1gjl0kSkYxflc9QYYnciMBPG4MEeR
z8oLdEuBroHcx+UujMslMIZ1O3CvjwJSdm/DTfCsB0lijfUYCxDXJhoQaCWx
VmtIst6sKTqFhFwh9TT15vQsTUX+orLOUq/53OaXGSVT6Bg1E1k7EL0+fUmE
+b0WfkuWWZa9tuyXCcISSMzmAqdoroOlI89m5VsiY6yRNBStCV4FJHYRbuuF
eqUnEuWw32ZjrKOhRB/SOiTlBE6iJbvBjGyI064nY7/olElgjg8ti6apL/B6
kCttN/QRucyVAg0U0GybTGPytCqgQ3h0BboD00rLwSbdhW4YnO8ohq+eqc8y
lI/kbl7p5Jn5TCswAEsTmUqqMp5xjd0ZUdgGVfwVufAwpyVkTIOs+41wqoGP
AeK2Vf2OStx9CllyvA2MVfQOF7jIlK1jnLZ0mRtLYhp0EPt1yiThHLyRcbBb
jcrRgFgOanxeSZMxpQ6D9TN0KB91dxuOdt1wGtfVNgMRcNal+5SBrONWLC2A
7JD/1qsCtjccZSTat52ZHCQqp0Svs4oSFPkGATU0FXD1BDHY6FbN3k8uVmEf
cRj84juc6UTXbYkJp2+X8+pD5C6N1DjiBOSLWE5NtJYEGEd7U45g5QQqkVDe
mNQf63Q1fpdre2+2e3JiJ+tQ3FhpT6d1aAUOpWv7soLHtgwjLlf3J+ko7HMX
9s7mq1AMXHs2v9Kitj1njuZ3Vwwj7tvUptij+fnvmM0XDMPO3LTr8Wf/Dx4m
dixfz6f8s/d++tlYf2jCFfv/lb25C3vzTEQzz+UJyNYmH/5Ks/kCutk2TPzY
lmFgi+8FVzO8U+abfxCj+OYXM4okE/0qf6mqRpJbXMsd3hW16hOXMUVwPyFV
bRrMWv3j/c7wlCD/xc7tX9+1mHZYGcfzf6pn0aVGqEZJKfqBIO96YhfFB1LL
+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
2TF2Ka/T3LtK+6yC3jwpOHf5zv5+/gxng6Yyh5ntGKzYkPlpEWMkoM59KkFM
MKnGTgr+g55RD2fLrGi0pxtoMnXew11Rr+o19xJDiQgZQR1WNkv1x8Jdnc4D
MrWKllOx9N2XFIyb18VUmDblh5VLFPbBnbdyeHTtDb5lxziW5ntv/Vqvs73B
WuKuvv3b+4+GHvlv7JH/xh75L4k90u+eLf7rOmfJxnCZtOlw02c8uPMysjj+
C/kxiaIeBCrOr+K/vNFpR5v7EoVPN8ikF5hI/TgJhBFiYLiDm7qSnLBO0PnJ
Tjx+1omBWe3aiydq0bisYyoEkriggSHx9zZ0ihhDQhrOKt69Fnt9pvi/Kthf
HojrIfQepIlkOnqnS1iYPxBdzgg3aMu1vLIWwe0BWgcO17uVvChJu2cupwDM
Dsd8hCG0ZR3P9ctmOEhELBw30MICdWD1b1fsL9m6YSlTw/Ex27uVZIezf0YC
McTZb1GWMfvv/7st1v9P22I9WzoOY9Iuws5RppWGuVZbA8bcUMumKKVD2CFc
ovuRJriQTEg03Uo5TltxIw7i1/IYnXdpO7xqehLV5nBrLtrcy62T9+k6qQd6
cz9prqqHzDiDQfKeCY7giksfqTBp7kMzYj2oW+3gcrTclLuzxbYmUn0h6nwi
/GT6S4uoSGSrmtSrau20W6Y0F/g3YZ94+QNJzODSWecp5PFwKNAiamlqX6e4
pnOmSizMQzdHPZAwUpei216hFR6k0NqXiDipVJ53OfcvEHQEMjDzrzDLkB2v
mgBzzgk8whAThJlHph0qYYiFlb/FMvBt2Yp1rY1AUnb4JJltr7rrQeMdVKi0
IJlFmLN7GvZ3KbyVc+1WtgO78qw1A2OpW6yVhGeYSTZhyLoB+6vrVpDFeSZx
Mi4eOtXUjLGuzJNoVjTUsmx6Bd7CLn4jlAavkRIlVdJMd4d6loia7kWF1mbz
jEpKspw2euyL5VLNCSMEMPzzRQhGScim/MtAhRKwUdEY/8zAXz29uBl6qwOd
xWPII9efRwCfFc3jnwQArBfjKAWB9Wvtx995LgkMJcmHNTQ0FBpiEKW+C68o
SpvWJer2kmMSZKnvxV+OsvQlQCcOD/tqBJhOq/QvBRIyEgNZrmgB9PZ0B7HR
1aZpd9OCMtqwzfR/qLWabBTcY62CnWRM1C81Sm86OXD/l1sYLHi4TAMHG3L7
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
MXHcn9ybfG/16z8cHOxT/fo5av3tVSagtZirqNnn0aedT9lg9QC78FP5oXwD
TrY9tKJXg5hDXcnSju/s7DmedxqoNEbbv1vsUNkD6O12SPuuBs5YLYQnk0Wq
V1Jh7zlp49o1ljt6Q2kwrp/TmCKQ98I9UXdaYtLJzTXuko6hQzJEpS1lJ7up
GhRN1oTWE/kZq20YOG0lTBVngM8W1nHuyXFmkYWKc0aK8Xw9GyXRCDb28qLq
dq3/ts0UReJD9VJAUoFUnS2OW9dRkd8/XGP3WHtfjv+6wX6oyzhPmAAT2aza
VevKuKBFdFPKOPl7dctkhdsnh5EixyqZpZGaJypEnbu5FJGbNxUHCb2dVpfl
B6pHMfTiel59XHDWienmtaXASJvDJi6+sHU/GXLQzX+vcb2OLNiKLqvrZS3w
/u7Uluj76zUx7LaoCKfLZoHXhNQC0Slma3YPqdnjKBf2tRvwiA+CvszcpVza
1Wl9IeF3yYG1MlbdCbhfb8jynDjwYG4qiqATr4x7Wqf+KJpxzQLO8t39w5Gb
KcZJNwtmr3TThufHf7uJatNMnYNauwnkEDI4tS/VXUncpYCgdOIdUUSYDttR
uGraldssLbedwQy2l5p0Fflao189dp9t5skeRFAKzfBID1z0K0C/zZQwDIe4
Lso70LOAQDOQufDK3/42ucP1/J8iv+RZ9ihgJICT5kIJ38DT8856XwkOBB9K
7nt5wk7gv//64nV8F1QX8JE82haa4BohyFZYKbJ8JJ1lmaWn31qWVn1JiqjT
WNa5TVmO13TTd9SJBMKu6Y5UvWVpV1fKI6eXeUrMSI7mIgUntEqxSjZ6hHYe
6eC0zoI1o3TRQf9N9NE5mZOBdeLKUrUjKe9gsfIxSa22m+MZ3LRQxcBCRUM+
im7us9MU9n5PLj/G2BshuzJS3cZ9STnAk5JJJXALBGOgsngwcvR5yjsnnPVs
pc/dXRF9g7FKSUS4yf7baAkznFdZZKKlEi3US2XHIoEcejl9G63SO6PQFZVH
/wjcOgGFGyLKPtIW3sd/ffJMOo89uPvg82cquNHE5a1m34WScS6jcSBx1NML
aibZs/LC0zZ5cDAJR57SCh6JkcUcnRLS4rjO72tqyhA3EkdvdGOGpHc7tC2t
K0MY2Ene4HZ2HTSXvb1YSGySBe7HKrVXbrKcVA71xTRsAUxDanEwcpVY5jET
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
dgIA

-->

</rfc>
