<?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.29 (Ruby 3.3.8) -->
<?rfc comments="yes"?>
<?rfc docmapping="yes"?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc strict="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc tocindent="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sheffer-oauth-rfc8725bis-01" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <front>
    <title abbrev="JWT BCP">JSON Web Token Best Current Practices</title>
    <seriesInfo name="Internet-Draft" value="draft-sheffer-oauth-rfc8725bis-01"/>
    <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="2025" month="May" day="23"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</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 150?>

<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>
  <middle>
    <?line 164?>

<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 digital identity information,
such as OpenID Connect ID Tokens  <xref target="OpenID.Core"/>
and OAuth 2.0  <xref target="RFC6749"/> access tokens and
 refresh tokens, the details of which are 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 "MUST", "MUST NOT",
 "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
 "RECOMMENDED", "NOT RECOMMENDED",
 "MAY", and "OPTIONAL" 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>
      </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"/>.</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 signed JWS as opposed to an encrypted JWE 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. 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 being used by more different protocols in diverse
 application areas, it becomes increasingly
important to prevent cases of JWT tokens that have been issued for one purpose
being subverted and 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  MUST be employed to prevent these substitution attacks.</t>
        <t>For mitigations, see Sections  <xref format="counter" target="validate-iss-sub"/>,  <xref format="counter" target="use-aud"/>,  <xref format="counter" target="use-typ"/>, and  <xref format="counter" target="preventing-confusion"/>.</t>
      </section>
      <section anchor="indirect-attacks-on-the-server">
        <name>Indirect Attacks on the Server</name>
        <t>Various JWT claims are used by the recipient to perform lookup operations,
such as database and Lightweight Directory Access Protocol (LDAP) searches.
Others include URLs that are similarly looked up by the server. Any of these claims can be used by
an attacker as vectors for injection attacks or server-side request forgery (SSRF) attacks.</t>
        <t>For mitigations, see  <xref target="do-not-trust-claims"/>.</t>
      </section>
      <section anchor="unreasonable-iterations">
        <name>Computation Cost of Unreasonable Number of Hash Iterations</name>
        <t>The <tt>p2c</tt> (PBES2 Count) header parameter for the PBES2 encryption algorithms
specifies the number of iterative hash computations to be performed.
Attackers can use a very large count,
thereby imposing an unreasonable computational burden on recipients.</t>
        <t>For mitigations, see <xref target="limit-iterations"/>.</t>
      </section>
      <section anchor="autogen-algorithm-verification-code-not-defensively-written">
        <name>Algorithm Verification Code Not Defensively Written</name>
        <t>Some JWT implementations included a list of disallowed algorithm names,
e.g., do not use "none".
These same applications misinterpreted
the JOSE specifications when parsing the token, reading algorithm values
as if they were case-insensitive. The end result was that an attacker
could change the "alg" value to "noNE" and bypass the security check.</t>
        <t>For mitigations, see <xref target="algorithm-verification"/>.</t>
      </section>
      <section anchor="autogen-jwe-decompression-bomb-attack">
        <name>JWE Decompression Bomb Attack</name>
        <t>JWE supports the optional compression of the plaintext prior to encryption via the "zip" header parameter as defined in <xref target="RFC7516"/> Section 4.1.3. Upon decryption, recipients are expected to decompress the payload before further processing. However, if the recipient does not enforce limits on the size of the decompressed output, an attacker can craft a malicious JWE with a highly compressed, arbitrarily large payload. This can cause excessive resource consumption (CPU, memory), resulting in Denial of Service (DoS).</t>
        <t>For mitigation, see <xref target="limit-decompression"/>.</t>
      </section>
      <section anchor="autogen-jwt-format-confusion">
        <name>JWT Format Confusion</name>
        <t>Some JWS implementations support both the Compact and JSON Serializations. While JWTs MUST use the Compact Serialization, if an application by mistake verifies a JWT using the JSON Serialization but extracts claims by parsing it as a JWT using the Compact Serialization (e.g., via string splitting), an attacker can craft a valid JSON JWS with a forged payload. This mismatch in format handling can lead to authentication bypass or impersonation.</t>
        <t>For mitigations, see <xref target="token-format"/>.</t>
      </section>
    </section>
    <section anchor="BP">
      <name>Best Practices</name>
      <t>The best practices listed below should be applied by practitioners
