<?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.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-attestation-based-client-auth-06" category="info" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-06"/>
    <author fullname="Tobias Looker">
      <organization>MATTR</organization>
      <address>
        <email>tobias.looker@mattr.global</email>
      </address>
    </author>
    <author fullname="Paul Bastian">
      <organization>Bundesdruckerei</organization>
      <address>
        <email>paul.bastian@posteo.de</email>
      </address>
    </author>
    <author fullname="Christian Bormann">
      <organization>SPRIND</organization>
      <address>
        <email>chris.bormann@gmx.de</email>
      </address>
    </author>
    <date year="2025" month="July" day="07"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <abstract>
      <?line 73?>

<t>This specification defines an extension to the OAuth 2 protocol as defined in <xref target="RFC6749"/> which enables a Client Instance to include a key-bound attestation in interactions with an Authorization Server or a Resource Server. This new method enables Client Instances involved in a client deployment that is traditionally viewed as a public client, to be able to utilize this key-bound attestation to authenticate.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://oauth-wg.github.io/draft-ietf-oauth-attestation-based-client-auth/draft-ietf-oauth-attestation-based-client-auth.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-attestation-based-client-auth/"/>.
      </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-attestation-based-client-auth"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional OAuth security concepts perform client authentication through a backend channel. In ecosystems such as the Issuer-Holder-Verifier model used in <xref target="SD-JWT"/>, this model raises privacy concerns, as it would enable the backend to recognize which Holder (i.e. client) interacts with which Issuer (i.e. Authorization Server) and potentially furthermore see the credentials being issued. This specification establishes a mechanism for a backend-attested client authentication through a frontend channel to address these issues.</t>
      <t>Additionally, this approach acknowledges the evolving landscape of OAuth 2 deployments, where the ability for public clients to authenticate securely and reliably has become increasingly important. Leveraging platform mechanisms to validate a client instance, e.g. for mobile native apps, enables secure authentication that would otherwise be difficult with traditional OAuth client authentication methods. Transforming these platform-specific mechanisms into a common format as described in this specification abstracts this complexity to minimize the efforts for the Authorization Server.</t>
      <t>This primary purpose of this specification is the authentication of a client instance enabled through the client backend attesting to it. The client backend may also attest further technical properties about the hardware and software of the client instance.</t>
      <t>The following diagram depicts the overall architecture and protocol flow.</t>
      <artwork type="ascii-art"><![CDATA[
                    (3)
                 +-------+
                 |       |
                 |      \ /
             +--------------------+
             |                    |
             |    Client Attester |
             |      (backend)     |
             |                    |
             +--------------------+
                / \      |
            (2)  |       |  (4)
                 |      \ /
             +---------------+           +---------------+
      +----->|               |           |               |
  (1) |      |    Client     |    (6)    | Authorization |
      |      |   Instance    |<--------->|    Server     |
      +------|               |           |               |
             +---------------+           +---------------+
                / \      |
                 |       |
                 +-------+
                    (5)

]]></artwork>
      <t>The following steps describe this OAuth flow:</t>
      <t>(1) The Client Instance generates a key (Client Instance Key) and optional further attestations (that are out of scope) to prove its authenticity to the Client Attester.</t>
      <t>(2) The Client Instance sends this data to the Client Attester in request for a Client Attestation JWT.</t>
      <t>(3) The Client Attester validates the Client Instance Key and optional further data. It generates a signed Client Attestation JWT that is cryptographically bound to the Client Instance Key generated by the Client. Therefore, the attestation is bound to this particular Client Instance.</t>
      <t>(4) The Client Attester responds to the Client Instance by sending the Client Attestation JWT.</t>
      <t>(5) The Client Instance generates a Proof of Possession (PoP) with the Client Instance Key.</t>
      <t>(6) The Client Instance sends both the Client Attestation JWT and the Client Attestation PoP JWT to the authorization server, e.g. within a token request. The authorization server validates the Client Attestation and thus authenticates the Client Instance.</t>
      <t>Please note that the protocol details for steps (2) and (4), particularly how the Client Instance authenticates to the Client Attester, are beyond the scope of this specification. Furthermore, this specification is designed to be flexible and can be implemented even in scenarios where the client does not have a backend serving as a Client Attester. In such cases, each Client Instance is responsible for performing the functions typically handled by the Client Attester on its own.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Client Attestation JWT:</dt>
        <dd>
          <t>A JSON Web Token (JWT) generated by the Client Attester which is bound to a key managed by a Client Instance which can then be used by the instance for client authentication.</t>
        </dd>
        <dt>Client Attestation Proof of Possession (PoP) JWT:</dt>
        <dd>
          <t>A Proof of Possession generated by the Client Instance using the key that the Client Attestation JWT is bound to.</t>
        </dd>
        <dt>Client Instance:</dt>
        <dd>
          <t>A deployed instance of a piece of client software.</t>
        </dd>
        <dt>Client Instance Key:</dt>
        <dd>
          <t>A cryptographic asymmetric key pair that is generated by the Client Instance where the public key of the key pair is provided to the Client Attester. This public key is then encapsulated within the Client Attestation JWT and is utilized to sign the Client Attestation Proof of Possession.</t>
        </dd>
        <dt>Client Attester:</dt>
        <dd>
          <t>An entity that authenticates a Client Instance and attests it by issuing a Client Attestation JWT.</t>
        </dd>
        <dt>Challenge:</dt>
        <dd>
          <t>A String that is the input to a cryptographic challenge-response pattern. This is traditionally called a nonce within OAuth.</t>
        </dd>
      </dl>
    </section>
    <section anchor="relation-to-rats">
      <name>Relation to RATS</name>
      <t>The Remote Attestation Procedures (RATS) architecture defined by <xref target="RFC9334"/> has some commonalities to this document. The flow specified in this specification relates to the "Passport Model" in RATS. However, while the RATS ecosystem gives explicit methods and values how the RATS Attester proves itself to the Verifier, this is deliberately out of scope for Attestation-Based Client Authentication. Additionally, the terminology between RATS and OAuth is different:</t>
      <ul spacing="normal">
        <li>
          <t>a RATS "Attester" relates to an OAuth "Client"</t>
        </li>
        <li>
          <t>a RATS "Relying Party" relates to an OAuth "Authorization Server or Resource Server"</t>
        </li>
        <li>
          <t>a RATS "Verifier" relates to the "Client Attester" defined in this specification</t>
        </li>
        <li>
          <t>a RATS "Attestion Result" relates to the "Client Attestation JWT" defined by this specification</t>
        </li>
        <li>
          <t>a RATS "Endorser", "Reference Value Provider", "Endorsement", "Evidence" and "Policies and Reference Values" are out of scope for this specification</t>
        </li>
      </ul>
    </section>
    <section anchor="client-attestation-format">
      <name>Client Attestation Format</name>
      <t>This draft introduces the concept of client attestations to the OAuth 2 protocol, using two JWTs: a Client Attestation and a Client Attestation Proof of Possession (PoP). The primary purpose of these JWTs is to authenticate the Client Instance. These JWTs can be transmitted via HTTP headers in an HTTP request (as described in <xref target="headers"/>) from a Client Instance to an Authorization Server or Resource Server, or via a concatenated serialization (as described in <xref target="alternative-representation"/>) to enable usage outside of OAuth2 based interactions.</t>
      <section anchor="client-attestation-jwt">
        <name>Client Attestation JWT</name>
        <t>The Client Attestation <bcp14>MUST</bcp14> be encoded as a "JSON Web Token (JWT)" according to <xref target="RFC7519"/>.</t>
        <t>The following content applies to the JWT Header:</t>
        <ul spacing="normal">
          <li>
            <t><tt>typ</tt>: <bcp14>REQUIRED</bcp14>. The JWT type <bcp14>MUST</bcp14> be <tt>oauth-client-attestation+jwt</tt>.</t>
          </li>
        </ul>
        <t>The following content applies to the JWT Claims Set:</t>
        <ul spacing="normal">
          <li>
            <t><tt>iss</tt>: <bcp14>REQUIRED</bcp14>. The <tt>iss</tt> (subject) claim <bcp14>MUST</bcp14> contains a unique identifier for the entity that issued the JWT. In the absence of an application profile specifying otherwise, compliant applications <bcp14>MUST</bcp14> compare issuer values using the Simple String Comparison method defined in Section 6.2.1 of <xref target="RFC3986"/>.</t>
          </li>
          <li>
            <t><tt>sub</tt>: <bcp14>REQUIRED</bcp14>. The <tt>sub</tt> (subject) claim <bcp14>MUST</bcp14> specify client_id value of the OAuth Client.</t>
          </li>
          <li>
            <t><tt>exp</tt>: <bcp14>REQUIRED</bcp14>. The <tt>exp</tt> (expiration time) claim <bcp14>MUST</bcp14> specify the time at which the Client Attestation is considered expired by its issuer. The authorization server <bcp14>MUST</bcp14> reject any JWT with an expiration time that has passed, subject to allowable clock skew between systems.</t>
          </li>
          <li>
            <t><tt>cnf</tt>: <bcp14>REQUIRED</bcp14>. The <tt>cnf</tt> (confirmation) claim <bcp14>MUST</bcp14> specify a key conforming to <xref target="RFC7800"/> that is used by the Client Instance to generate the Client Attestation PoP JWT for client authentication with an authorization server. The key <bcp14>MUST</bcp14> be expressed using the "jwk" representation.</t>
          </li>
          <li>
            <t><tt>iat</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>iat</tt> (issued at) claim <bcp14>MUST</bcp14> specify the time at which the Client Attestation was issued.</t>
          </li>
          <li>
            <t><tt>nbf</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>nbf</tt> (not before) claim <bcp14>MUST</bcp14> specify the time before which the Client Attestation <bcp14>MUST NOT</bcp14> be accepted for processing.</t>
          </li>
        </ul>
        <t>The following additional rules apply:</t>
        <ol spacing="normal" type="1"><li>
            <t>The JWT <bcp14>MAY</bcp14> contain other claims. All claims that are not understood by implementations <bcp14>MUST</bcp14> be ignored.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> be digitally signed using an asymmetric cryptographic algorithm. The authorization server <bcp14>MUST</bcp14> reject the JWT if it is using a Message Authentication Code (MAC) based algorithm. The authorization server <bcp14>MUST</bcp14> reject JWTs with an invalid signature.</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MUST</bcp14> reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" <xref target="RFC7519"/>.</t>
          </li>
        </ol>
        <t>The following example is the decoded header and payload of a JWT meeting the processing rules as defined above.</t>
        <artwork><![CDATA[
{
  "typ": "oauth-client-attestation+jwt",
  "alg": "ES256",
  "kid": "11"
}
.
{
  "iss": "https://attester.example.com",
  "sub": "https://client.example.com",
  "nbf": 1300815780,
  "exp": 1300819380,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "use": "sig",
      "crv": "P-256",
      "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
      "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
    }
  }
}
]]></artwork>
      </section>
      <section anchor="client-attestation-pop-jwt">
        <name>Client Attestation PoP JWT</name>
        <t>The Client Attestation PoP <bcp14>MUST</bcp14> be encoded as a "JSON Web Token (JWT)" according to <xref target="RFC7519"/>.</t>
        <t>The following content applies to the JWT Header:</t>
        <ul spacing="normal">
          <li>
            <t><tt>typ</tt>: <bcp14>REQUIRED</bcp14>. The JWT type <bcp14>MUST</bcp14> be <tt>oauth-client-attestation-pop+jwt</tt>.</t>
          </li>
        </ul>
        <t>The following content applies to the JWT Claims Set:</t>
        <ul spacing="normal">
          <li>
            <t><tt>iss</tt>: <bcp14>REQUIRED</bcp14>. The <tt>iss</tt> (issuer) claim <bcp14>MUST</bcp14> specify client_id value of the OAuth Client.</t>
          </li>
          <li>
            <t><tt>aud</tt>: <bcp14>REQUIRED</bcp14>. The <tt>aud</tt> (audience) claim <bcp14>MUST</bcp14> specify a value that identifies the authorization server as an intended audience. The <xref target="RFC8414"/> issuer identifier URL of the authorization server <bcp14>MUST</bcp14> be used as a value for an "aud" element to identify the authorization server as the intended audience of the JWT.</t>
          </li>
          <li>
            <t><tt>jti</tt>: <bcp14>REQUIRED</bcp14>. The <tt>jti</tt> (JWT identifier) claim <bcp14>MUST</bcp14> specify a unique identifier for the Client Attestation PoP. The authorization server can utilize the <tt>jti</tt> value for replay attack detection, see <xref target="security-consideration-replay"/>.</t>
          </li>
          <li>
            <t><tt>challenge</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>challenge</tt> (challenge) claim <bcp14>MUST</bcp14> specify a String value that is provided by the authorization server for the client to include in the Client Attestation PoP JWT.</t>
          </li>
          <li>
            <t><tt>iat</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>iat</tt> (issued at) claim <bcp14>MUST</bcp14> specify the time at which the Client Attestation PoP was issued. Note that the authorization server may reject JWTs with an "iat" claim value that is unreasonably far in the past.</t>
          </li>
          <li>
            <t><tt>nbf</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>nbf</tt> (not before) claim <bcp14>MUST</bcp14> specify the time before which the Client Attestation PoP <bcp14>MUST NOT</bcp14> be accepted for processing.</t>
          </li>
        </ul>
        <t>The following additional rules apply:</t>
        <ol spacing="normal" type="1"><li>
            <t>The JWT <bcp14>MAY</bcp14> contain other claims. All claims that are not understood by implementations <bcp14>MUST</bcp14> be ignored.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> be digitally signed using an asymmetric cryptographic algorithm. The authorization server <bcp14>MUST</bcp14> reject the JWT if it is using a Message Authentication Code (MAC) based algorithm. The authorization server <bcp14>MUST</bcp14> reject JWTs with an invalid signature.</t>
          </li>
          <li>
            <t>The public key used to verify the JWT <bcp14>MUST</bcp14> be the key located in the "cnf" claim of the corresponding Client Attestation JWT.</t>
          </li>
          <li>
            <t>The value of the <tt>iss</tt> claim, representing the client_id <bcp14>MUST</bcp14> match the value of the <tt>sub</tt> claim in the corresponding Client Attestation JWT.</t>
          </li>
          <li>
            <t>The Authorization Server <bcp14>MUST</bcp14> reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" <xref target="RFC7519"/>.</t>
          </li>
        </ol>
        <t>The following example is the decoded header and payload of a JWT meeting the processing rules as defined above.</t>
        <artwork><![CDATA[
{
  "typ": "oauth-client-attestation-pop+jwt",
  "alg": "ES256"
}
.
{
  "iss": "https://client.example.com",
  "aud": "https://as.example.com",
  "nbf":1300815780,
  "jti": "d25d00ab-552b-46fc-ae19-98f440f25064",
  "challenge": "5c1a9e10-29ff-4c2b-ae73-57c0957c09c4"
}
]]></artwork>
      </section>
    </section>
    <section anchor="header-based">
      <name>Client Attestation using a Header based syntax</name>
      <t>The following section defines how a Client Attestation can be provided in an HTTP request using HTTP headers.</t>
      <section anchor="headers">
        <name>Client Attestation HTTP Headers</name>
        <t>A Client Attestation JWT and Client Attestation PoP JWT can be included in an HTTP request using the following request header fields.</t>
        <dl>
          <dt>OAuth-Client-Attestation:</dt>
          <dd>
            <t>A JWT that conforms to the structure and syntax as defined in <xref target="client-attestation-jwt"/></t>
          </dd>
          <dt>OAuth-Client-Attestation-PoP:</dt>
          <dd>
            <t>A JWT that adheres to the structure and syntax as defined in <xref target="client-attestation-pop-jwt"/></t>
          </dd>
        </dl>
        <t>The following is an example of the OAuth-Client-Attestation header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24
