<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.7) -->
<?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-03" category="bcp" consensus="true" submissionType="IETF" obsoletes="8725" updates="7519" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="JWT BCP">JSON Web Token Best Current Practices</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc8725bis-03"/>
    <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="January" day="12"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>JSON Web Token</keyword>
    <keyword>JWT</keyword>
    <keyword>JSON Object Signing and Encryption</keyword>
    <keyword>JOSE</keyword>
    <keyword>JSON Web Signature</keyword>
    <keyword>JWS</keyword>
    <keyword>JSON Web Encryption</keyword>
    <keyword>JWE</keyword>
    <keyword>attacks</keyword>
    <keyword>Claims</keyword>
    <keyword>Security</keyword>
    <keyword>Cryptography</keyword>
    <abstract>
      <?line 175?>

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

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

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

<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-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:
H4sIAAAAAAAAA7196XbbSJLufzwFhv5RUg1BLba8TZ+ZliVVW1VeNKZsd586
fdwgmZJggQAHi1gsHT/AvMV9kPvrzovd+CIiF4Cky9W3+x7/MAUkEpGRsS+J
JEmidDKpzN3z+MePl/GLk4sorUz6PB6MzbStsmY1iNK2uSmr51ESm3ma5c/j
VVqVxdUoM83VH69xaTQt51EcZ0X9PP7LKB7fmKsrU9GVIp0buoTxwdWyuk6L
7Ne0ycrieXxeNG3W+Nln2fR2dJNWs2Z98tNR/BJ33NSnNFgvuQnm2fQmNfmn
yafPZWHqP96UTX+e16P4R9xz87yWZ+IX/kYXyrHJr5Lzum7NLD4pi7rNm6y4
pmGEpOfxTdMs6ud7ezVGZTxqlBVX5V40TRtzXVar5/Fkuohm5VTeN6vSqyYB
BpMS+E2qq+nTJ4dHk6xO9h9G2aJ6HjdVWzeH+/vP9g+jclKXuWkMwY5hUbuY
pfzXk6ODZ9GtWS3LaoYt+nH89k380Uziy/LWFLjw8dJefjv5bKZNPM6uC4I9
TotZfFZMq9UCS8Sgt+OzcAoMTJu2MjzNOLzVfe4jHkubJp3e1vTrJE+zOX5Y
GsI1DC+vq3Rxs4puq3Q+K5fFp5KnqJ8THgkL5ads9mlRmavsl+f897UpkmiR
4TZt3twUDa34u5Wpv6MrhMt5uljQSvy1rMizwvi/CatmVjerPLhWl1VD7whm
qpsqmzbB36t5d0BjfmmSPKubhG5NypxuJeX3/4o75TQYVk6zYkZQ2kt1Qzj+
lOalh6luJ3MiEFp1s1rQ1fOzyx+iJmsAYXfv4hembuKTtqpoxviiSqdNNiXK
pJ2+va7KdkFMisHHzJ5KqDSuJDDKfBDdmaI1QN23DCbgGZzBR5odxPEnPITr
wlMDptI/gmBHxBi4kVbTG7phSR/jcCm7MyM7bA8X9iZVuazNHs+whyevs+am
ndhJk+X13lfYYRBFUVFWc4L4jpfz7oeTx8+ePNOfRP9H/udj//Op/2nHPt0/
eOJ+PnQ/D494QMH7u0ie7u8nR4/TpHpI4uXt+ehgf/R4//Dp3pvz8eVofDGS
+8cVcSlxeADY8ZvxefLnZ48PE2JaBoqpmmUnfic9kXI8N0R3aRG/4QtpHo9B
LyTMahKKNRFF2xh+Erz+PH5T3pn5xFQxpufrSjffXbSTPJvGP5lVh89iAi9u
bkz8Q1akxTTDG0x1ByqiF8xIukAuYcBZnmfEilOeNQbR3RmSrbRReMaKgfg4
J1FGmzePd85OTsfHu6D64zxd0u3rcpY6hB3s7z/Ze/bkafIweUz4ePTk6dGj
5MmnxzT85MMZ4efgKHl2+PAbkASsBzh4na5o+QdP+RIx6ZT4iBnO4fBDmxem
SidZToInPk2bdJLWgsYmra5N46V1cTcbYddH1+Xd3h09tzczDZHxXgfGENOd
G/Epj3ZrOnyYHB08efLody/qBzMZ0aoOH/3/WJWFcn1Z9o5fF+mO5IQEz62p
Ni2KVSlpzHdZWyvliHZ7QSJrRoTtblgBRyaGzrcRdBEMUNQkNHiKpKIp9qbJ
52WTTN2TP5m8NqsutRHwj/aTR0ePHx8kzz4dHtCwV2lxfWvmi69APx4Fozpr
GH8uTTXr35UNG5tFY1nx4PHGpSyXy1HNU+RuhlGR7+GBvf1neyRQRGGSsOXV
ATjacxII2PK9EG3HdiAjsDuQxr2evjJpsXWJlyMd0VneZTYPL1vuInmNNR1t
XBMm35fdycvrvSmJAoIiT+4C4sxMnWRF8rkui2RpJkkDVUa6c1KlFd3rrOtE
J4h7ExDcfV3oJqDn3y5McX46Oikrs3XRb8gKTW+zeVulnWUTQ3Vv6PgfR0S0
6Sw3q87wH8ubonMjWbMf/eANNmTIJTMTvzYzk1XlOrOUa3f1uRPaPLJXsjkt
tvPUyU1Llm/3nmziqZla2jx8uHEfS0JgRkLCNHv1wkxrvZCQ2CnIQKT/K5Mc
fNof3TTzPNwwwTzsX4yLsQPxwWifQKVHFmWVwiaOTUU/0rg2TXzot+sFkTDh
h57Mt+7a70brt27bPwozE7+Ib0EQ1pycyPj4VXldts3X8XWg9s2TR86+OTgK
TB1nszw6eOR/uqtkMenPZ/uPrQH07Mn+Pn6O06Iut6L+eCQDOng8LpqyyMrg
Tk9OPPm75cSqIyWMcyc2C4iu+gvFQ+CIxPGHNCfJmG5d5KuRHdJZ5qv21nRu
BEKkJcvoric738Dp7Nz5fUj007808MR6mudNOsvS7q0e2p9uRHuWjqYVFMzT
vcNnTzsG4nlB5MVPl1di3Y2XKfkEr01ak4cGIlQLMJ6y7ZfNF7mBw8VKhiUy
aR0Fc5nlM1h+bz8ejy+Si7Su4X0m44Yo+nqjTO6aP/xcCJ+dItYpSLoZCOob
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
3XwmZ+/kXSL6v5Tf4tuxiAAA

-->

</rfc>
