<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc strict="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc tocindent="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-rfc8725bis-04" category="bcp" consensus="true" submissionType="IETF" obsoletes="8725" updates="7519" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="JWT BCP">JSON Web Token Best Current Practices</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc8725bis-04"/>
    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Intuit</organization>
      <address>
        <email>yaronf.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="D." surname="Hardt" fullname="Dick Hardt">
      <organization/>
      <address>
        <email>dick.hardt@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Jones" fullname="Michael B. Jones">
      <organization>Self-Issued Consulting</organization>
      <address>
        <email>michael_b_jones@hotmail.com</email>
        <uri>https://self-issued.info/</uri>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>JSON Web Token</keyword>
    <keyword>JWT</keyword>
    <keyword>JSON Object Signing and Encryption</keyword>
    <keyword>JOSE</keyword>
    <keyword>JSON Web Signature</keyword>
    <keyword>JWS</keyword>
    <keyword>JSON Web Encryption</keyword>
    <keyword>JWE</keyword>
    <keyword>attacks</keyword>
    <keyword>Claims</keyword>
    <keyword>Security</keyword>
    <keyword>Cryptography</keyword>
    <abstract>
      <?line 175?>

<t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security
 tokens that contain a set of claims that can be signed and/or encrypted.
 JWTs are being widely used and deployed as a simple security token
 format in numerous protocols and applications, both in the area of
 digital identity and in other application areas.  This Best Current
 Practices (BCP) specification updates RFC 7519 to provide actionable guidance
 leading to secure implementation and deployment of JWTs.</t>
      <t>This BCP specification furthermore replaces the existing JWT BCP
 specification RFC 8725 to provide additional actionable guidance
 covering threats and attacks that have been discovered
 since RFC 8725 was published.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-rfc8725bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/draft-ietf-oauth-rfc8725bis"/>.</t>
    </note>
  </front>
  <middle>
    <?line 192?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>JSON Web Tokens, also known as JWTs  <xref target="RFC7519"/>, are URL-safe JSON-based security tokens
that contain a set of claims that can be signed and/or encrypted.
The JWT specification has seen rapid adoption because it encapsulates
security-relevant information in one easy-to-protect location, and because
it is easy to implement using widely available tools.
One application area in which JWTs are commonly used is
representing authorization information, such as OAuth 2.0 access tokens <xref target="RFC9068"/>,
and identity information, such as OpenID Connect ID Tokens <xref target="OpenID.Core"/>.
The details of these uses are application- and deployment-specific.</t>
      <t>Since the JWT specification was published, there have been several widely published
attacks on implementations and deployments.
Such attacks are the result of under-specified security mechanisms, as well as incomplete
implementations and incorrect usage by applications.</t>
      <t>The goal of this document is to facilitate secure implementation and deployment of JWTs.
Many of the recommendations in this document are about
implementation and use of the cryptographic mechanisms underlying JWTs that are defined by
JSON Web Signature (JWS)  <xref target="RFC7515"/>,
JSON Web Encryption (JWE)  <xref target="RFC7516"/>, and
JSON Web Algorithms (JWA)  <xref target="RFC7518"/>.
Others are about use of the JWT claims themselves.</t>
      <t>These are intended to be minimum recommendations for the use of JWTs
in the vast majority of implementation
and deployment scenarios. Other specifications that reference this document can have
stricter requirements related to one or more aspects of the format, based on their
particular circumstances; when that is the case, implementers are advised to adhere
to those stricter requirements. Furthermore, this document provides a floor, not a ceiling,
so stronger options are always allowed (e.g., depending on differing evaluations of the
importance of cryptographic strength vs. computational load).</t>
      <t>Community knowledge about the strength of various algorithms and feasible attacks can
change quickly, and experience shows that a Best Current Practice (BCP) document about
security is a point-in-time statement. Readers are advised to seek out any errata or
updates that apply to this document.</t>
      <section anchor="target-audience">
        <name>Target Audience</name>
        <t>The intended audiences of this document are:</t>
        <ul spacing="normal">
          <li>
            <t>Implementers of JWT libraries (and the JWS and JWE libraries
 used by those libraries),</t>
          </li>
          <li>
            <t>Implementers of code that uses such libraries (to the extent that some mechanisms may
not be provided by libraries, or until they are), and</t>
          </li>
          <li>
            <t>Developers of specifications that rely on JWTs, both inside and
 outside the IETF.</t>
          </li>
        </ul>
      </section>
      <section anchor="conventions-used-in-this-document">
        <name>Conventions Used in this Document</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="threats-and-vulnerabilities">
      <name>Threats and Vulnerabilities</name>
      <t>This section lists some known and possible problems with JWT
 implementations and deployments.
Each problem description is followed by references to one or more mitigations to those problems.</t>
      <section anchor="weak-signatures-and-insufficient-signature-validation">
        <name>Weak Signatures and Insufficient Signature Validation</name>
        <t>Signed JSON Web Tokens carry an explicit indication of the signing algorithm,
in the form of the "alg" Header Parameter, to facilitate cryptographic agility.
This, in conjunction with design flaws in some libraries and applications,
 has led to several attacks:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm can be changed to "none" by an attacker, and some libraries would trust
this value and "validate" the JWT without checking any signature.</t>
          </li>
          <li>
            <t>An "RS256" (RSA, 2048 bit) parameter value can be changed into
"HS256" (HMAC, SHA-256), and some libraries
would try to validate the signature using HMAC-SHA256 and using the RSA public key as the
HMAC shared secret (see  <xref target="McLean"/> and
  <xref target="CVE-2015-9235"/>).</t>
          </li>
        </ul>
        <t>For mitigations, see <xref target="algorithm-verification"/> and <xref target="appropriate-algorithms"/>.</t>
      </section>
      <section anchor="weak-symmetric-keys">
        <name>Weak Symmetric Keys</name>
        <t>In addition, some applications use a keyed Message Authentication
 Code (MAC) algorithm, such as
