<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-attestation-based-client-auth-04" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-04"/>
    <author fullname="Tobias Looker">
      <organization>MATTR</organization>
      <address>
        <email>tobias.looker@mattr.global</email>
      </address>
    </author>
    <author fullname="Paul Bastian">
      <organization/>
      <address>
        <email>paul.bastian@bdr.de</email>
      </address>
    </author>
    <author fullname="Christian Bormann">
      <organization>Robert Bosch GmbH</organization>
      <address>
        <email>chris.bormann@gmx.de</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <abstract>
      <?line 51?>

<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>
    </note>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The following diagram depicts the overall architecture and protocol flow.</t>
      <artwork type="ascii-art"><![CDATA[
                    (3)
                 +-------+
                 |       |
                 |      \ /
             +---------------+
             |               |
             |    Client     |
             |    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 Backend.</t>
      <t>(2) The Client Instance sends this data to the Client Backend in request for a Client Attestation JWT.</t>
      <t>(3) The Client Backend 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 Backend 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 Backend, 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 server. In such cases, each Client Instance is responsible for performing the functions typically handled by the backend on its own.</t>
      <t>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.</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 backend 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 backend. This public key is then encapsulated within the Client Attestation JWT and is utilized to sign the Client Attestation Proof of Possession.</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 Backend" 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 the traditional OAuth2 ecosystem .</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://client.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> (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 PoP is considered expired. The authorization server <bcp14>MUST</bcp14> reject any JWT with an expiration time that has passed, subject to allowable clock skew between systems. Note that the authorization server may reject JWTs with an "exp" claim value that is unreasonably far in the future.</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 <bcp14>MAY</bcp14> ensure that JWTs are not replayed by maintaining the set of used "jti" values for the length of time for which the JWT would be considered valid based on the applicable "exp" instant.</t>
          </li>
          <li>
            <t><tt>nonce</tt>: <bcp14>OPTIONAL</bcp14>. The <tt>nonce</tt> (nonce) claim <bcp14>MUST</bcp14> specify a String value that is provided by the authorization server to associate the Client Attestation PoP JWT with a particular transaction and prevent replay attacks.</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 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",
  "alg": "ES256"
}
.
{
  "iss": "https://client.example.com",
  "aud": "https://as.example.com",
  "nbf":1300815780,
  "exp":1300819380,
  "jti": "d25d00ab-552b-46fc-ae19-98f440f25064",
  "nonce" : "5c1a9e10-29ff-4c2b-ae73-57c0957c09c4"
}
]]></artwork>
      </section>
    </section>
    <section anchor="client-attestation-using-a-header-based-syntax">
      <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: eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJ\
pc3MiOiJodHRwczovL2NsaWVudC5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2x\
pZW50LmV4YW1wbGUuY29tIiwibmJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODA\
sImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiI\
sIngiOiIxOHdITGVJZ1c5d1ZONlZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiw\
ieSI6Ii1WNGRTNFVhTE1nUF80Zlk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX1\
9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
]]></artwork>
        <t>The following is an example of the OAuth-Client-Attestation-PoP header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiJ9.ewogICJpc3MiOiAia\