rand0IiwiYWxnIjoiRVMyNTYiLCJraWQiOiIxMSJ9.eyJpc3MiOiJodHRwczovL2F0dGV
zdGVyLmV4YW1wbGUuY29tIiwic3ViIjoiaHR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20i
LCJuYmYiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwiY25mIjp7Imp3ayI6eyJrd
HkiOiJFQyIsInVzZSI6InNpZyIsImNydiI6IlAtMjU2IiwieCI6IjE4d0hMZUlnVzl3Vk
42VkQxVHhncHF5MkxzellrTWY2SjhualZBaWJ2aE0iLCJ5IjoiLVY0ZFM0VWFMTWdQXzR
mWTRqOGlyN2NsMVRYbEZkQWdjeDU1bzdUa2NTQSJ9fX0.4bCswkgmUHw06kKdiS2KEySR
gjj73yCEIcrz3Mv7Bgns4Bm1tCQ9FAqMLtgzb5NthwJT9AhAEBogbiD5DtxV1g
]]></artwork>
        <t>The following is an example of the OAuth-Client-Attestation-PoP header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJpc3MiOiJodHRwczovL2NsaWVudC5l
eGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb20iLCJuYmYiOjEzM
DA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLW
FlMTktOThmNDQwZjI1MDY0Iiwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My0
1N2MwOTU3YzA5YzQifQ.rEa-dKJgRuD-aI-4bj4fDGH1up4jV--IgDMFdb9A5jSSWB7Uh
HfvLOVU_ZvAJfOWfO0MXyeunwzM3jGLB_TUkQ
]]></artwork>
        <t>Note that per <xref target="RFC9110"/> header field names are case-insensitive; so OAUTH-CLIENT-ATTESTATION, oauth-client-attestation, etc., are all valid and equivalent