"HS256", to sign tokens but supply a weak symmetric key with
insufficient entropy (such as a human-memorable password). Such keys
are vulnerable to offline brute-force or dictionary attacks once an
attacker gets hold of such a token  <xref target="Langkemper"/><xref target="JWT-Cracker"/>.</t>
        <t>For mitigations, see  <xref target="key-entropy"/>.</t>
      </section>
      <section anchor="incorrect-composition-of-encryption-and-signature">
        <name>Incorrect Use and Composition of Encryption and Signature</name>
        <t>Most authentication use cases only require a simple signed JWT as their token. However verifiers don't always check that the received JWT is a JWS (a signed JWT) as opposed to a JWE (a JWT with encrypted structure). This can result in vulnerabilities when the verifier's library does not distinguish between successful decryption and successful signature validation <xref target="CVE-2023-51774"/>.</t>
        <t>In the more complicated use cases where confidentiality is required, some libraries that decrypt a JWE-encrypted JWT to obtain a JWS-signed object
do not always validate the internal signature.</t>
        <t>For mitigations, see  <xref target="validate-crypto"/>.</t>
      </section>
      <section anchor="plaintext-leakage-through-analysis-of-ciphertext-length">
        <name>Plaintext Leakage through Analysis of Ciphertext Length</name>
        <t>Many encryption algorithms leak information about the length of the
 plaintext, with a varying amount of
leakage depending on the algorithm and mode of operation. JWEs are vulnerable to this leakage. This problem is exacerbated
when the plaintext is initially compressed, because the length of the
compressed plaintext and, thus,
the ciphertext
depends not only on the length of the original plaintext but also
on its content.
Compression attacks are particularly
powerful when there is attacker-controlled data in the same compression
space as secret data, which is the case for some attacks on HTTPS.</t>
        <t>See  <xref target="Kelsey"/> for general background
on compression and encryption and  <xref target="Alawatugoda"/> for a specific example of attacks on HTTP cookies.</t>
        <t>For mitigations, see  <xref target="no-compression"/>.</t>
      </section>
      <section anchor="insecure-use-of-elliptic-curve-encryption">
        <name>Insecure Use of Elliptic Curve Encryption</name>
        <t>Per  <xref target="Sanso"/>, several Javascript
 Object Signing and Encryption (JOSE) libraries
 fail to validate their inputs correctly
when performing elliptic curve key agreement (the "ECDH-ES" algorithm).
An attacker that is able to send JWEs of its choosing that use invalid curve points and
observe the cleartext outputs resulting from decryption with the invalid curve points
can use this vulnerability to recover the recipient's private key.</t>
        <t>For mitigations, see  <xref target="validate-inputs"/>.</t>
      </section>
      <section anchor="multiplicity-of-json-encodings">
        <name>Multiplicity of JSON Encodings</name>
        <t>Previous versions of the JSON format, such as the obsoleted  <xref target="RFC7159"/>,
allowed several different character
encodings: UTF-8, UTF-16, and UTF-32. This is not the case anymore, with the latest
standard  <xref target="RFC8259"/> only allowing UTF-8 except
for internal use within a "closed ecosystem".
This ambiguity, where older implementations and those used within closed environments may generate
non-standard encodings, may result in the JWT being
misinterpreted by its recipient. This, in turn, could be used by a malicious sender to bypass
the recipient's validation checks.</t>
        <t>For mitigations, see  <xref target="use-utf8"/>.</t>
      </section>
      <section anchor="substitution">
        <name>Substitution Attacks</name>
        <t>There are attacks in which one recipient will be given a JWT that was intended for it
and will attempt to use it at a different recipient for which that JWT was not intended.
For instance, if an OAuth 2.0  <xref target="RFC6749"/> access
token is legitimately presented to an
OAuth 2.0 protected resource for which it is intended, that protected resource might then present
that same access token to a different protected resource for which the access token is not intended,
in an attempt to gain access. If such situations are not caught, this can result in
the attacker gaining access to resources that it is not entitled to access.</t>
        <t>For mitigations, see Sections  <xref format="counter" target="validate-iss-sub"/> and  <xref format="counter" target="use-aud"/>.</t>
      </section>
      <section anchor="cross-jwt-confusion">
        <name>Cross-JWT Confusion</name>
        <t>As JWTs are used by more protocols in diverse ways, it becomes increasingly
important to prevent JWT tokens that have been issued for one purpose
being used for another.
Note that this is a specific type of substitution attack.
If the JWT could be used in an application context in which it could be
confused with other kinds of JWTs,
then mitigations can be employed to prevent these substitution attacks.</t>
        <t>For mitigations, see Sections  <xref format="counter" target="validate-iss-sub"/>,  <xref format="counter" target="use-aud"/>,  <xref format="counter" target="use-typ"/>, and  <xref format="counter" target="preventing-confusion"/>.</t>
      </section>
      <section anchor="indirect-attacks-on-the-server">
        <name>Indirect Attacks on the Server</name>
        <t>Various JWT claims are used by the recipient to perform lookup operations,
such as database and Lightweight Directory Access Protocol (LDAP) searches.
Others include URLs that are similarly looked up by the server. Any of these claims can be used by
an attacker as vectors for injection attacks or server-side request forgery (SSRF) attacks.</t>
        <t>For mitigations, see  <xref target="do-not-trust-claims"/>.</t>
      </section>
      <section anchor="unreasonable-iterations">
        <name>Computation Cost of Unreasonable Number of Hash Iterations</name>
        <t>The <tt>p2c</tt> (PBES2 Count) header parameter for the PBES2 encryption algorithms
