<?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.39 (Ruby 3.4.9) -->
<?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-06" category="bcp" consensus="true" submissionType="IETF" obsoletes="8725" updates="7519" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="JWT BCP">JSON Web Token Best Current Practices</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc8725bis-06"/>
    <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="June" day="19"/>
    <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 176?>

<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 obsoletes 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 193?>

<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 <bcp14>MUST</bcp14> 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, because blocklists
cannot anticipate every unsafe or misspelled value an attacker might use.</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,
because deviating from them may re-enable known attacks on the listed algorithms
unless an application-specific threat analysis shows the risk is acceptable:</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 are advised that <xref target="I-D.ietf-jose-deprecate-none-rsa15"/>
proposes deprecating the "none" and "RSA1_5" algorithms.</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 <bcp14>MUST</bcp14> validate these inputs before using them or 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"/>, the
 Password Considerations in  Section 8.8 of <xref target="RFC7518"/>, and PBKDF2 as specified in <xref target="RFC8018"/>
          <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 <bcp14>MUST</bcp14> 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,
because otherwise an attacker-chosen URL can cause the server to fetch arbitrary content from within the security domain.
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 Section 4.1.9 of <xref target="RFC7515"/>, the "typ" Header Parameter declares the
media type of the complete JWS.
To keep header values compact, producers are <bcp14>RECOMMENDED</bcp14> to omit the
"application/" prefix from "typ" when no other "/" appears in the media type,
as specified in that section;
recipients using the media type value <bcp14>MUST</bcp14> treat a "typ" value with no "/"
as if "application/" were prepended.
When explicit typing is employed, implementations <bcp14>SHOULD</bcp14> register and use the
full media type name "application/example+jwt", where "example" identifies the
specific kind of JWT, and <bcp14>SHOULD</bcp14> set the corresponding "typ" value to
"example+jwt", because distinct types make cross-JWT substitution harder when
validators check "typ", and because misapplying the Section 4.1.9 prefix rule
can cause validators to reject otherwise valid tokens or accept the wrong type.
This pairing <bcp14>SHOULD</bcp14> be omitted only when the JWT cannot be confused with other
kinds of JWTs in its application context.
For example, for Security Event Tokens (SETs) <xref target="RFC8417"/>, the media type is
"application/secevent+jwt" and the "typ" value <bcp14>SHOULD</bcp14> be "secevent+jwt", because
SETs are often issued in contexts where they could otherwise be mistaken for
other kinds of JWTs.</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, because without it,
mutually exclusive validation rules are harder to enforce and cross-JWT
confusion becomes more likely.</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.
As an example, <xref target="OWASP-Password-Storage"/> recommends 600,000 iterations (at time of publishing) when using
HMAC-SHA-256 in a FIPS-140 context.
Rejecting inputs with a <tt>p2c</tt> (PBES2 Count) value larger than twice that figure is <bcp14>RECOMMENDED</bcp14>,
unless threat analysis on the recipient side results in accepting a larger
number of iterations.</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,
because without such a limit, decompression can impose an unreasonable memory or CPU burden on recipients.</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,
Deb Cooley,
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="RFC8018">
          <front>
            <title>PKCS #5: Password-Based Cryptography Specification Version 2.1</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="A. Rusch" initials="A." surname="Rusch"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document provides recommendations for the implementation of password-based cryptography, covering key derivation functions, encryption schemes, message authentication schemes, and ASN.1 syntax identifying the techniques.</t>
              <t>This document represents a republication of PKCS #5 v2.1 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 2898.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8018"/>
          <seriesInfo name="DOI" value="10.17487/RFC8018"/>
        </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 892?>

<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-06">
        <name>draft-ietf-oauth-rfc8725bis-06</name>
        <ul spacing="normal">
          <li>
            <t>AD review followup: promoted selected lowercase must/should guidance to normative <bcp14>MUST</bcp14> language.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-05">
        <name>draft-ietf-oauth-rfc8725bis-05</name>
        <ul spacing="normal">
          <li>
            <t>Applied suggestions by responsible AD Deb Cooley.</t>
          </li>
        </ul>
      </section>
      <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:
H4sIAAAAAAAAA71963bbSJLm/3wKLP2jpB6CuljyrfvMtCyp2qryRWPK5e7T
p48bJFMSLBDgAKBULB0/wL7FPsj+2nmxjS8i8gKQcrl6u/f4hykgkYiMjPsl
kaapySaT2t6+SH74eJG8PD43WW2zF8lgbKfLOm9XA5Mt2+uqfmHSxM6zvHiR
rLK6Ki9HuW0v/3iFS6NpNTdJkpfNi+Qvo2R8bS8vbU1Xymxu6RLGR1er+ior
81+yNq/KF8lZ2S7zNsw+y6c3o+usnrXrk5+Mkle446c+ocF6yU8wz6fXmS0+
TT59rkrb/PG6avvzvBklP+Cen+eNPJO8DDe6UI5tcZmeNc3SzpLjqmyWRZuX
VzSMkPQiuW7bRfNiZ6fBqJxHjfLystox06y1V1W9epFMpgszq6byvlmdXbYp
MJhWwG9aX06fPd0/nORNuvvE5Iv6RdLWy6bd3919vrtvqklTFba1BDuGmeVi
lvFfTw/3npsbu7qr6hm26Ifxu7fJRztJLqobW+LCxwt3+d3ks522yTi/Kgn2
JCtnyWk5rVcLLBGD3o1P4ykwMGuXteVpxvGt7nMf8VjWttn0pqFfx0WWz/HD
0RCuYXh1VWeL65W5qbP5rLorP1U8RfOC8EhYqD7ls0+L2l7mP7/gv69smZpF
jtu0eXNbtrTi71a2+Y6uEC7n2WJBKwnX8rLISxv+JqzaWdOuiuhaU9UtvSOa
qWnrfNpGf6/m3QGt/blNi7xpU7o1qQq6lVa/+zfcqabRsGqalzOC0l1qWsLx
p6yoAkzNcjInAqFVt6sFXT07vfjetHkLCLt7l7y0TZscL+uaZkzO62za5lOi
TNrpm6u6Wi6ISTH4iNlTCZXGVQRGVQzMrS2XFqj7lsEEPIMz+Eizgzj+hIdw
XXhqwFT6RxDsiBgDN7J6ek03HOljHC7lt3bkhu3gws6kru4au8Mz7ODJq7y9
Xk7cpOnd1c5X2GFgjCmrek4Q3/Jy3n9//OT50+f6k+j/MPx8En4+Cz/d2Ge7
e0/Dz2f+52N/df+Qx5a81Yv02e5uevgkS+vHJGnenY32dkdPdvef7bw9G1+M
xucjuX9UPzZg9gjGo7fjs/TPz5/sp8S/DB8TOItR/E570uVobokEszJ5yxey
IhmDdEiuNSQfG6KPZWv5SbD9i+RtdWvnE1snmJ6vKwl9d76cFPk0+dGuOiyX
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

-->

</rfc>