header field names. Case is significant in the header field value, however.</t>
        <t>The OAuth-Client-Attestation and OAuth-Client-Attestation-PoP HTTP header field values uses the token68 syntax defined in Section 11.2 of <xref target="RFC9110"/> (repeated below for ease of reference).</t>
        <artwork><![CDATA[
OAuth-Client-Attestation       = token68
OAuth-Client-Attestation-PoP   = token68
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></artwork>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the authorization server validate the Client Attestation JWT prior to validating the Client Attestation PoP.</t>
      </section>
      <section anchor="checking-http-requests-with-client-attestations">
        <name>Validating HTTP requests feature client attestations</name>
        <t>To validate an HTTP request which contains the client attestation headers, the receiving server <bcp14>MUST</bcp14> ensure the following with regard to a received HTTP request:</t>
        <ol spacing="normal" type="1"><li>
            <t>There is precisely one OAuth-Client-Attestation HTTP request header field, where its value is a single well-formed JWT conforming to the syntax outlined in <xref target="client-attestation-jwt"/>.</t>
          </li>
          <li>
            <t>There is precisely one OAuth-Client-Attestation-PoP HTTP request header field, where its value is a single well-formed JWT conforming to the syntax outlined in <xref target="client-attestation-pop-jwt"/>.</t>
          </li>
          <li>
            <t>The signature of the Client Attestation PoP JWT obtained from the OAuth-Client-Attestation-PoP HTTP header verifies with the Client Instance Key contained in the <tt>cnf</tt> claim of the Client Attestation JWT obtained from the OAuth-Client-Attestation HTTP header.</t>
          </li>
        </ol>
        <t>An error parameter according to Section 3 of <xref target="RFC6750"/> <bcp14>SHOULD</bcp14> be included to indicate why a request was declined. If the Client Attestation is absent or not using an expected server-provided challenge, the value <tt>use_attestation_challenge</tt> can be used to indicate that an attestation with a server-provided challenge was expected. If the attestation and proof of possession was present but could not be successfully verified, the value <tt>invalid_client_attestation</tt> is used.</t>
      </section>
      <section anchor="token-endpoint">
        <name>Client Attestation at the Token Endpoint</name>
        <t>While usage of the the client attestation mechanism defined by this draft can be used in a variety of different HTTP requests to different endpoints, usage within the token request as defined by <xref target="RFC6749"/> has particular additional considerations outlined below.</t>
        <t>The Authorization Server <bcp14>MUST</bcp14> perform all of the checks outlined in <xref target="checking-http-requests-with-client-attestations"/> for a received access token request which is making use of the client attestation mechanism as defined by this draft.</t>
        <t>If the token request contains a <tt>client_id</tt> parameter as per <xref target="RFC6749"/> the Authorization Server <bcp14>MUST</bcp14> verify that the value of this parameter is the same as the client_id value in the <tt>sub</tt> claim of the Client Attestation and <tt>iss</tt> claim of the Client Attestation PoP.</t>
        <t>The following example demonstrates usage of the client attestation mechanism in an access token request (with extra line breaks for display purposes only):</t>
        <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24
rand0IiwiYWxnIjoiRVMyNTYiLCJraWQiOiIxMSJ9.eyJpc3MiOiJodHRwczovL2F0dGV
zdGVyLmV4YW1wbGUuY29tIiwic3ViIjoiaHR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20i
LCJuYmYiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwiY25mIjp7Imp3ayI6eyJrd
HkiOiJFQyIsInVzZSI6InNpZyIsImNydiI6IlAtMjU2IiwieCI6IjE4d0hMZUlnVzl3Vk
42VkQxVHhncHF5MkxzellrTWY2SjhualZBaWJ2aE0iLCJ5IjoiLVY0ZFM0VWFMTWdQXzR
mWTRqOGlyN2NsMVRYbEZkQWdjeDU1bzdUa2NTQSJ9fX0.4bCswkgmUHw06kKdiS2KEySR
gjj73yCEIcrz3Mv7Bgns4Bm1tCQ9FAqMLtgzb5NthwJT9AhAEBogbiD5DtxV1g
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJpc3MiOiJodHRwczovL2NsaWVudC5l
eGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb20iLCJuYmYiOjEzM
DA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLW
FlMTktOThmNDQwZjI1MDY0Iiwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My0
1N2MwOTU3YzA5YzQifQ.rEa-dKJgRuD-aI-4bj4fDGH1up4jV--IgDMFdb9A5jSSWB7Uh
HfvLOVU_ZvAJfOWfO0MXyeunwzM3jGLB_TUkQ

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4
]]></artwork>
      </section>
      <section anchor="par-endpoint">
        <name>Client Attestation at the PAR Endpoint</name>
        <t>A Client Attestation can be used at the PAR endpoint instead of alternative client authentication mechanisms like JWT client assertion-based authentication (as defined in Section 2.2 of <xref target="RFC7523"/>).</t>
        <t>The Authorization Server <bcp14>MUST</bcp14> perform all of the checks outlined in <xref target="checking-http-requests-with-client-attestations"/> for a received PAR request which is making use of the client attestation mechanism as defined by this draft.</t>
        <t>The following example demonstrates usage of the client attestation mechanism in a PAR request (with extra line breaks for display purposes only):</t>
        <artwork><![CDATA[
POST /as/par HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24
rand0IiwiYWxnIjoiRVMyNTYiLCJraWQiOiIxMSJ9.eyJpc3MiOiJodHRwczovL2F0dGV
zdGVyLmV4YW1wbGUuY29tIiwic3ViIjoiaHR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20i
LCJuYmYiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwiY25mIjp7Imp3ayI6eyJrd
HkiOiJFQyIsInVzZSI6InNpZyIsImNydiI6IlAtMjU2IiwieCI6IjE4d0hMZUlnVzl3Vk
42VkQxVHhncHF5MkxzellrTWY2SjhualZBaWJ2aE0iLCJ5IjoiLVY0ZFM0VWFMTWdQXzR
mWTRqOGlyN2NsMVRYbEZkQWdjeDU1bzdUa2NTQSJ9fX0.4bCswkgmUHw06kKdiS2KEySR
gjj73yCEIcrz3Mv7Bgns4Bm1tCQ9FAqMLtgzb5NthwJT9AhAEBogbiD5DtxV1g
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJpc3MiOiJodHRwczovL2NsaWVudC5l
eGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb20iLCJuYmYiOjEzM
DA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLW
FlMTktOThmNDQwZjI1MDY0Iiwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My0
1N2MwOTU3YzA5YzQifQ.rEa-dKJgRuD-aI-4bj4fDGH1up4jV--IgDMFdb9A5jSSWB7Uh
HfvLOVU_ZvAJfOWfO0MXyeunwzM3jGLB_TUkQ

response_type=code&state=af0ifjsldkj&client_id=s6BhdRkqt3
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bww-uCHaoeK1t8U
&code_challenge_method=S256&scope=account-information
]]></artwork>
      </section>
    </section>
    <section anchor="alternative-representation">
      <name>Concatenated Serialization for Client Attestations</name>
      <t>A Client Attestation according to this specification <bcp14>MAY</bcp14> be presented using an alternative representation for cases where the header-based mechanism (as introduced in introduced in <xref target="headers"/> does not fit the underlying protocols, e.g., for direct calls to Browser APIs.
In those cases, a concatenated serialization of the Client Attestation and Client Attestation PoP can can be used.</t>
      <section anchor="format-alternative">
        <name>Concatenated Serialization Format</name>
        <t>This representation is created by concatenating Client Attestation and Client Attestation PoP separated by a tilde ('~') character:</t>
        <artwork><![CDATA[
<Client Attestation>~<Client Attestation PoP>
]]></artwork>
        <t>This form is similar to an SD-JWT+KB according to Section 5 of <xref target="SD-JWT"/> but does not include Disclosures, uses different typ values and does not include the <tt>sd_hash</tt> claim in the PoP.</t>
        <t>This concatenated serialization form allows a the presentation of a Client Attestation and Client Attestation PoP for cases where a header-based approach is unavailable, e.g., to establish trust in a client when using a direct Browser API call.</t>
        <t>The following is an example of such a concatenated serialization (with extra line breaks for display purposes only):</t>
        <artwork><![CDATA[
eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24rand0IiwiYWxnIjoiRVMyNTYiL
CJraWQiOiIxMSJ9.eyJpc3MiOiJodHRwczovL2F0dGVzdGVyLmV4YW1wbGUuY29tIiwic
3ViIjoiaHR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20iLCJuYmYiOjEzMDA4MTU3ODAsIm
V4cCI6MTMwMDgxOTM4MCwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsInVzZSI6InNpZyI
sImNydiI6IlAtMjU2IiwieCI6IjE4d0hMZUlnVzl3Vk42VkQxVHhncHF5MkxzellrTWY2
SjhualZBaWJ2aE0iLCJ5IjoiLVY0ZFM0VWFMTWdQXzRmWTRqOGlyN2NsMVRYbEZkQWdje
DU1bzdUa2NTQSJ9fX0.4bCswkgmUHw06kKdiS2KEySRgjj73yCEIcrz3Mv7Bgns4Bm1tC
Q9FAqMLtgzb5NthwJT9AhAEBogbiD5DtxV1g~eyJhbGciOiJFUzI1NiIsInR5cCI6Im9h
dXRoLWNsaWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJpc3MiOiJodHRwczovL2Nsa
WVudC5leGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb20iLCJuYm
YiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MCwianRpIjoiZDI1ZDAwYWItNTUyYi0
0NmZjLWFlMTktOThmNDQwZjI1MDY0Iiwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmIt
YWU3My01N2MwOTU3YzA5YzQifQ.rEa-dKJgRuD-aI-4bj4fDGH1up4jV--IgDMFdb9A5j
SSWB7UhHfvLOVU_ZvAJfOWfO0MXyeunwzM3jGLB_TUkQ
]]></artwork>
      </section>
      <section anchor="validate-alternative">
        <name>Validating the Concatenated Serialization</name>
        <t>To validate a client attestation using the concatenated serialization form, the receiving server <bcp14>MUST</bcp14> ensure the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>Before the '~' character, there exists precisely a single well-formed JWT conforming to the syntax outlined in <xref target="client-attestation-jwt"/>.</t>
          </li>
          <li>
            <t>After the '~' character, there exists precisely a single well-formed JWT conforming to the syntax outlined in <xref target="client-attestation-pop-jwt"/>.</t>
          </li>
          <li>
            <t>The signature of the Client Attestation PoP JWT obtained after the '~' character verifies with the Client Instance Key contained in the <tt>cnf</tt> claim of the Client Attestation JWT obtained before the '~' character.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="challenge-retrieval">
      <name>Challenge Retrieval</name>
      <t>This section defines an optional mechanism that allows a Client to request a fresh Challenge from the Authorization Server to be included in the Client Attestation PoP JWT. This construct may be similar or equivalent to a nonce, see <eref target="terminology"/>. The value of the challenge is opaque to the client.</t>
      <t>An Authorization Server <bcp14>MAY</bcp14> offer a challenge endpoint for Clients to fetch Challenges in the context of this specification. If the Authorization Server supports metadata as defined in <xref target="RFC8414"/>, it <bcp14>MUST</bcp14> signal support for the challenge endpoint by including the metadata entry <tt>challenge_endpoint</tt> containing the URL of the endpoint as its value. If the Authorization Server offers a challenge endpoint, the Client <bcp14>MUST</bcp14> retrieve a challenge and <bcp14>MUST</bcp14> use this challenge in the OAuth-Attestation-PoP as defined in (#client-attestation-pop-jwt).</t>
      <t>A request for a Challenge is made by sending an HTTP POST request to the URL provided in the challenge_endpoint parameter of the Authorization Server metadata.</t>
      <t>The following is a non-normative example of a request:</t>
      <artwork><![CDATA[
POST /as/challenge HTTP/1.1
Host: as.example.com
Accept: application/json
]]></artwork>
      <t>The Authorization Server provides a Challenge in the HTTP response with a 200 status code and the following parameters included in the message body of the HTTP response using the application/json media type:
* attestation_challenge: <bcp14>REQUIRED</bcp14> if the authorization server supports Client Attestations and server provided challenges as described in this document. String containing a Challenge to be used in the OAuth-Attestation-PoP as defined in (#client-attestation-pop-jwt). The intention of this element not being required in other circumstances is to preserve the ability for the challenge endpoint to be used in other applications unrelated to client attestations.</t>
      <t>The Authorization Server <bcp14>MUST</bcp14> make the response uncacheable by adding a <tt>Cache-Control</tt> header field including the value <tt>no-store</tt>. The Authorization Server <bcp14>MAY</bcp14> add additional challenges or data.</t>
      <t>The following is a non-normative example of a response:</t>
      <artwork><![CDATA[
HTTP/1.1 200 OK
Host: as.example.com
Content-Type: application/json

{
  "attestation_challenge": "AYjcyMzY3ZDhiNmJkNTZ"
}
]]></artwork>
      <section anchor="providing-challenges-on-previous-responses">
        <name>Providing Challenges on Previous Responses</name>
        <t>The Authorization Server <bcp14>MAY</bcp14> provide a fresh Challenge with any HTTP response using a HTTP header-based syntax. The HTTP header field parameter <bcp14>MUST</bcp14> be named "OAuth-Client-Attestation-Challenge" and contain the value of the Challenge. The Client <bcp14>MUST</bcp14> use this new Challenge for the next OAuth-Client-Attestation-PoP.</t>
        <t>The following is a non-normative example of an Authorization Response containing a fresh Challenge:</t>
        <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
OAuth-Client-Attestation-Challenge: AYjcyMzY3ZDhiNmJkNTZ

{
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "token_type": "Bearer",
  "expires_in": 3600
}
]]></artwork>
      </section>
    </section>
    <section anchor="verification-and-processing">
      <name>Verification and Processing</name>
      <t>Upon receiving a Client Attestation, the receiving server <bcp14>MUST</bcp14> ensure the following conditions and rules:</t>
      <ol spacing="normal" type="1"><li>
          <t>If the Client Attestation was received via Header based Syntax (as described in <xref target="header-based"/>):  </t>
          <ul spacing="normal">
            <li>
              <t>The HTTP request contains exactly one field <tt>OAuth-Client-Attestation</tt> and one field <tt>OAuth-Client-Attestation-PoP</tt>.</t>
            </li>
            <li>
              <t>Both fields contain exactly one well-formed JWT.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>The Client Attestation JWT contains all claims and header parameters as per <xref target="client-attestation-jwt"/>.</t>
        </li>
        <li>
          <t>The Client Attestation PoP JWT contains all claims and header parameters as per <xref target="client-attestation-pop-jwt"/>.</t>
        </li>
        <li>
          <t>The alg JOSE Header Parameter for both JWTs indicates a registered asymmetric digital signature algorithm <xref target="IANA.JOSE.ALGS"/>, is not none, is not MAC based, is supported by the application, and is acceptable per local policy.</t>
        </li>
        <li>
          <t>The signature of the Client Attestation JWT verifies with the public key of a known and trusted Attester.</t>
        </li>
        <li>
          <t>The key contained in the <tt>cnf</tt> claim of the Client Attestation JWT is not a private key.</t>
        </li>
        <li>
          <t>The signature of the Client Attestation PoP JWT verifies with the public key contained in the <tt>cnf</tt> claim of the Client Attestation JWT.</t>
        </li>
        <li>
          <t>If the server provided a challenge value to the client, the <tt>challenge</tt> claim is present in the Client Attestation PoP JWT and matches the server-provided challenge value.</t>
        </li>
        <li>
          <t>The creation time of the Client Attestation PoP JWT as determined by either the <tt>iat</tt> claim or a server managed timestamp via the challenge claim, is within an acceptable window.</t>
        </li>
        <li>
          <t>The audience claim in the Client Attestation PoP JWT is the issuer identifier URL of the authorization server as described in <xref target="RFC8414"/>.</t>
        </li>
        <li>
          <t>The Client Attestation JWT is fresh enough for the policies of the authorization server by checking the <tt>iat</tt> or <tt>exp</tt> claims.</t>
        </li>
        <li>
          <t>Depending on the security requirements of the deployment, additional checks to guarantee replay protection for the Client Attestation PoP JWT might need to be applied (see <xref target="security-consideration-replay"/> for more details).</t>
        </li>
        <li>
          <t>If a <tt>client_id</tt> is provided in the request containing the Client Attestation, then this <tt>client_id</tt> matches the <tt>sub</tt> claim of the Client Attestation JWT and the <tt>iss</tt> claim of the Client Attestation PoP JWT.</t>
        </li>
      </ol>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="reuse-of-a-client-attestation-jwt">
        <name>Reuse of a Client Attestation JWT</name>
        <t>Implementers should be aware that the design of this authentication mechanism deliberately allows for a Client Instance to re-use a single Client Attestation JWT in multiple interactions/requests with an Authorization Server, whilst producing a fresh Client Attestation PoP JWT. Client deployments should consider this when determining the validity period for issued Client Attestation JWTs as this ultimately controls how long a Client Instance can re-use a single Client Attestation JWT.</t>
      </section>
      <section anchor="refresh-token-binding">
        <name>Refresh token binding</name>
        <t>Authorization servers issuing a refresh token in response to a token request using the client attestation mechanism as defined by this draft <bcp14>MUST</bcp14> bind the refresh token to the Client Instance, and NOT just the client as specified in section 6 <xref target="RFC6749"/>. To prove this binding, the Client Instance <bcp14>MUST</bcp14> use the client attestation mechanism when refreshing an access token. The client <bcp14>MUST</bcp14> also use the same key that was present in the "cnf" claim of the client attestation that was used when the refresh token was issued.</t>
      </section>
      <section anchor="web-server-default-maximum-http-header-sizes">
        <name>Web Server Default Maximum HTTP Header Sizes</name>
        <t>Because the Client Attestation and Client Attestation PoP are communicated using HTTP headers, implementers should consider that web servers may have a default maximum HTTP header size configured which could be too low to allow conveying a Client Attestation and or Client Attestation PoP in an HTTP request. It should be noted, that this limit is not given by the HTTP <xref target="RFC9112"/>, but instead web server implementations commonly set a default maximum size for HTTP headers. As of 2024, typical limits for modern web servers configure maximum HTTP headers as 8 kB or more as a default.</t>
      </section>
      <section anchor="rotation-of-client-instance-key">
        <name>Rotation of Client Instance Key</name>
        <t>This specification does not provide a mechanism to rotate the Client Instance Key in the Client Attestation JWT's "cnf" claim. If the Client Instance needs to use a new Client Instance Key for any reason, then it <bcp14>MUST</bcp14> request a new Client Attestation JWT from its Client Attester.</t>
      </section>
      <section anchor="implementation-consideration-replay">
        <name>Replay Attack Detection</name>
        <t>Authorization Servers implementing measures to detect replay attacks as described in <xref target="security-consideration-replay"/> require efficient data structures to manage large amounts of challenges for use cases with high volumes of transactions. To limit the size of the data structure, the Authorization Server should use a sliding window, allowing Client Attestation PoPs within a certain time window, in which the seen <tt>challenge</tt> or <tt>jti</tt> values are stored, but discarded afterwards. To ensure security, Client Attestation PoPs outside this time window <bcp14>MUST</bcp14> be rejected by the Authorization Server. The allowed window is determined by the <tt>iat</tt> of the Client Attestation PoP and the sliding window time duration chosen by the Authorization Server. These data structures need to:</t>
        <ul spacing="normal">
          <li>
            <t>search the data structure to validate whether a challenge form a Client Attestation PoP has been previously seen</t>
          </li>
          <li>
            <t>insert the new challenges from the Client Attestation PoP if the search returned no result</t>
          </li>
          <li>
            <t>delete the challenges after the Client Attestation PoP has passed the sliding time window</t>
          </li>
        </ul>
        <t>A trie (also called prefix tree), or a patricia trie (also called radix tree) is a <bcp14>RECOMMENDED</bcp14> data structures to implement such a mechanism.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="client-instance-tracking-across-authorization-servers">
        <name>Client Instance Tracking Across Authorization Servers</name>
        <t>Implementers should be aware that using the same client attestation across multiple authorization servers could result in correlation of the end user using the Client Instance through claim values (including the Client Instance Key in the <tt>cnf</tt> claim). Client deployments are therefore <bcp14>RECOMMENDED</bcp14> to use different Client Attestation JWTs with different Client Instance Keys across different authorization servers.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The guidance provided by <xref target="RFC7519"/> and <xref target="RFC8725"/> applies.</t>
      <section anchor="security-consideration-replay">
        <name>Replay Attacks</name>
        <t>An Authorization Server <bcp14>SHOULD</bcp14> implement measures to detect replay attacks by the Client Instance. In the context of this specification, this means to detect that an attacker is resending the same Client Attestation PoP JWT in multiple requests. The following options are <bcp14>RECOMMENDED</bcp14> for this client authentication method:</t>
        <ul spacing="normal">
          <li>
            <t>The Authorization Server manages a list of witnessed <tt>jti</tt> values of the Client Attestation PoP JWT for the time window of which the JWT would be considered valid. This sliding time window is based on the <tt>iat</tt> of the Client Attestation PoP and and the duration chosen by the Authorization Server. If any Client Attestation PoP JWT would be replayed, the Authorization Server would recognize the <tt>jti</tt> value in the list and respond with an authentication error. Details how to implement such a data structure to maintain <tt>jti</tt> values is given in <xref target="implementation-consideration-replay"/>.</t>
          </li>
          <li>
            <t>The Authorization Server provides a challenge as an <tt>OAuth-Client-Attestation-Challenge</tt> in the challenge endpoint to the Client Instance and the Client uses it as a <tt>challenge</tt> value in the Client Attestation PoP JWT. The Authorization Server may chose to:
            </t>
            <ul spacing="normal">
              <li>
                <t>manage a list of witnessed <tt>challenge</tt> values, similar to the previously described <tt>jti</tt> approach. Details how to implement such a data structure to maintain <tt>challenge</tt> values is given in <xref target="implementation-consideration-replay"/>. This guarantees stronger replay protection with a challenge chosen by the Authorization Server itself, at the potential cost of an additional round-trip.</t>
              </li>
              <li>
                <t>use self-contained challenges while not storing the seen challenges. This approach scales well, while only guaranteeing freshness, but no replay protection within the limited time-window chosen by the Authorization Server.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The Authorization Server generates a challenge that is bound to the Client Instance's session, such that a specific <tt>challenge</tt> in the Client Attestation PoP JWT is expected and validated. The Authorization Server may either:
            </t>
            <ul spacing="normal">
              <li>
                <t>send the challenge as part of another previous response to the Client Instance of providing the challenge explicitly</t>
              </li>
              <li>
                <t>reuse an existing artefact of the Client Instance's session, e.g. the authorization code. This <bcp14>MUST</bcp14> be communicated out-of-band between Authorization Server and Client.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Because clock skews between servers and clients may be large, Authorization Servers <bcp14>MAY</bcp14> limit Client Attestation PoP lifetimes by using server-provided challenge values containing the time at the server rather than comparing the client-supplied iat time to the time at the server. Challenges created in this way yield the same result even in the face of arbitrarily large clock skews.</t>
        <t>In any case the Authorization Server <bcp14>SHOULD</bcp14> ensure the freshness of the Client Attestation PoP by checking either the iat claim or if present the server provided challenge, is within an acceptable time window.</t>
        <t>The approach using a challenge explicitly provided by the Authorization Server gives stronger replay attack detection guarantees, however support by the Authorization Server is <bcp14>OPTIONAL</bcp14> to simplify mandatory implementation requirements. The <tt>jti</tt> value is mandatory and hence acts as a default fallback.</t>
      </section>
    </section>
    <section anchor="appendix-a-iana-considerations">
      <name>Appendix A IANA Considerations</name>
      <section anchor="oauth-parameters-registration">
        <name>OAuth Parameters Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Authorization Server Metadata" registry <xref target="IANA.OAuth.Params"/> established by <xref target="RFC8414"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: challenge_endpoint</t>
          </li>
          <li>
            <t>Metadata Description: URL of the authorization servers challenge endpoint which is used to obtain a fresh challenge for usage in client authentication methods such as client attestation.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="challenge-retrieval"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-extensions-error-registration">
        <name>OAuth Extensions Error Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Extensions Error Registry" registry of <xref target="IANA.OAuth.Params"/> established by <xref target="RFC6749"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: use_attestation_challenge</t>
          </li>
          <li>
            <t>Usage Location: token error response, resource access error response</t>
          </li>
          <li>
            <t>Protocol Extension: OAuth 2.0 Attestation-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: this specification</t>
          </li>
          <li>
            <t>Name: invalid_client_attestation</t>
          </li>
          <li>
            <t>Usage Location: token error response, resource access error response</t>
          </li>
          <li>
            <t>Protocol Extension: OAuth 2.0 Attestation-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="registration-of-attestjwtclientauth-token-endpoint-authentication-method">
        <name>Registration of attest_jwt_client_auth Token Endpoint Authentication Method</name>
        <t>This section registers the value "attest_jwt_client_auth" in the IANA "OAuth Token Endpoint Authentication Methods" registry established by OAuth 2.0 Dynamic Client Registration Protocol <xref target="RFC7591"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Token Endpoint Authentication Method Name: "attest_jwt_client_auth"</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): TBC</t>
          </li>
        </ul>
      </section>
      <section anchor="http-field-name-registration">
        <name>HTTP Field Name Registration</name>
        <t>This section requests registration of the following scheme in the "Hypertext Transfer Protocol (HTTP) Field Name Registry" <xref target="IANA.HTTP.Fields"/> described in <xref target="RFC9110"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Field Name: OAuth-Client-Attestation</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Reference: <xref target="headers"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Field Name: OAuth-Client-Attestation-PoP</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Reference: <xref target="headers"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Field Name: OAuth-Client-Attestation-Challenge</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Reference: <xref target="challenge-retrieval"/> of this specification</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC6750">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </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="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </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="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="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="IANA.HTTP.Fields" target="https://www.iana.org/assignments/http-fields/http-fields.xhtml">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.OAuth.Params" target="https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#authorization-server-metadata">
          <front>
            <title>OAuth Authorization Server Metadata</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.JOSE.ALGS" target="https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms">
          <front>
            <title>JSON Web Signature and Encryption Algorithms</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </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="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="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="ARF">
          <front>
            <title>The European Digital Identity Wallet Architecture and Reference Framework</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SD-JWT">
          <front>
            <title>Selective Disclosure for JWTs (SD-JWT)</title>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <author fullname="Kristina Yasuda" initials="K." surname="Yasuda">
              <organization>Keio University</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="29" month="May" year="2025"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON data structure used as the payload
   of a JSON Web Signature (JWS).  The primary use case is the selective
   disclosure of JSON Web Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-22"/>
        </reference>
      </references>
    </references>
    <?line 643?>