specifies the number of iterative hash computations to be performed.
Attackers can use a very large count,
thereby imposing an unreasonable computational burden on recipients.</t>
        <t>For mitigations, see <xref target="limit-iterations"/>.</t>
      </section>
      <section anchor="autogen-algorithm-verification-code-not-defensively-written">
        <name>Algorithm Verification Code Not Defensively Written</name>
        <t>Some JWT implementations included a list of disallowed algorithm names,
e.g., do not use "none".
These same applications misinterpreted
the JOSE specifications when parsing the token, reading algorithm values
as if they were case-insensitive. The end result was that an attacker
could change the "alg" value to "noNE" and bypass the security check.</t>
        <t>For mitigations, see <xref target="algorithm-verification"/>.</t>
      </section>
      <section anchor="autogen-jwe-decompression-bomb-attack">
        <name>JWE Decompression Bomb Attack</name>
        <t>JWE supports the optional compression of the plaintext prior to encryption via the "zip" header parameter as defined in <xref target="RFC7516"/> Section 4.1.3. Upon decryption, recipients are expected to decompress the payload before further processing. However, if the recipient does not enforce limits on the size of the decompressed output, an attacker can craft a malicious JWE with a highly compressed, arbitrarily large payload. This can cause excessive resource consumption (CPU, memory), resulting in Denial of Service (DoS).</t>
        <t>For mitigation, see <xref target="limit-decompression"/>.</t>
      </section>
      <section anchor="autogen-jwt-format-confusion">
        <name>JWT Format Confusion</name>
        <t>Some JWS implementations support both the Compact and JSON Serializations. While JWTs must use the Compact Serialization, if an application by mistake verifies a JWT using the JSON Serialization but extracts claims by parsing it as a JWT using the Compact Serialization (e.g., via string splitting), an attacker can craft a valid JSON JWS with a forged payload. This mismatch in format handling can lead to authentication bypass or impersonation.</t>
        <t>For mitigations, see <xref target="token-format"/>.</t>
      </section>
    </section>
    <section anchor="BP">
      <name>Best Practices</name>
      <t>The best practices listed below should be applied by practitioners
to mitigate the threats listed in the preceding section.</t>
      <section anchor="algorithm-verification">
        <name>Perform Algorithm Verification</name>
        <t>Libraries <bcp14>MUST</bcp14> provide a mechanism that enables developers to explicitly restrict
the set of algorithms permitted for use and <bcp14>MUST NOT</bcp14> employ any algorithms outside
this configured set when performing cryptographic operations.</t>
        <t>The library <bcp14>MUST</bcp14> verify that the algorithm specified in the "alg" or "enc" header parameter
is consistent with the algorithm associated with the key identified by the
corresponding identifier (e.g., "kid") during key lookup.</t>
        <t>When a recipient receives a JWT signed by a particular issuer, it <bcp14>MUST</bcp14>
determine which algorithms are permitted for itself and that issuer
and ensure that the received JWT complies with those requirements.
It must likewise validate that the algorithms used by encrypted JWTs
are among those supported by the intended recipient.</t>
        <t>In accordance with established cryptographic best practices, each key <bcp14>MUST</bcp14> be used with
exactly one algorithm. Compliance with this requirement <bcp14>MUST</bcp14> be enforced and
validated at the time the cryptographic operation is executed.</t>
        <t>Libraries <bcp14>SHOULD</bcp14> opt for defensive security policies to cope
with potential issues in the underlying infrastructure, such
as the JSON parser. In particular, libraries <bcp14>SHOULD</bcp14> use allowlists for critical
parameters such as "alg" instead of blocklists.</t>
      </section>
      <section anchor="appropriate-algorithms">
        <name>Use Appropriate Algorithms</name>
        <t>As  Section 5.2 of <xref target="RFC7515"/> says,
"it is an application decision which algorithms may
be used in a given context. Even if a JWS can be successfully
validated, unless the algorithm(s) used in the JWS are acceptable to
the application, it  <bcp14>SHOULD</bcp14> consider the JWS to be invalid."</t>
        <t>Therefore, applications  <bcp14>MUST</bcp14> only allow the use of
 cryptographically current algorithms
that meet the security requirements of the application.
This set will vary over time as new algorithms are introduced
and existing algorithms are deprecated due to discovered cryptographic weaknesses.
Applications  <bcp14>MUST</bcp14> therefore be designed to enable cryptographic agility.</t>
        <t>The "none" algorithm should only be used when the JWT is cryptographically protected by other means.
JWTs using "none" are often used in application contexts in which the content is optionally signed.
The URL-safe claims representation and processing in this context can be the same in both
the signed and unsigned cases.
JWT libraries  <bcp14>SHOULD NOT</bcp14> generate JWTs using "none" unless
explicitly requested to do so by the caller.
Similarly, JWT libraries  <bcp14>SHOULD NOT</bcp14> consume JWTs using "none"
 unless explicitly requested by the caller.</t>
        <t>Applications  <bcp14>SHOULD</bcp14> follow these algorithm-specific recommendations:</t>
        <ul spacing="normal">
          <li>
            <t>Avoid all RSA-PKCS1 v1.5 encryption algorithms (<xref target="RFC8017"/>, Section 7.2), preferring
 RSAES-OAEP
 (<xref target="RFC8017"/>, Section 7.1).</t>
          </li>
          <li>
            <t>Elliptic Curve Digital Signature Algorithm (ECDSA) signatures  <xref target="ANSI-X962-2005"/> require a unique random value for
every message
 that is signed.
