<?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-07" 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-07"/>
    <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="July" 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 177?>

<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 194?>

<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>As a best practice, libraries should opt for defensive security policies to cope
with potential issues in the underlying infrastructure, such
as the JSON parser.
In particular, libraries should 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"/>, unless this is not reasonably implementable.
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"/>, unless this risk is outside the applicable
threat model.</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, unless there are no
local resources to protect (e.g., a hosted sandbox).</t>
        <t>When such an allowlist is not available, the authorization server <bcp14>MUST</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, unless application requirements or interoperability
needs call for including the prefix;
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:</t>
        <ul spacing="normal">
          <li>
            <t>Implementations <bcp14>SHOULD</bcp14> register the full media type name
"application/example+jwt", where "example" identifies the specific kind
of JWT.</t>
          </li>
          <li>
            <t>Implementations <bcp14>SHOULD</bcp14> set the corresponding "typ" value to "example+jwt".</t>
          </li>
        </ul>
        <t>These recommendations apply unless the JWT cannot be confused with other
kinds of JWTs in its application context, in which case the media type and
"typ" pairing <bcp14>MAY</bcp14> be omitted.</t>
        <t>Distinct types make cross-JWT substitution harder when validators check "typ".
Misapplying the Section 4.1.9 prefix rule can cause validators to reject
otherwise valid tokens or accept the wrong type.</t>
        <t>For example, for Security Event Tokens (SETs) <xref target="RFC8417"/>, the media type is
"application/secevent+jwt" and the "typ" value should 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/>
          </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="23" month="June" 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 are expected to meet.

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

<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-07">
        <name>draft-ietf-oauth-rfc8725bis-07</name>
        <ul spacing="normal">
          <li>
            <t>Applied ARTART review suggestions for <bcp14>SHOULD</bcp14> language in Sections 3.1, 3.2, 3.6, and 3.10.</t>
          </li>
          <li>
            <t>Applied ARTART review suggestions regarding explicit typing (Section 3.11).</t>
          </li>
        </ul>
      </section>
      <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:
H4sIAAAAAAAAA71963bbyLXm/3oKDP2jpRyCuljyLVnnhJbUsbp90THldrKy
shyQLEmwSIAHAKVma/kB5i3mQebXnBeb/e296wKQdLszyaxktSmgUKjate83
pGlqsvG4sncvkh8+XiYvTy5MVtnsRdIb2cmyyptVz2TL5qasXpg0sfMsn71I
VllVFleD3DZXf7zGpcGknJskyYv6RfKXQTK6sVdXtqIrRTa3dAnjo6tldZ0V
+S9Zk5fFi+S8aJZ5E2af5pPbwU1WTZv1yU8HySvc8VOf0mC95CeY55ObzM4+
jT99Lgtb//GmbLrzvBkkP+Cen+eNPJO8DDfaqxzZ2VV6XtdLO01OyqJezpq8
uKZhBKQXyU3TLOoXe3s1RuU8apAXV+WemWSNvS6r1YtkPFmYaTmR902r7KpJ
AcG0BHzT6mry7Onh8Tiv0/2nJl9UL5KmWtbN4f7+8/1DU47rcmYbS2vHMLNc
TDP+6+nxwXNza1f3ZTXFEf0wevc2+WjHyWV5awtc+HjpLr8bf7aTJhnl1wWt
PcmKaXJWTKrVAlvEoHejs3gKDMyaZWV5mlF8q/3cRzyWNU02ua3p18ksy+f4
4XAI1zC8vK6yxc3K3FbZfFreF59KnqJ+QXAkKJSf8umnRWWv8p9f8N/XtkjN
IsdtOry5LRra8XcrW39HVwiW82yxoJ2Ea3kxywsb/iao2mndrGbRtbqsGnpH
NFPdVPmkif5ezdsDGvtzk87yuknp1ric0a20/N2/4U45iYaVk7yY0irdpboh
GH/KZmVYU70czwlBaNfNakFXz88uvzdN3mCF7bNLXtq6SU6WVUUzJhdVNmny
CWEmnfTtdVUuF0SkGDxk8lREpXElLaOc9cydLZYWoPuWwbR4Xk7vI80O5PgT
HsJ1oakeY+kfgbADIgzcyKrJDd1wqI9xuJTf2YEbtocLe+OqvK/tHs+whyev
8+ZmOXaTpvfXe18hh54xpiirOa34jrfz/vuTJ8+fPtefhP/H4eeT8PNZ+OnG
Pts/eBp+PvM/H/urh8c8tuCjXqTP9vfT4ydZWj0mTvPufHCwP3iyf/hs7+35
6HIwuhjI/WH12IDYozUO347O0z8/f3KYEv3y+hjBmY3id9rhLsO5JRTMiuQt
X8hmyQioQ3ytJv5YE34sG8tPguxfJG/LOzsf2yrB9HxdUei7i+V4lk+SH+2q
RXIJLS9pbmzyfV5kxSTHG2x1B4SiF0yJ0YBFYcDZbJYTVU541gT4d2eJzdKZ
4RnHEZLhjLganeM82Tk7OR0Nd0EAw1l2T7evy2nmAXawv/907/nTZ+nj9AnB
4+jps+Oj9OmnJzT85Kczgs/Bcfr88PE3AAlQj2DwJlvR9g+e8SWi1wmRFNOe
h+FPy1lhq2ycz4gHJadZk42zWsDYZNW1bQLjLu6mA5z64Lq827uj5/amtiGM
3mutMYZ060ZyyqP9ng4fp8cHT58e/eZNfW/HA9rV4dH/j125Va5vy90J+yIx
kp4QD7q11aZNsVQl4fk+X9aKOSLoXhL3mhJi+xuO15G2ofNtXLrwCMhs4h88
RVrRFHuT9PN9k06iJwVwV9mMgfCjpX9XbeyjzRztp0fHT54cpM8/HR7QsNdZ
cX1r54uv7GY0iEa19jT6XNpq2r0r6xjZReNI8+DJxq3d398Pap5i5mcYFLM9
PLC3/3yPGIzIUuLDvFssjnCAGARQYC8G49ANZIC2B9K4N5PXNiu2bvFyoCNa
27vM5/FlR23EyrGn4417wuT7clqz8npvQqyBVjFL7yJkzW2d5kX6uS6L9N6O
0wZSjsTquMoqutfa14lOkHQmoHV3xaSfgJ5/t7DF+engpKzs1k2/JQU1u83n
yyprbZsIrH1Dx/8wICTOpjO7ag3/obwpWjfSNdUyDN6gXsZUM7XJGzu1eVWu
E0+5dlefO6HDI1Umn9NmW0+d3CxJKW7fk0M8tROHm4ePN55jSQDMiWnYZq9e
2EmtF1JiQwXpjvRvZdODT/uDm2Y+iw9MIA/VGOMSnEByMNinpdIji7LKoC4n
tqIfWVLbJjkMx/WSUJjgQ0/Otp7abwbrtx7bPwsy47CJbwEQ9pyeyPjkdXld
Lpuvw+tAVZ+nR171OTiOtCCvwxwdHIWf/iopU/rz+f4Tp/o8f7q/j5+jrKjL
raAfDmRAC47DoimLvIzudPjE03+YT6xaXMJ6S2Mzg2iLw5g9RDZKkvyUzYgz
Zls3+XrghrS2+Xp5a1s3IiayJE3prsM738Iebd35bUAM07+yMNI6kudtNs2z
9q0O2J9tBHueDSYVBMyzvcPnz1oK43lB6MVPl1ei7Y3uMzIX3tisJuMNSKga
YTJhXTCfL2YWthgLGebIJHV0mff5bApN8N3H4egivcjqGoZpOmoIo6838uS2
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

-->

</rfc>