<section anchor="document-history">
      <name>Document History</name>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>clarify client_id processing in token request with client attestation</t>
        </li>
        <li>
          <t>clarify usage of client attestation outside of oauth2 applications</t>
        </li>
        <li>
          <t>add oauth error response values <tt>invalid_client_attestation</tt> and <tt>use_attestation_challenge</tt></t>
        </li>
        <li>
          <t>revert the HTTP OPTIONS mechanism to fetch nonces and add a dedicated challenge endpoint</t>
        </li>
        <li>
          <t>rename nonce to challenge</t>
        </li>
        <li>
          <t>rewrite security consideration on replay attacks</t>
        </li>
        <li>
          <t>add implementation consideration on replay attacks</t>
        </li>
        <li>
          <t>remove <tt>exp</tt> from Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>add verification and processing rules</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>add nonce endpoint</t>
        </li>
        <li>
          <t>add metadata entry for nonce</t>
        </li>
        <li>
          <t>improve introduction</t>
        </li>
        <li>
          <t>rename client backend to client attester</t>
        </li>
        <li>
          <t>fix missing typ header in examples</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>remove key attestation example</t>
        </li>
        <li>
          <t>restructured JWT Claims for better readability</t>
        </li>
        <li>
          <t>added JOSE typ values for Client Attestation and Client Attestation PoP</t>
        </li>
        <li>
          <t>add RATS relation</t>
        </li>
        <li>
          <t>add concatenated representation without headers</t>
        </li>
        <li>
          <t>add PAR endpoint example</t>
        </li>
        <li>
          <t>fix PoP examples to include jti and nonce</t>
        </li>
        <li>
          <t>add iana http field name registration</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>remove usage of RFC7521 and the usage of client_assertion</t>
        </li>
        <li>
          <t>add new header-based syntax introducing Oauth-Client-Attestation and OAuth-Client-Attestation-PoP</t>
        </li>
        <li>
          <t>add Client Instance to the terminology and improve text around this concept</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>add text on the inability to rotate the Client Instance Key</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated eIDAS example in appendix</t>
        </li>
        <li>
          <t>Removed text around jti claim in client attestation, refined text for its usage in the client attestation pop</t>
        </li>
        <li>
          <t>Refined text around cnf claim in client attestation</t>
        </li>
        <li>
          <t>Clarified how to bind refresh tokens to a Client Instance using this client authentication method</t>
        </li>
        <li>
          <t>Made it more explicit that the client authentication mechanism is general purpose making it compatible with extensions like PAR</t>
        </li>
        <li>
          <t>Updated acknowledgments</t>
        </li>
        <li>
          <t>Simplified the diagram in the introduction</t>
        </li>
        <li>
          <t>Updated references</t>
        </li>
        <li>
          <t>Added some guidance around replay attack detection</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank
Brian Campbell,
Filip Skokan,
Francesco Marino,
Guiseppe De Marco,
Kristina Yasuda,
Michael B. Jones,
Takahiko Kawasaki
and
Torsten Lodderstedt
for their valuable contributions to this specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
rn799VfYRdf3606car3A/LO0tjz//Mc6//lx/qe/qX8rf/pf9uv8b6q33J9C
13+zS/78raSNMuqZlcWlbWBVcseWK/t5YqznzBn+vIbVlry+tLpsQAq+r5cA
+bng+nHRb5b5/Kfiyv5W8VnNeKm1rJ6bwNXflzaX+XOeWNVijVe1koXf/6Tn
xzOS+pIJJ7mQl074N4Ip+1OxcbmBS35aQBjwZ2ljmUiuSMKAqOOMlTIrYy6O
ZLptWbgP+EpRYx2IEAg9JaEOKpy9VGzws5ixNhGNpXRQLMnQ8xJ7icQMMR1g
ScB4EhfY1DJyOuAYIKp8YCyaj0runWYTUtQGHAVRu2yqCVCbFAJon1V0gFIk
Fr9MiHmSbpJrwOgFehwOtJYbSPegBHFi9m8CpBweOClQM9McTNEuMxyF+Tlo
BZwstgiY8HiIPB40B1al80vMTUEN4tm9mdGIhEosYOVihWWXaXskZr8oBYFn
ow7gxMUxEDzr5eABHW0c0VaUzw7mg1sl1YIF4N94GiXP4ghwCf47ixLQs8ls
WzqLzpal0lIOHOx8cxES9aL8y8V9wf2t+BkG562LtGqQsS12IUh1DWdIhlca
gaBQSMlSv+y1crwzx+ZpTZKcSlqKpQCBswDUUNAUwQhgPMNmWnp7InX8gHUl
Zh5IdjgAbPuKgRio3UbTUkgXZlFKjivEE3piFkmQEl8oV7ca9kFmpaxU6GPA
45ik2Bbtoy6IxhVO3QU7Gp75qCGikg+tQOsmmztxQUGL/Sgx1H5lEEcwewAT
KFGoUmtVDHcFkdhJikwEjXAwJ8mGdAHIqIOjNVIEEEyXiSWhKZJ5wearIo7+
JJR+gHQ2lqQPCrMXFOk6Iz8EA/DSaBo20ILejcJ73ATsA2Gwh54LUuQTFhLI
1adRDFhf61xedDFIgP/aJ6f0+Xz/4+XR+f4efr44bB8f6w+WbHFxeHp5vJd9
yt7cPe109k/2+GV4auceWbVO+wZ+wVnVTs+6R6cn7eOa1vK9yJ2QFwIRhDeT
jN1xLFJyP1g5y2Bn9+z//O/WOtjh/+P8YHe11UJ/DH9523qzTs4ZEfJoUQhg
5K8AwZkFZpJwSDKgSgtGIbqn2EZPALlDG1ECoPnDXxAyf922/9Rzx631n+QD
XHDuoYJZ7iHBbP7J3MsMxJJHJcNoaOaeFyCdn2/7Jvddwd14+Kf/DPxQ2PXW
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
82M1/2qmp7zEhB08NwoJh8AOJl7NFixdKB2Hu54tnCz74AqzVdMgJx5A7zb1
56GHDwkfjTVUwLBa7y+nhQWcH43dLElTTSMDBKg4AeYbpakDaqEnUlbLVyhD
EA1LlX5ZV1osozC/t8w6o3I9zisq2U+gP6rPFauWVoOJQIbXuLdgXxR0pDZo
pOBWu4olA/oXKXU4mqHY2Se5kGzpojANrEz212BiNTmZPKwmIaYdRiHlI/Y5
2kXS1EnSf6Uuqbnz7/rkf3190gjIECPFLFV00M70lBWUVMAHDEzyWknsI7VG
4pTKRoximUFCboKqaMg6zyAnqVjEUW8rmX2m9MZMvNGkwFaVWJrvg7wIPCM5
yWfOaINnVH5S5f9jHVtpNCV6dqViXaUvo1g29e+kQqUuaNQg1/A1b3XDazad
Xn1jY7VXX9/su3VHtLbqW2/76+vN/upGc3OdO9HiCF/bcFvOlmg166tb/X59
3YV3HfFmrb7xxm1u0V/uek1rtGUIouiV1URJlMkMGM0DKLm8KXy87/tc5p50
hakTKhhaKvWUS8+1loklXmqehunLrnTkUqND6fBWU0xgdu1FodUFurzKvWHZ
u2B6aW756jeJuPJkmWWRUlrn8erGeBwb1QQm/U1aWU7SeJLlKssdyJ/nQb2m
3IG9XD1sHZZZGNrxMPb9DxhZGjzLRczw5XElJnRTWS+ZoASgJNtK6Nli9qEp
PrX9U//D/c2nq6az27rtvQ+CXvgxvfl03vz86aQJ/457q+tWDCtpHvlT/+b6
ITy6jfzzq87spHvjH+9+iJ3rj9DJ0UPn4sNWA3odu2sd7DXyDs+n7mN0f7x6
0PTeX1mP8NfseHS1fnPdmvbeX05uVrdS7NVdu/KxV+fwvOkedjaPZ1tqKpPP
n4bD3qed5PPFxm1vtelbMOTkZnTjn97uP3b22uud7uXa6V47OYKO3d2jzU63
M+3sDR5Ou531zi5MeXVjdHQ7fnM0Gq85s6NNmGHsWYd3OMWDj7Oj5Ci8evx8
cbR5FJ6MP+P30cnM8+F70E47t5erOEMBHR/d7q97zWHn82UAbwRrV3fW+urV
3ceHq8Nh6B4ebHTuHh5FEMTd65vVi9vhxAk+7zjXH1ad/SYCagOXeHx10/x8
0GleXR90utfex0+P59bounv+y+n7YHayepJ0rs5vevuf7z5ee7di77LVe/Qu
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

-->

</rfc>