If even just a few bits of the random value are predictable across multiple messages, then
the security of the signature scheme may be compromised. In the worst case,
the private key may be recoverable by an attacker. To counter these attacks,
JWT libraries  <bcp14>SHOULD</bcp14> implement ECDSA using the deterministic
approach defined in  <xref target="RFC6979"/>.
This approach is completely compatible with existing ECDSA verifiers and so can be implemented
without new algorithm identifiers being required.</t>
          </li>
        </ul>
        <t>Readers may want to be aware that <xref target="I-D.ietf-jose-deprecate-none-rsa15"/>
intends to propose additional guidance on the "none" and "RSA1_5" algorithms
at such point as it becomes an RFC.</t>
      </section>
      <section anchor="validate-crypto">
        <name>Validate All Cryptographic Operations</name>
        <t>All cryptographic operations used in the JWT <bcp14>MUST</bcp14> be validated and the entire JWT <bcp14>MUST</bcp14> be rejected
if any of them fail to validate.
This is true not only of JWTs with a single set of Header Parameters
but also for Nested JWTs, as defined in <xref section="2" sectionFormat="of" target="RFC7519"/>,
in which both outer and inner operations <bcp14>MUST</bcp14> be validated
using the keys and algorithms supplied by the application.</t>
        <t>Libraries <bcp14>MUST</bcp14> allow the verifier to distinguish between signed JWTs (JWSes) and encrypted JWTs (JWEs).
This allows verifiers to easily establish a policy of only accepting signed JWTs.</t>
      </section>
      <section anchor="validate-inputs">
        <name>Validate Cryptographic Inputs</name>
        <t>Some cryptographic operations, such as Elliptic Curve Diffie-Hellman key agreement
("ECDH-ES"), take inputs that may contain invalid values. This includes points not on
the specified elliptic curve
or other invalid points (e.g.,  <xref target="Valenta"/>, Section 7.1).
The JWS/JWE library itself must validate these inputs before using them,
or it must use underlying cryptographic libraries that do so (or both!).</t>
        <t>Elliptic Curve Diffie-Hellman Ephemeral Static (ECDH-ES) ephemeral
 public key (epk) inputs should be validated
 according to the recipient's
chosen elliptic curve. For the NIST prime-order curves P-256, P-384, and P-521,
validation  <bcp14>MUST</bcp14>
be performed according to Section 5.6.2.3.4 (ECC Partial Public-Key Validation
Routine) of "Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography"
<xref target="nist-sp-800-56a-r3"/>.
If the "X25519" or "X448"  <xref target="RFC8037"/> algorithms are used,
then the security considerations in  <xref target="RFC8037"/> apply.</t>
      </section>
      <section anchor="key-entropy">
        <name>Ensure Cryptographic Keys Have Sufficient Entropy</name>
        <t>The Key Entropy and Random Values advice in  Section 10.1 of <xref target="RFC7515"/> and the
 Password Considerations in  Section 8.8 of <xref target="RFC7518"/>
          <bcp14>MUST</bcp14> be followed.
In particular, human-memorizable passwords  <bcp14>MUST NOT</bcp14> be directly used
as the key to a keyed-MAC algorithm such as "HS256".
Moreover, passwords should only be used to perform key encryption, rather
than content encryption,
as described in  Section 4.8 of <xref target="RFC7518"/>.
Note that even when used for key encryption, password-based encryption is
 still subject to brute-force attacks.</t>
      </section>
      <section anchor="no-compression">
        <name>Avoid Compression of Encryption Inputs</name>
        <t>Compression of data <bcp14>SHOULD NOT</bcp14> be used when creating a JWE, because
such compressed data often reveals information about the plaintext,
as described in <xref target="Kelsey"/>.</t>
      </section>
      <section anchor="use-utf8">
        <name>Use UTF-8</name>
        <t><xref target="RFC7515"/>,  <xref target="RFC7516"/>, and  <xref target="RFC7519"/> all
 specify that UTF-8 be used for encoding and decoding JSON
used in Header Parameters and JWT Claims Sets. This is also in line with the
latest JSON specification  <xref target="RFC8259"/>.
Implementations and applications <bcp14>MUST</bcp14> do this and not use or allow the use of
other Unicode encodings for these purposes.</t>
      </section>
      <section anchor="validate-iss-sub">
        <name>Validate Issuer and Subject</name>
        <t>When a JWT contains an "iss" (issuer) claim, the application
  <bcp14>MUST</bcp14> validate that the cryptographic keys
used for the cryptographic operations in the JWT belong to the issuer.
If they do not, the application  <bcp14>MUST</bcp14> reject the JWT.</t>
        <t>The means of determining the keys owned by an issuer is application-specific.
As one example, OAuth 2.0 authorization server "issuer" values <xref target="RFC8414"/>
are "https" URLs
that reference a JSON metadata document that contains a "jwks_uri" value that is
an "https" URL from which the issuer's keys are retrieved as a JWK Set  <xref target="RFC7517"/>.
This same mechanism is used by OpenID Connect <xref target="OpenID.Core"/>.
Other applications may use different means of binding keys to issuers.</t>
        <t>Similarly, when the JWT contains a "sub" (subject) claim, the
 application  <bcp14>MUST</bcp14> validate that
the subject value corresponds to a valid subject and/or issuer-subject pair at the application.
This may include confirming that the issuer is trusted by the application.
In the OAuth context, <xref section="4.15" sectionFormat="of" target="RFC9700"/> discusses the possibility of
confusing user identifier and client ID values.
If the issuer, subject, or the pair are invalid, the application
  <bcp14>MUST</bcp14> reject the JWT.</t>
      </section>
      <section anchor="use-aud">
        <name>Use and Validate Audience</name>
        <t>If the same issuer can issue JWTs that are intended for use by more
 than one relying party or application, or may do so in the future,