HR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20iLAogICJhdWQiOiAiaHR0cHM6Ly9hcy5le\
GFtcGxlLmNvbSIsCiAgIm5iZiI6MTMwMDgxNTc4MCwKICAiZXhwIjoxMzAwODE5MzgwL\
AogICJqdGkiOiAiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0IiwKI\
CAibm9uY2UiIDogIjVjMWE5ZTEwLTI5ZmYtNGMyYi1hZTczLTU3YzA5NTdjMDljNCIKf\
Q.coB_mtdXwvi9RxSMzbIey8GVVQLv9qQrBUqmc1qj9Bs
]]></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 []{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 <eref 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>
      </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>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: eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJ\
pc3MiOiJodHRwczovL2NsaWVudC5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2x\
pZW50LmV4YW1wbGUuY29tIiwibmJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODA\
sImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiI\
sIngiOiIxOHdITGVJZ1c5d1ZONlZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiw\
ieSI6Ii1WNGRTNFVhTE1nUF80Zlk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX1\
9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiJ9.ewogICJpc3MiOiAia\
HR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20iLAogICJhdWQiOiAiaHR0cHM6Ly9hcy5le\
GFtcGxlLmNvbSIsCiAgIm5iZiI6MTMwMDgxNTc4MCwKICAiZXhwIjoxMzAwODE5MzgwL\
AogICJqdGkiOiAiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0IiwKI\
CAibm9uY2UiIDogIjVjMWE5ZTEwLTI5ZmYtNGMyYi1hZTczLTU3YzA5NTdjMDljNCIKf\
Q.coB_mtdXwvi9RxSMzbIey8GVVQLv9qQrBUqmc1qj9Bs

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: eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJ\
pc3MiOiJodHRwczovL2NsaWVudC5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2x\
pZW50LmV4YW1wbGUuY29tIiwibmJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODA\
sImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiI\
sIngiOiIxOHdITGVJZ1c5d1ZONlZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiw\
ieSI6Ii1WNGRTNFVhTE1nUF80Zlk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX1\
9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiJ9.ewogICJpc3MiOiAia\
HR0cHM6Ly9jbGllbnQuZXhhbXBsZS5jb20iLAogICJhdWQiOiAiaHR0cHM6Ly9hcy5le\
GFtcGxlLmNvbSIsCiAgIm5iZiI6MTMwMDgxNTc4MCwKICAiZXhwIjoxMzAwODE5MzgwL\
AogICJqdGkiOiAiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0IiwKI\
CAibm9uY2UiIDogIjVjMWE5ZTEwLTI5ZmYtNGMyYi1hZTczLTU3YzA5NTdjMDljNCIKf\
Q.coB_mtdXwvi9RxSMzbIey8GVVQLv9qQrBUqmc1qj9Bs

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[
eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJpc3MiOiJodHRwczovL2NsaWVud\
C5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2xpZW50LmV4YW1wbGUuY29tIiwib\
mJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODAsImNuZiI6eyJqd2siOnsia3R5I\
joiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiIsIngiOiIxOHdITGVJZ1c5d1ZON\
lZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiwieSI6Ii1WNGRTNFVhTE1nUF80Z\
lk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX19.SflKxwRJSMeKKF2QT4fwpMeJ\
f36POk6yJV_adQssw5c~eyJhbGciOiJFUzI1NiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9\
jbGllbnQuZXhhbXBsZS5jb20iLAogICJhdWQiOiAiaHR0cHM6Ly9hcy5leGFtcGxlLmN\
vbSIsCiAgIm5iZiI6MTMwMDgxNTc4MCwKICAiZXhwIjoxMzAwODE5MzgwLAogICJqdGk\
iOiAiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0IiwKICAibm9uY2U\
iIDogIjVjMWE5ZTEwLTI5ZmYtNGMyYi1hZTczLTU3YzA5NTdjMDljNCIKfQ.coB_mtdX\
wvi9RxSMzbIey8GVVQLv9qQrBUqmc1qj9Bs
]]></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 <eref 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 <eref 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="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 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.
## Rotation of Client Instance Key</t>
          <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 Backend.</t>
        </section>
      </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="replay-attack-detection">
        <name>Replay Attack Detection</name>
        <t>The following mechanisms exist within this client authentication method in order to allow an authorization server to detect replay attacks for presented client attestation PoPs:</t>
        <ul spacing="normal">
          <li>
            <t>The client uses "jti" (JWT ID) claims for the Client Attestation PoP JWT and the authorization server maintains a list of used (seen) "jti" values for the time of which the JWT would be considered valid based on the applicable "exp" claim. If any Client Attestation PoP JWT would be replayed, the authorization server would recognize the "jti" and respond with an authentication error.</t>
          </li>
          <li>
            <t>The authorization server provides a nonce for the particular transaction and the client uses it for the "nonce" claim in the Client Attestation PoP JWT. The authorization server validates that the nonce matches for the transaction. This approach may require an additional roundtrip in the protocol. The authorization server <bcp14>MUST</bcp14> ensure that the nonce provides sufficient entropy.</t>
          </li>
          <li>
            <t>The authorization server may expect the usage of a nonce in the Client Attestation PoP JWT, but instead of providing the nonce explicitly, the client may implicitly reuse an existing artefact, e.g. the authorization code. The authorization server <bcp14>MUST</bcp14> ensure that the nonce provides sufficient entropy.</t>
          </li>
        </ul>
        <t>The approach using a nonce 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 "jti" method 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="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>
      </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="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="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="18" month="October" year="2024"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON-encoded 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-13"/>
        </reference>
      </references>
    </references>
    <?line 476?>