to mitigate the threats listed in the preceding section.</t>
      <section anchor="algorithm-verification">
        <name>Perform Algorithm Verification</name>
        <t>Libraries  MUST enable the caller to specify a
 supported set of algorithms and  MUST NOT use any other algorithms when performing cryptographic operations.
The library  MUST ensure that the "alg" or "enc" header specifies the same algorithm
that is used for the cryptographic operation.
Moreover, each key  MUST be used with exactly one algorithm,
and this  MUST be checked when the cryptographic operation is performed.</t>
        <t>Libraries SHOULD opt for defensive security policies to cope
with potential issues in the underlying infrastructure, such
as the JSON parser. In particular, 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  SHOULD consider the JWS to be invalid."</t>
        <t>Therefore, applications  MUST 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  MUST therefore be designed to enable cryptographic agility.</t>
        <t>That said, if a JWT is cryptographically protected end-to-end by a
 transport layer, such as TLS
using cryptographically current algorithms, there may be no need to apply another layer of
cryptographic protections to the JWT.
In such cases, the use of the "none" algorithm can be perfectly acceptable.
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;
then, the URL-safe claims representation and processing can be the same in both
the signed and unsigned cases.
JWT libraries  SHOULD NOT generate JWTs using "none" unless
explicitly requested to do so by the caller.
Similarly, JWT libraries  SHOULD NOT consume JWTs using "none"
 unless explicitly requested by the caller.</t>
        <t>Applications  SHOULD 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  SHOULD 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>
      </section>
      <section anchor="validate-crypto">
        <name>Validate All Cryptographic Operations</name>
        <t>All cryptographic operations used in the JWT MUST be validated and the entire JWT MUST 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 in which both outer and inner operations  MUST be validated
using the keys and algorithms supplied by the application.</t>
        <t>Libraries MUST allow the verifier to distinguish between JWS-signed and JWE-encrypted JWTs.
This would allow verifiers to easily establish a policy of only accepting JWS-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  MUST
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"/>
  MUST be followed.
In particular, human-memorizable passwords  MUST NOT 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  SHOULD NOT be done before encryption, because
such compressed data often reveals information about the plaintext.</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  MUST do this and not use or admit 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
  MUST validate that the cryptographic keys
used for the cryptographic operations in the JWT belong to the issuer.
If they do not, the application  MUST reject the JWT.</t>
        <t>The means of determining the keys owned by an issuer is application-specific.
As one example, OpenID Connect  <xref target="OpenID.Core"/>
issuer values 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  <xref target="RFC8414"/>.
Other applications may use different means of binding keys to issuers.</t>
        <t>Similarly, when the JWT contains a "sub" (subject) claim, the
 application  MUST 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.
If the issuer, subject, or the pair are invalid, the application
  MUST 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,
the JWT  MUST 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 at an unintended party.</t>
        <t>In such cases, the relying party or application  MUST
 validate the audience value,
and if the audience value is not present or not associated with the recipient,
it  MUST 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 SHOULD protect against such
attacks, e.g., by matching the URL to a whitelist of allowed locations
and ensuring no cookies are sent in the GET request.</t>
      </section>
      <section anchor="use-typ">
        <name>Use Explicit Typing</name>
        <t>Sometimes, 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>Per the definition of "typ" in  Section 4.1.9 of <xref target="RFC7515"/>,
it is  RECOMMENDED that the "application/" prefix be omitted from the "typ" value.
Therefore, for example, the "typ" value used to explicitly include a type for a SET SHOULD be "secevent+jwt".
When explicit typing is employed for a JWT, it is  RECOMMENDED
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.</t>
        <t>When applying explicit typing to a Nested JWT, the "typ" Header
 Parameter containing the explicit type value  MUST 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 existing kinds of JWTs often do not use the "typ" Header Parameter value.
Explicit typing is  RECOMMENDED 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  MUST be written such that
they are mutually exclusive,
rejecting JWTs of the wrong kind.
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
  RECOMMENDED.</t>
      </section>
      <section anchor="limit-iterations">
        <name>Limit Hash Iteration Count</name>
        <t>Implementations are RECOMMENDED 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 that an iteration count of 600,000 is required when using HMAC-SHA-256 to achieve FIPS-140 compliance.