the JWT  <bcp14>MUST</bcp14> contain an "aud" (audience) claim that can be used
to determine whether the JWT
is being used by an intended party or was substituted by an attacker.</t>
        <t>In such cases, the relying party or application <bcp14>MUST</bcp14> validate the audience value, and if no audience
value is present or none of the values are associated with the recipient, it <bcp14>MUST</bcp14> reject the JWT.</t>
      </section>
      <section anchor="do-not-trust-claims">
        <name>Carefully Evaluate Received Claims</name>
        <t>Treat claim values as being potentially attacker-provided input.</t>
        <t>The "kid" (key ID) header is used by the relying application to
 perform key lookup. Applications
should ensure that this does not create SQL or LDAP injection vulnerabilities by validating
and/or sanitizing the received value.</t>
        <t>Similarly, blindly following a "jku" (JWK set URL) or "x5u" (X.509 URL) header,
which may contain an arbitrary URL,
could result in server-side request forgery (SSRF) attacks. Applications <bcp14>SHOULD</bcp14> protect against such
attacks, e.g., by matching the URL to an allowlist of permitted locations
and ensuring no cookies are sent in the GET request.</t>
        <t>When such an allowlist is not available, the authorization server <bcp14>SHOULD</bcp14> check what a hostname resolves to
and avoid making a request if it resolves to a loopback or local IP address.
An example of this is when "attacker.example.com/etc/passwd" is used
as the "jwks_uri" value and there is a DNS entry for "attacker.example.com"
that resolves to "127.0.0.1" or other local IP address values.</t>
      </section>
      <section anchor="use-typ">
        <name>Use Explicit Typing</name>
        <t>When two different uses of JWTs share a common set of claims,
one kind of JWT can be confused for another.
If a particular
kind of JWT is subject to such confusion, that JWT can include an explicit
JWT type value, and the validation rules can specify checking the type.
This mechanism can prevent such confusion.
Explicit JWT typing is accomplished by using the "typ" Header Parameter.
For instance, the  <xref target="RFC8417"/> specification uses
the "application/secevent+jwt" media type
to perform explicit typing of Security Event Tokens (SETs).</t>
        <t>An example of an ad-hoc means of preventing confusion
between different kinds of JWTs is the requirement in
Logout Tokens <xref target="OpenID.Backchannel"/> prohibiting the inclusion of a "nonce" claim
so that Logout Tokens will fail the validation rules for ID Tokens <xref target="OpenID.Core"/>.
The use of explicit typing avoids the need for employing such ad-hoc mechanisms
when the validation rules for both kinds of JWTs include validating the "typ" values
and the acceptable "typ" values for the two kinds of JWTs are distinct.</t>
        <t>Per the definition of "typ" in Section 4.1.9 of <xref target="RFC7515"/>, it is <bcp14>RECOMMENDED</bcp14> that the "application/" prefix
be omitted from the "typ" Header Parameter value, compared to the associated media type.
Therefore, for example, the "typ" value used to explicitly include a type for a SET <bcp14>SHOULD</bcp14> be "secevent+jwt".</t>
        <t>When explicit typing is employed for a JWT, it is <bcp14>RECOMMENDED</bcp14> that a media type name of the
format "application/example+jwt" be used, where "example" is replaced by the identifier for the
specific kind of JWT. Therefore, for example, the media type name for a SET <bcp14>SHOULD</bcp14> be "application/secevent+jwt".</t>
        <t>When applying explicit typing to a Nested JWT, the "typ" Header
 Parameter containing the explicit type value  <bcp14>MUST</bcp14> be present in the inner JWT of the Nested JWT (the JWT
whose payload is the JWT Claims Set).
In some cases, the same "typ" Header Parameter value will be present in the outer JWT as well,
to explicitly type the entire Nested JWT.</t>
        <t>Note that the use of explicit typing may not achieve disambiguation
 from existing kinds of JWTs,
as the validation rules for kinds of JWTs defined before
the guidance on explicit typing in <xref target="RFC8725"/> was available
often do not use the "typ" Header Parameter value.</t>
        <t>Also, note that attempting to retrofit mandatory explicit typing
into the validation rules for existing kinds of JWTs not already using it
would be a breaking change;
if a legacy implementation creates a JWT without the explicit type and
an updated implementation receiving it requires the explicit type,
the JWT will be rejected.  The implementations will not interoperate.
However, retrofitting a rule that if the JWT contains a "typ" value,
then it <bcp14>MUST</bcp14> be the expected explicit type, is not a breaking change.</t>
        <t>Another consideration for existing kinds of JWTs is that the use of
a "typ" value of "JWT", as originally recommended in <xref section="5.1" sectionFormat="of" target="RFC7519"/>,
does not constitute effective explicit typing.</t>
        <t>Explicit typing is <bcp14>RECOMMENDED</bcp14> for new uses of JWTs.</t>
      </section>
      <section anchor="preventing-confusion">
        <name>Use Mutually Exclusive Validation Rules for Different Kinds of JWTs</name>
        <t>Each application of JWTs defines a profile specifying the required
 and optional JWT claims
and the validation rules associated with them.
If more than one kind of JWT can be issued by the same issuer,
the validation rules for those JWTs  <bcp14>MUST</bcp14> be written such that
they are mutually exclusive,
rejecting JWTs of the wrong kind.</t>
        <t>To prevent substitution of JWTs from one context into another,
application developers may employ a number of strategies:</t>
        <ul spacing="normal">
          <li>
            <t>Use explicit typing for different kinds of JWTs.
Then the distinct "typ" values can be used to differentiate between the
 different kinds of JWTs.</t>
          </li>
          <li>
            <t>Use different sets of required claims or different required claim values.
