<?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-10" 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-10"/>
    <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
      <organization>Independent</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="August" day="21"/>
    <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 178?>

<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 RFC 8725 to provide additional actionable guidance
covering threats and attacks that have been discovered
since RFC 8725 was published.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-rfc8725bis/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/draft-ietf-oauth-rfc8725bis"/>.</t>
    </note>
  </front>
  <middle>
    <?line 193?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>JSON Web Tokens, also known as JWTs <xref target="RFC7519"/>, are URL-safe JSON-based security tokens
that contain a set of claims that can be signed and/or encrypted.
The JWT specification has seen rapid adoption because it encapsulates
security-relevant information in one easy-to-protect location, and because
it is easy to implement using widely available tools.
One application area in which JWTs are commonly used is
representing authorization information, such as OAuth 2.0 access tokens <xref target="RFC9068"/>,
and identity information, such as OpenID Connect ID Tokens <xref target="OpenID.Core"/>.
The details of these uses are application- and deployment-specific.</t>
      <t>Since the JWT specification was published, there have been several widely published
attacks on implementations and deployments.
Such attacks are the result of under-specified security mechanisms, as well as incomplete
implementations and incorrect usage by applications.</t>
      <t>The goal of this document is to facilitate secure implementation and deployment of JWTs.
Many of the recommendations in this document are about
implementation and use of the cryptographic mechanisms underlying JWTs that are defined by
JSON Web Signature (JWS) <xref target="RFC7515"/>,
JSON Web Encryption (JWE) <xref target="RFC7516"/>, and
JSON Web Algorithms (JWA) <xref target="RFC7518"/>.
Others are about use of the JWT claims themselves.</t>
      <t>These are intended to be minimum recommendations for the use of JWTs
in the vast majority of implementation
and deployment scenarios. Other specifications that reference this document can have
stricter requirements related to one or more aspects of the format, based on their
particular circumstances; when that is the case, implementers are advised to adhere
to those stricter requirements. Furthermore, this document provides a floor, not a ceiling,
so stronger options are always allowed (e.g., depending on differing evaluations of the
importance of cryptographic strength vs. computational load).</t>
      <t>Community knowledge about the strength of various algorithms and feasible attacks can
change quickly, and experience shows that a Best Current Practice (BCP) document about
security is a point-in-time statement. Readers are advised to seek out any errata or
updates that apply to this document.</t>
      <t>This document obsoletes <xref target="RFC8725"/>. In addition to retaining the guidance from that BCP,
it adds recommendations addressing attacks and vulnerabilities discovered since its
publication; <xref target="changes-from-rfc8725"/> summarizes those additions. This document also
updates <xref target="RFC7519"/> by tightening claim and "typ" usage and validation (especially
audience, issuer/subject, and explicit typing), and by restricting how Unsecured JWTs
(<tt>alg</tt> value "none") are used.</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 Sections <xref format="counter" target="algorithm-verification"/> and <xref format="counter" 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="alg-verification-threat">
        <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="jwe-decompression-bomb">
        <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="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 (<xref section="1" sectionFormat="of" target="RFC7519"/>), 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 <xref section="5.2" sectionFormat="of" 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.</t>
        <t>The "none" algorithm is deprecated by <xref target="I-D.ietf-jose-deprecate-none-rsa15"/>.