<section anchor="document-history">
      <name>Document History</name>
      <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,
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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
PtnXDn6/c/wb/P7uuN2snYgmjuL3oKX5eHroNtsHV0e3NWfNrd2enni3e62r
89Xble1H3j5qOSvDW7taG5zcB6udwfD63TWI70H/BOB+bwl+AesUteuTg/P2
yf5Vv71X8y/3N6q33n3VvusPnTv3rrO7f3l98Hhwu7fv36z0aifXGytXB9Hd
ZRUQ/FPtvbVZueh6bx/H50cXLf727X79XXu1Ox62+FF3Zf3s9H59cnT1wXbf
STlec/IKnL+IPpCAX0YjROopOjnav3xC9B1tVvg46DV3jjRdNIT93jo8rzqH
rfXjyeZd58DzOv670e1P/X7np215e7F216lXxXGDevVdTWJ20qfvTICS3ltT
tLQjGr3mYE3gfrfarXFrt/d40nZWWzvjt82dhoAZxinKWWsh5by31Dwf3YN7
mud2t1m73W2Mb66b0Un7cnIjqtWTwe3d8fW+B3QVnbb7g5Pdd+Pbu2attXtT
hb19CzQC43cGm0Cll6K5CyPeXd21rvfWbtt7Y6CjtdvBTXRy0ILRav3btvN0
3L5cuXlqrJ203bvWrnd3stN8231vvQONtf1hELk/jR/E5vnjReup0+STjYOr
q3fHD5sf34Xblx8HTu3j3ea2VLub2OBoEKi6lFoN0xNp4cjwxJty1bAEswxe
ER4awjTrfzIZAAFctg/LO8fNvZN2udFu7120G2hfL7Ei5b3EeORUVGkqWifK
VEEpBrJZwDd435oFocJ2sKAWU/1gpVGq34+MjZV5nbyCJdRsWOKi7ZhCQRaX
hRRRcUq/pSeg7I0yhajCeH3DSOGc3F6tVqnHqT2N5QXwxLiqqeJY24PeAdUM
w3uhqXxYfIZ79KGENwaGuWyWedEAXfDnDat9u8Aax2eHDbbMdpsHzTb8WyqX
8O9Kafo8S9Gf0gfq8Av9/R39vVxii+zb0puSIsMm2aypssVn/EJTpj2v/GsY
ioD8Z/3ynGJ4DFuQ0XKVvJq2IiTrcnIJcgtCPr1y+ty5h05lOmhoOpXRs8ih
fbR42kGyhmmTRVc3msR31M+b1hhbqt4p5A4XD8q0SxyDONaSluDk7oS8Z4e6
2lL1BQpMAxE7nJTexriBIyRVaflz2CizjDS3mNJnzPIqf12ogxl+D9TImHte
GU0qAILMukzOlAwdxVTBKPISw+ZTQdVFRbuvXwJ6wuS/GfgLc8yyislfxc6o
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
W4A9LeI7g2d+bMP6H17WcDSfcgAA

-->

</rfc>