Then the validation rules for one kind of JWT will reject those with different
 claims or values.</t>
          </li>
          <li>
            <t>Use different sets of required Header Parameters or different
 required Header Parameter values.
Then the validation rules for one kind of JWT will reject those with different
 Header Parameters or values.</t>
          </li>
          <li>
            <t>Use different keys for different kinds of JWTs.
Then the keys used to validate one kind of JWT will fail to validate other kinds of JWTs.</t>
          </li>
          <li>
            <t>Use different "aud" values for different uses of JWTs from the same issuer.
Then audience validation will reject JWTs substituted into inappropriate contexts.</t>
          </li>
          <li>
            <t>Use different issuers for different kinds of JWTs.
Then the distinct "iss" values can be used to segregate the different kinds of JWTs.</t>
          </li>
        </ul>
        <t>Given the broad diversity of JWT usage and applications,
the best combination of types, required claims, values, Header Parameters, key usages, and issuers
to differentiate among different kinds of JWTs
will, in general, be application-specific.
As discussed in  <xref target="use-typ"/>, for new JWT
 applications, the use of explicit typing is
  <bcp14>RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="limit-iterations">
        <name>Limit Hash Iteration Count</name>
        <t>Implementations are <bcp14>RECOMMENDED</bcp14> to set a reasonable upper limit on
the number of hash iterations that can be performed
when validating encrypted content using PBES2 encryption algorithms,
so as to prevent attackers from imposing
an unreasonable computational burden on recipients.
<xref target="OWASP-Password-Storage"/> states a specific iteration count (600,000 at time of publishing)
is required when using HMAC-SHA-256 to achieve FIPS-140 compliance. Rejecting inputs with a <tt>p2c</tt>
(PBES2 Count) value larger than double the recommended OWASP value is <bcp14>RECOMMENDED</bcp14>.</t>
      </section>
      <section anchor="token-format">
        <name>Check JWT Format Type</name>
        <t>Implementations <bcp14>MUST</bcp14> confirm the JWT is in a legal format while parsing it. Legal JWTs,
being dot-concatenated base64url strings, contain only the ASCII characters for letters, numbers, dash,
underscore, and period.  Content with any other characters - especially braces and quotation
marks - is not a JWT and <bcp14>MUST</bcp14> be rejected.</t>
      </section>
      <section anchor="limit-decompression">
        <name>Limit JWE Decompression Size</name>
        <t>Implementations are <bcp14>RECOMMENDED</bcp14> to set a reasonable upper limit on the decompressed size of a JWE such as 250 KB.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This entire document is about security considerations when
 implementing and deploying JSON Web Tokens.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <section anchor="autogen-acknowledgements-for-rfc-8725">
        <name>Acknowledgements for RFC 8725</name>
        <t>The following acknowledgements from <xref target="RFC8725"/>,
the text of which is incorporated into this specification, are retained.</t>
        <t>Thanks to  Antonio Sanso for bringing the
 "ECDH-ES" invalid point attack to the attention
of JWE and JWT implementers.  Tim McLean published the
RSA/HMAC confusion attack  <xref target="McLean"/>.
Thanks to  Nat Sakimura for advocating the use of
explicit typing. Thanks to  Neil Madden for his
numerous comments, and to Carsten Bormann, Brian Campbell, Brian Carpenter, Alissa Cooper, Roman Danyliw, Ben Kaduk,
Mirja Kühlewind, Barry Leiba,
Dan Moore,
Eric Rescorla, Adam Roach, Martin Vigoureux,
and Éric Vyncke
for their reviews.</t>
      </section>
      <section anchor="autogen-acknowledgements-for-this-specification-">
        <name>Acknowledgements for [[ this specification ]]</name>
        <t>We would like to thank