JWT libraries <bcp14>MUST NOT</bcp14> generate JWTs using "none" unless
explicitly requested to do so by the caller.
Similarly, JWT libraries <bcp14>MUST NOT</bcp14> consume JWTs using "none"
unless explicitly allowed 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>Deprecate all RSA-PKCS1 v1.5 encryption algorithms (<xref section="7.2" sectionFormat="of" target="RFC8017"/>),
as specified in <xref target="I-D.ietf-jose-deprecate-none-rsa15"/>,
preferring RSAES-OAEP (<xref section="7.1" sectionFormat="of" target="RFC8017"/>).</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="RFC9864"/> defines fully-specified JOSE
algorithm identifiers and deprecates polymorphic identifiers such as "EdDSA".
New deployments <bcp14>SHOULD</bcp14> prefer fully-specified algorithm identifiers (for example,
"Ed25519" rather than "EdDSA") when negotiating and configuring algorithms,
unless backward compatibility requires use of the older polymorphic identifiers.</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 of JWTs with a single set of Header Parameters.
If an implementation supports Nested JWTs, as defined in <xref section="2" sectionFormat="of" target="RFC7519"/>,
then both the 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 recipient to distinguish between
Unsecured JWTs,
signed JWTs (JWSes),
encrypted JWTs (JWEs), and
signed and encrypted JWTs (Nested JWTs).
This allows recipients to easily apply policies that only accept
appropriate JWTs for the application context.
Note that authentication use cases typically require the use of 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., Section 7.1 of <xref target="Valenta"/>).
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 <xref section="10.1" sectionFormat="of" target="RFC7515"/>,
the Password Considerations in <xref section="8.8" sectionFormat="of" 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 <xref section="4.8" sectionFormat="of" 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, uncritically 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 <xref section="4.1.9" sectionFormat="of" 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 prefix rule in <xref section="4.1.9" sectionFormat="of" target="RFC7515"/> 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,
because without such a limit, decompression can impose an unreasonable memory or CPU burden on recipients.
Deployed JOSE libraries commonly use limits on the order of a few hundred kilobytes, e.g., 250 KB in one implementation.</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
Mike Bishop,
Mohamed Boucadair,
Brian Campbell,
Jianjun Chen,
Deb Cooley,
Charles Eckel,
Dan Moore,
Aaron Parecki,
Filip Skokan,
Ketan Talaulikar,
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="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>
        <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="RFC9864">
          <front>
            <title>Fully-Specified Algorithms for JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This specification refers to cryptographic algorithm identifiers that fully specify the cryptographic operations to be performed, including any curve, key derivation function (KDF), and hash functions, as being "fully specified". It refers to cryptographic algorithm identifiers that require additional information beyond the algorithm identifier to determine the cryptographic operations to be performed as being "polymorphic". This specification creates fully-specified algorithm identifiers for registered JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE) polymorphic algorithm identifiers, enabling applications to use only fully-specified algorithm identifiers. It deprecates those polymorphic algorithm identifiers.</t>
              <t>This specification updates RFCs 7518, 8037, and 9053. It deprecates polymorphic algorithms defined by RFCs 8037 and 9053 and provides fully-specified replacements for them. It adds to the instructions to designated experts in RFCs 7518 and 9053.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9864"/>
          <seriesInfo name="DOI" value="10.17487/RFC9864"/>
        </reference>
      </references>
    </references>
    <?line 862?>

<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="alg-verification-threat"/> and <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="incorrect-composition-of-encryption-and-signature"/> and <xref target="validate-crypto"/>).</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="unreasonable-iterations"/> and <xref target="limit-iterations"/>).</t>
        </li>
        <li>
          <t>JWT Format Confusion: Added mitigation for JWT serialization format confusion attacks (<xref target="jwt-format-confusion"/> and <xref target="token-format"/>).</t>
        </li>
        <li>
          <t>Compression DoS: Added mitigation for DoS attacks resulting from abuse of compression in JWE (<xref target="jwe-decompression-bomb"/> and <xref target="limit-decompression"/>).</t>
        </li>
        <li>
          <t>Explicit Typing: Expanded the guidance on explicit typing by defining recommended <tt>typ</tt> and media type conventions, recipient processing rules, and deployment guidance for new and existing JWT types (<xref target="use-typ"/> and <xref target="preventing-confusion"/>).</t>
        </li>
        <li>
          <t>Untrusted Header Parameters and SSRF: Added guidance on treating <tt>kid</tt>, <tt>jku</tt>, and <tt>x5u</tt> as potentially attacker-controlled input, including SSRF mitigations and DNS resolution checks when processing untrusted URLs (<xref target="do-not-trust-claims"/>).</t>
        </li>
        <li>
          <t>Normatively references <xref target="I-D.ietf-jose-deprecate-none-rsa15"/>,