Thus, rejecting inputs with a <tt>p2c</tt> (PBES2 Count) value over 1,200,000 (double that) is RECOMMENDED.</t>
      </section>
      <section anchor="token-format">
        <name>Check JWT Format Type</name>
        <t>Implementations MUST confirm the JWT is in a legal format while parsing it. Legal JWTs 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 MUST be rejected.</t>
      </section>
      <section anchor="limit-decompression">
        <name>Limit JWE Decompression Size</name>
        <t>Implementations are RECOMMENDED 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>
      <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, Eric Rescorla, Adam Roach, Martin Vigoureux,
and  Éric Vyncke
for their reviews.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="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>
        <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>
      </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="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="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="Sanso" target="https://blogs.adobe.com/security/2017/03/critical-vulnerability-uncovered-in-json-encryption.html">
          <front>
            <title>Critical Vulnerability Uncovered in JSON 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>
      </references>
    </references>
    <?line 779?>

<section anchor="autogen-document-history">
      <name>Document History</name>
      <t>[[Note to RFC Editor: please remove before publication.]]</t>
      <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:
H4sIAAAAAAAAA7193XbbyHbmPZ6iRr5o6YSgfmzZspOL0JJ8rG7LVkzZPllZ
WT4gUZJggQCDAshma/kB8hbzIHOVvFj2t3f9gaR8upOZ6ZumgELVrl37/6ec
pmmSTSaNXrxSP3+5Vq9Pr5Ks0dkrNdbTrinaVZJ17V3dvEpSpWdZUb5Sq6yp
q5thodubf7zFo+G0niVKFZV5pf55qMZ3+uZGN/SkymaaHmF89LRubrOq+C1r
i7p6pS6qtivaMHteTO+Hd1mTt5uTnw3VW7zxU5/RYPvITzArpneZLr9Ovn6r
K23+8a5u1+e5HKqf8c7PcynfqNfhRR/KsS5v0gtjOp2r07oyXdkW1S0NIxy9
UndtOzev9vcNRhU8alhUN/V+Ms1afVs3q1dqMp0neT2V9fImu2lTIyhJa6A4
bW6mJy+OjieFSQ8Ok2LevFJt05n26ODg5cFRcq9Xy7rJcQ4/jz+8V1/0RF3X
97rCgy/X7vGHyTc9bdW4uK0IQJVVuTqvps1qjn1g0IfxeTwFBmZt12ieZhy/
6n/3BZ9lbZtN7w39Oi2zYoYfnk7oGYbXt002v1sl9002y+tl9bXmKcwrQhbt
s/5a5F/njb4pfn3Ff9/qKk3mBV7TCc101dIB/bTS5id6QgibZfM57SQ8K6qy
qHT4m/Cmc9OuyuiZqZuW1ohmMm1TTNvo79WsP6DVv7ZpWRg6ltVsUpf0Kq3/
9Hd4U0+jYfW0qHKC0j0yLeH4a1bWASbTTWZEBbTrdjWnpxfn12+StmgBYf/s
1GttWnXaNQ3NqK6abNoWUyI/Oun726bu5q/UhxERh/pCD3Cef8bDJEmqupkR
aS408PbxzenR4eFL+/P5yxfu54vjw+Pw83n4eRJ+urEnB4cv/M+n/ufhi2fu
59Exj60YR/P05OAgPX6epc1T4sMPF8PDg+Hzg6OT/fcX4+vh+Goo70fN0wSs
EIE7ej++SP/y8vlRSqTN8DFlsJDB73SN90YzTWeXVeo9P8hKNQbOiesNSQ9D
iO1azV/mxG2v1Pt6oWcT3ShMz88t7n+66iZlMVW/6FWPVhWBp9o7rd4UVVZN
C6ygmwVOghbIiQfBwBhwXpYFkfOUZ1U4uIUmIXRbtPjGsZIalcTzRXs3U7vn
p2fj0R4oZ1RmS3p9W+eZR9jhwcGL/ZcvTtKn6XPCx7MXJ8fP0hdfn9Pw08/n
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
gGig/CVquXTrle5A8d0w+S9vR059IHQAAA==

-->

</rfc>