Brian Campbell,
Jianjun Chen,
Dan Moore,
Aaron Parecki,
Filip Skokan,
Tom Tervoort,
Enze Wang,
and
Jesse Yang
for their contributions to the new content in this specification.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author fullname="T. Pornin" initials="T." surname="Pornin"/>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure. Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein. Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</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 Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC7516">
          <front>
            <title>JSON Web Encryption (JWE)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Hildebrand" initials="J." surname="Hildebrand"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries defined by that specification. Related digital signature and Message Authentication Code (MAC) capabilities are described in the separate JSON Web Signature (JWS) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7516"/>
          <seriesInfo name="DOI" value="10.17487/RFC7516"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8037">
          <front>
            <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8037"/>
          <seriesInfo name="DOI" value="10.17487/RFC8037"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="nist-sp-800-56a-r3">
          <front>
            <title>Recommendation for pair-wise key-establishment schemes using discrete logarithm cryptography</title>
            <author fullname="Elaine Barker" initials="E." surname="Barker">
              <organization/>
            </author>
            <author fullname="Lily Chen" initials="L." surname="Chen">
              <organization/>
            </author>
            <author fullname="Allen Roginsky" initials="A." surname="Roginsky">
              <organization/>
            </author>
            <author fullname="Apostol Vassilev" initials="A." surname="Vassilev">
              <organization/>
            </author>
            <author fullname="Richard Davis" initials="R." surname="Davis">
              <organization/>
            </author>
            <date month="April" year="2018"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56ar3"/>
          <refcontent>National Institute of Standards and Technology</refcontent>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ANSI-X962-2005">
          <front>
            <title>Public Key Cryptography for the Financial Services Industry: the Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author>
              <organization>American National Standards Institute</organization>
            </author>
            <date year="2005" month="November"/>
          </front>
        </reference>
        <reference anchor="Alawatugoda">
          <front>
            <title>Protecting Encrypted Cookies from Compression Side-Channel Attacks</title>
            <author fullname="Janaka Alawatugoda" initials="J." surname="Alawatugoda">
              <organization/>
            </author>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization/>
            </author>
            <author fullname="Colin Boyd" initials="C." surname="Boyd">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 86-106"/>
          <seriesInfo name="DOI" value="10.1007/978-3-662-47854-7_6"/>
          <seriesInfo name="ISBN" value="[&quot;9783662478530&quot;, &quot;9783662478547&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="CVE-2015-9235" target="https://nvd.nist.gov/vuln/detail/CVE-2015-9235">
          <front>
            <title>CVE-2015-9235 Detail</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2018" month="May"/>
          </front>
          <refcontent>National Vulnerability Database</refcontent>
        </reference>
        <reference anchor="CVE-2023-51774" target="https://nvd.nist.gov/vuln/detail/CVE-2023-51774">
          <front>
            <title>CVE-2023-51774 Detail</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date year="2024" month="February"/>
          </front>
          <refcontent>National Vulnerability Database</refcontent>
        </reference>
        <reference anchor="JWT-Cracker" target="https://github.com/brendan-rius/c-jwt-cracker">
          <front>
            <title>JWT Cracker</title>
            <author initials="B." surname="Rius" fullname="Brendan Rius">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Kelsey">
          <front>
            <title>Compression and Information Leakage of Plaintext</title>
            <author fullname="John Kelsey" initials="J." surname="Kelsey">
              <organization/>
            </author>
            <date year="2002"/>
          </front>
          <seriesInfo name="Lecture Notes in Computer Science" value="pp. 263-276"/>
          <seriesInfo name="DOI" value="10.1007/3-540-45661-9_21"/>
          <seriesInfo name="ISBN" value="[&quot;9783540440093&quot;, &quot;9783540456612&quot;]"/>
          <refcontent>Springer Berlin Heidelberg</refcontent>
        </reference>
        <reference anchor="Langkemper" target="https://www.sjoerdlangkemper.nl/2016/09/28/attacking-jwt-authentication/">
          <front>
            <title>Attacking JWT authentication</title>
            <author initials="S." surname="Langkemper" fullname="Sjoerd Langkemper">
              <organization/>
            </author>
            <date year="2016" month="September"/>
          </front>
        </reference>
        <reference anchor="McLean" target="https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/">
          <front>
            <title>Critical vulnerabilities in JSON Web Token libraries</title>
            <author initials="T." surname="McLean" fullname="Tim McLean">
              <organization/>
            </author>
            <date year="2015" month="March"/>
          </front>
        </reference>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros" fullname="Breno de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore" fullname="Chuck Mortimore">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OpenID.Backchannel" target="https://openid.net/specs/openid-connect-backchannel-1_0.html">
          <front>
            <title>OpenID Connect Back-Channel Logout 1.0 incorporating errata set 1</title>
            <author initials="M." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7159">
          <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="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC8417">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="Sanso" target="https://auth0.com/blog/critical-vulnerability-in-json-web-encryption/">
          <front>
            <title>Critical Vulnerability in JSON Web Encryption</title>
            <author initials="A." surname="Sanso" fullname="Antonio Sanso">
              <organization/>
            </author>
            <date year="2017" month="March"/>
          </front>
        </reference>
        <reference anchor="Valenta" target="https://ia.cr/2018/298">
          <front>
            <title>In search of CurveSwap: Measuring elliptic curve implementations in the wild</title>
            <author initials="L." surname="Valenta" fullname="Luke Valenta">
              <organization/>
            </author>
            <author initials="N." surname="Sullivan" fullname="Nick Sullivan">
              <organization/>
            </author>
            <author initials="A." surname="Sanso" fullname="Antonio Sanso">
              <organization/>
            </author>
            <author initials="N." surname="Heninger" fullname="Nadia Heninger">
              <organization/>
            </author>
            <date year="2018" month="March"/>
          </front>
        </reference>
        <reference anchor="OWASP-Password-Storage" target="https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html">
          <front>
            <title>Password Storage Cheat Sheet</title>
            <author>
              <organization>OWASP</organization>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="OWASP Cheat Sheet Series" value=""/>
        </reference>
        <reference anchor="I-D.ietf-jose-deprecate-none-rsa15">
          <front>
            <title>JOSE: Deprecate 'none' and 'RSA1_5'</title>
            <author fullname="Neil Madden" initials="N." surname="Madden">
              <organization>Hazelcast</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document updates [RFC7518] to deprecate the JWS algorithm "none"
   and the JWE algorithm "RSA1_5".  These algorithms have known security
   weaknesses.  It also updates the Review Instructions for Designated
   Experts to establish baseline security requirements that future
   algorithm registrations should meet.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-jose-deprecate-none-rsa15-04"/>
        </reference>
      </references>
    </references>
    <?line 870?>