makes the text requiring application opt-in to use JWTs with algorithm "none" a "<bcp14>MUST</bcp14>",
and states that the RSA-PKCS1 v1.5 algorithms are deprecated.</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-10">
        <name>draft-ietf-oauth-rfc8725bis-10</name>
        <ul spacing="normal">
          <li>
            <t>Added Charles Eckel and Mohamed Boucadair to the Acknowledgements.</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-09">
        <name>draft-ietf-oauth-rfc8725bis-09</name>
        <ul spacing="normal">
          <li>
            <t>Clarified that the JWE decompression size limit is a ballpark drawn from deployed libraries (IESG review).</t>
          </li>
          <li>
            <t>IESG nits: replaced "blindly" and added a missing comma after "However".</t>
          </li>
        </ul>
      </section>
      <section anchor="autogen-draft-ietf-oauth-rfc8725bis-08">
        <name>draft-ietf-oauth-rfc8725bis-08</name>
        <ul spacing="normal">
          <li>
            <t>Clarified that Nested JWT validation applies when Nested JWTs are supported (SECDIR review).</t>
          </li>
          <li>
            <t>Applied IESG ballot comments by Ketan Talaulikar (Introduction relationships, Compact Serialization and <tt>typ</tt> prefix citations).</t>
          </li>
          <li>
            <t>Updated Appendix A (Changes from RFC 8725) with complete bullets and section references.</t>
          </li>
          <li>
            <t>Added an informative mention of fully-specified JOSE algorithm identifiers (<xref target="RFC9864"/>).</t>
          </li>
          <li>
            <t>Made the <xref target="I-D.ietf-jose-deprecate-none-rsa15"/> reference normative and
rewrote the text on "alg":"none" and RSA-PKCS1 v1.5 accordingly.</t>
          </li>
          <li>
            <t>Corrected section reference and itemized list syntax and
removed extraneous spaces in the source.</t>
          </li>
          <li>
            <t>Applied spelling and grammar corrections.</t>
          </li>
        </ul>
      </section>
      <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 follow-up: 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:
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
bu/Fpgds1n5gC23YkO1wGt5n7V2wdxUEQghy3g1JqdtZWXrKMVcNFREzYZFi
VlulJ2D6ckapN7YC158G5FMotha6o1QDX6nWvga2bI+Id+MpM1DS/f2/4czz
0RMcyRAUkCkJKyc4ysudEze/SY8ACKfVsIpRx8AqNBzmjNCzGS10MIreEuzB
0QG7ccKZawBsfvcWTF6tVyIz8Gy2f3i492xABM+qldZX2Bdui3Yu0uuyURkJ
yK073bU7hlYAoq5qibIFu29S7aJ4rcPTsFIy8cDy1QT+2XpwxyQETzrmxrtF
kDPp1zOSmsA5mAd8+56peencpcBD0rNcAKjqDqrSz2yRRBxFsww+N/1SKDXx
UKxWte6crg1RcdbWRTz6Bxlqzpsm/SPmPmb9VlSxtgHpxZitTN7vxP00P+ri
jcQPiE/zwfGCT606/KzhI/LiAPXbchDCax4uGvchia6h248VeTO7k4zcUM8b
dQ/+DSNffcxnr8d8dq7rwPPx7VrPsAUWVn9UgMBtW9QDwOow7g5TN6kRmZaD
o96DhSAQp4H1dhS4Y/ICm4LbYIKG2fQHK7xxJlJMYKvxvGMSVGHXoy6fdHnk
XMrwAv7QajGNSz/EIL68a01/XxF7xq/IhZ0TdXbK9qItV7JH6OdQspYBiouU
rFzHDlssJ4koW98labTaluVJ4apYyk6sdesGI1QvsOSyM+qzGvrqGSf399qS
ic2TS/EUd/wxTRvmC2oZa7cITa44RpgbCUhGQaCii89+0TfbzFv0FFgQ9tG3
kXu2gJ1QSVNPjNpS9G6b1N6K/DkYWvPidttC60PHnoclQqXdanoVXdEU0a6i
h98REh08FP0mYYTM05jmQBAe92tzgdM+Q/rn8dGBlDlcxIf7e8MoqBDjGGGY
NzYdSHys4slof/R4dICFnkAWclRIOpPG6Ezqj6ZF70l6kcDbxrYO3nfMe2a9
iySr4o8IAtKD8ZmNxbGBM2YDDOdOAcEp+cZIrKKbWiIaM+yAOoju79fbv8Kp
0sKWwV9UhyLY+5eDg6OB1h3uPn6KKqGubw7No4K4mwbV+IXvmdGZBNJHVeKZ
BEm7jM7HiV6huGfsD+ec6eGc+0fhgRbxLYFOex+79l4s3p+ZIdnemaZdZYKu
mJ1YklScu0ZbJxtWYJ89Gh35R12rmIsXP52+3N/glWg/3q9fI6uI7EnItRBf
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
+IC/8mg/pjY07vOPM+n7k3eJ6P8Cbr3UbJafAAA=

-->

</rfc>