<section anchor="changes-from-rfc8725">
      <name>Changes from RFC 8725</name>
      <t>This document obsoletes RFC 8725 and provides several significant improvements and additions:</t>
      <ol spacing="normal" type="1"><li>
          <t>Algorithm Verification: Added defensive checking to address incorrect reading of <tt>alg</tt> values as being case-insensitive (<xref target="algorithm-verification"/>).</t>
        </li>
        <li>
          <t>Encryption-Signature Confusion: Added mitigation for attacks where verifiers don't distinguish between successful decryption and successful signature validation (<xref target="preventing-confusion"/>).</t>
        </li>
        <li>
          <t>PBES2 Count Limits: Added requirements to reject unreasonably large <tt>p2c</tt> (PBES2 Count) values to prevent DoS attacks (<xref target="limit-iterations"/>).</t>
        </li>
        <li>
          <t>JWT Format Confusion: Added mitigation for JWT serialization format confusion attacks (<xref target="token-format"/>).</t>
        </li>
        <li>
          <t>Compression DoS: Added mitigation for DoS attacks resulting from abuse of compression in JWE (<xref target="limit-decompression"/>).</t>
        </li>
        <li>
          <t>Described relationship between explicit typing and kinds of JWTs not already employing it.</t>
        </li>
      </ol>
    </section>
    <section anchor="autogen-document-history">
      <name>Document History</name>
      <t>[[Note to RFC Editor: please remove before publication.]]</t>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-04">
        <name>draft-ietf-oauth-rfc8725bis-04</name>
        <ul spacing="normal">
          <li>
            <t>Applied suggestions by document shepherd Hannes Tschofenig.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-03">
        <name>draft-ietf-oauth-rfc8725bis-03</name>
        <ul spacing="normal">
          <li>
            <t>Described relationship between explicit typing and kinds of JWTs not already employing it.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-02">
        <name>draft-ietf-oauth-rfc8725bis-02</name>
        <ul spacing="normal">
          <li>
            <t>Incorporated Aaron Parecki's review suggestions.</t>
          </li>
          <li>
            <t>Acknowledged contributors to the new content in this specification.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-01">
        <name>draft-ietf-oauth-rfc8725bis-01</name>
        <ul spacing="normal">
          <li>
            <t>Applied editorial suggestions by Dan Moore.</t>
          </li>
          <li>
            <t>Described changes relative to RFC 8725.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-00">
        <name>draft-ietf-oauth-rfc8725bis-00</name>
        <ul spacing="normal">
          <li>
            <t>Draft adopted, no textual changes</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-sheffer-oauth-rfc8725bis-02">
        <name>draft-sheffer-oauth-rfc8725bis-02</name>
        <ul spacing="normal">
          <li>
            <t>Obsoletes RFC 8725 and updates RFC 7519.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-sheffer-oauth-rfc8725bis-01">
        <name>draft-sheffer-oauth-rfc8725bis-01</name>
        <ul spacing="normal">
          <li>
            <t>Mitigate encryption-signature confusion.</t>
          </li>
          <li>
            <t>Reject unreasonably large <tt>p2c</tt> (PBES2 Count) values.</t>
          </li>
          <li>
            <t>Defensive checking to address incorrect reading of <tt>alg</tt> values as being case-insensitive.</t>
          </li>
          <li>
            <t>Mitigate DoS attacks resulting from abuse of compression.</t>
          </li>
          <li>
            <t>Mitigate JWT serialization format confusion.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-sheffer-oauth-rfc8725bis-00">
        <name>draft-sheffer-oauth-rfc8725bis-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version, text is identical to RFC 8725.</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7196XbbSJLufzwFhv5RUg9BLZa8TZ+ZkSVVW1VeNKZc7j51
+rhBMiXBAgEOFrFYOn6AeYv7IPfXnRe78UVELgBJu2pu9z3+YQpIJCIjY18S
SZJE6WRSmfsX8Q8fr+KXp5dRWpn0RTwYm2lbZc1qEKVtc1tWL6IkNvM0y1/E
q7Qqi+tRZprrf7/BpdG0nEdxnBX1i/gvo3h8a66vTUVXinRu6BLGB1fL6iYt
sl/TJiuLF/FF0bRZ42efZdO70W1azZr1yc9G8SvccVOf0WC95CaYZ9Pb1OSf
Jp8+l4Wp//22bPrzvBnFP+Cem+eNPBO/9De6UI5Nfp1c1HVrZvFpWdRt3mTF
DQ0jJL2Ib5tmUb/Y26sxKuNRo6y4LveiadqYm7JavYgn00U0K6fyvlmVXjcJ
MJiUwG9SXU+fPT08nmR1sn8UZYvqRdxUbd0c7u8/3z+Mykld5qYxBDuGRe1i
lvJfT48Pnkd3ZrUsqxm26Ifxu7fxRzOJr8o7U+DCxyt7+d3ks5k28Ti7KQj2
OC1m8XkxrVYLLBGD3o3PwykwMG3ayvA04/BW97mPeCxtmnR6V9Ov0zzN5vhh
aQjXMLy8qdLF7Sq6q9L5rFwWn0qeon5BeCQslJ+y2adFZa6zX17w3zemSKJF
htu0eXNTNLTi71am/o6uEC7n6WJBK/HXsiLPCuP/JqyaWd2s8uBaXVYNvSOY
qW6qbNoEf6/m3QGN+aVJ8qxuEro1KXO6lZR/+GfcKafBsHKaFTOC0l6qG8Lx
pzQvPUx1O5kTgdCqm9WCrl6cX30fNVkDCLt7F780dROftlVFM8aXVTptsilR
Ju303U1VtgtiUgw+YfZUQqVxJYFR5oPo3hStAep+y2ACnsEZfKTZQRx/wkO4
Ljw1YCr9dxDsiBgDN9Jqeks3LOljHC5l92Zkh+3hwt6kKpe12eMZ9vDkTdbc
thM7abK82fsKOwyiKCrKak4Q3/Ny3n9/+uT50+f6k+j/2P984n8+8z/t2Gf7
B0/dz8fu5+ExDyh4fxfJs/395PhJmlSPSby8uxgd7I+e7B8+23t7Mb4ajS9H
cv+kehyBwwPATt6OL5I/P39ymBDTMlBM1Sw78TvpiZSTuSG6S4v4LV9I83gM
eiFhVpNQrIko2sbwk+D1F/Hb8t7MJ6aKMT1fV7r57rKd5Nk0/tGsOnwWE3hx
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

-->

</rfc>
