<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-attestation-based-client-auth-09" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-09"/>
    <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="2026" month="May" day="26"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <abstract>
      <?line 76?>

<t>This specification defines an extension to the OAuth 2.0 protocol <xref target="RFC6749"/> that enables a client instance to include a key-bound attestation when interacting with an Authorization Server or Resource Server. This mechanism allows a client instance to prove its authenticity verified by a client attester without revealing its target audience to that attester. It may also serve as a mechanism for client authentication as per OAuth 2.0.</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 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional OAuth client authentication methods, such as <tt>private_key_jwt</tt> defined in <xref target="RFC7523"/>, typically rely on a direct connection between the client's backend and the Authorization Server. In ecosystems such as the Issuer-Holder-Verifier model used in <xref target="RFC9901"/>, this direct communication raises privacy concerns, as it would enable the client's backend (i.e. client attester) to correlate which Holder (i.e. client) interacts with which Issuer (i.e. Authorization Server) and potentially observe the credentials or metadata being issued. This specification establishes a mechanism for a backend-attested client authentication through a front-channel to address these issues.</t>
      <t>Additionally, this approach acknowledges the evolving landscape of OAuth 2 deployments, where the ability for mobile native apps to authenticate securely and reliably has become increasingly important. Leveraging platform mechanisms to validate a client instance, such as 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 client is considered a confidential OAuth 2 client type according to section 2.1 of <xref target="RFC6749"/>. The mechanism described in this document may  either serve as a standalone OAuth 2 client authentication mechanism or as an additional, supportive security mechanism beside an existing OAuth 2 client authentication mechanism.</t>
      <t>This specification introduces the concept of client attestations to the OAuth 2 protocol, using two artifacts:</t>
      <ul spacing="normal">
        <li>
          <t>a Client Attestation, a signed statement by the Client Attester that authenticates the Client Instance</t>
        </li>
        <li>
          <t>a Proof of Possession (PoP), a signed statement by the Client Instance that authenticates the Client Attestation</t>
        </li>
      </ul>
      <t>The following diagram depicts the overall architecture and protocol flow towards an Authorization Server.</t>
      <artwork type="ascii-art"><![CDATA[
                  (3)
                +-----+
                |     |
                |     v
           +-----------------+
           |                 |
           | Client Attester |
           |   (backend)     |
           |                 |
           +-----------------+
               ^       |
           (2) |       | (4)
               |       v
           +---------------+           +---------------+
    +----->|               |    (5)    |               |
(1) |      |    Client     |<--------->| Authorization |
    |      |   Instance    |    (7)    |    Server     |
    +------|               |<--------->|               |
           +---------------+           +---------------+
               ^       |
               |       |
               +-------+
                  (6)

]]></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 optionally requests a Challenge from the Authorization Server's Challenge endpoint or receives a challenge from a previous message.</t>
      <t>(6) The Client Instance generates a Proof of Possession (PoP) with the Client Instance Key.</t>
      <t>(7) The Client Instance sends the Client Attestation JWT along with its Proof of Possession to the Authorization Server, e.g. within a token request. The Proof of Possession is either a Client Attestation PoP JWT or a DPoP proof. The Authorization Server validates the Client Attestation and thus authenticates the Client Instance.</t>
      <t>The same flow applies when authenticating to a Resource Server, where step (7) typically occurs when accessing a protected resource.</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 Client Instance for 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 a 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="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 <tt>typ</tt> (JWT type) header <bcp14>MUST</bcp14> be <tt>oauth-client-attestation+jwt</tt>.</t>
        </li>
        <li>
          <t><tt>alg</tt>: <bcp14>REQUIRED</bcp14>. The <tt>alg</tt> (algorithm) header <bcp14>MUST</bcp14> specify the cryptographic algorithm used to sign the Client Attestation.</t>
        </li>
      </ul>
      <t>The following content applies to the JWT Claims Set:</t>
      <ul spacing="normal">
        <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 or Resource 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 or Resource 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>
      </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 or integrity protected with a Message Authentication Code (MAC). The Authorization Server or Resource Server <bcp14>MUST</bcp14> reject JWTs if signature or integrity protection validation fails.</t>
        </li>
        <li>
          <t>The Authorization Server or Resource 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"
}
.
{
  "sub": "https://client.example.com",
  "iat": 1772487595,
  "exp": 2529866394,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "use": "sig",
      "crv": "P-256",
      "x": "VcKVNBZ4IaBAYW3jxM4w3TJFVA7myeUGQyGt-g_yvpQ",
      "y": "f-E-hYE3TAWKwhVv9pej9NABs9SX9XsNO80x57jFTyU"
    }
  }
}
]]></artwork>
      <t>When using headers to transfer the Client Attestation JWT to an Authorization Server or Resource Server, it <bcp14>MUST</bcp14> be provided in an HTTP request using the a HTTP header named <tt>OAuth-Client-Attestation</tt>.</t>
      <t>The following is an example of the OAuth-Client-Attestation header.</t>
      <artwork><![CDATA[
OAuth-Client-Attestation: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24
rand0IiwiYWxnIjoiRVMyNTYiLCJraWQiOiIxMSJ9.eyJzdWIiOiJodHRwczovL2NsaWV
udC5leGFtcGxlLmNvbSIsImlhdCI6MTc3MjQ4NzU5NSwiZXhwIjoyNTI5ODY2Mzk0LCJj
bmYiOnsiandrIjp7Imt0eSI6IkVDIiwidXNlIjoic2lnIiwiY3J2IjoiUC0yNTYiLCJ4I
joiVmNLVk5CWjRJYUJBWVczanhNNHczVEpGVkE3bXllVUdReUd0LWdfeXZwUSIsInkiOi
JmLUUtaFlFM1RBV0t3aFZ2OXBlajlOQUJzOVNYOVhzTk84MHg1N2pGVHlVIn19fQ._TS4
d-LAnRlwdN97wiVnl4z7C9gvm45IWr-BvGTzeZaHtZtgNZ88gvzroU3LElUPbgF4kWi_D
FORnKzsx5yu6A
]]></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 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
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></artwork>
    </section>
    <section anchor="pop">
      <name>Proof of Possession</name>
      <t>This specification enables two options for the proof of possession:</t>
      <ul spacing="normal">
        <li>
          <t>A Client Attestation PoP JWT, introduced by this specification</t>
        </li>
        <li>
          <t>Utilizing DPoP as defined in <xref target="RFC9449"/></t>
        </li>
      </ul>
      <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 <tt>typ</tt> (JWT type) header <bcp14>MUST</bcp14> be <tt>oauth-client-attestation-pop+jwt</tt>.</t>
          </li>
          <li>
            <t><tt>alg</tt>: <bcp14>REQUIRED</bcp14>. The <tt>alg</tt> (algorithm) header <bcp14>MUST</bcp14> specify the cryptographic algorithm used to sign the Client Attestation PoP</t>
          </li>
        </ul>
        <t>The following content applies to the JWT Claims Set:</t>
        <ul spacing="normal">
          <li>
            <t><tt>aud</tt>: <bcp14>REQUIRED</bcp14>. The <tt>aud</tt> (audience) claim <bcp14>MUST</bcp14> specify a value that identifies the intended audience of the JWT. When the JWT is presented to an Authorization Server, the <xref target="RFC8414"/> issuer identifier URL of the Authorization Server <bcp14>MUST</bcp14> be used. When the JWT is presented to a Resource Server, the <xref target="RFC9728"/> resource identifier URL of the Resource Server <bcp14>MUST</bcp14> be used. A Client Attestation PoP JWT is intended for a single audience, Clients <bcp14>MUST</bcp14> generate JWTs for each target.</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 or Resource Server can utilize the <tt>jti</tt> value for replay attack detection, see <xref target="security-consideration-replay"/>.</t>
          </li>
          <li>
            <t><tt>iat</tt>: <bcp14>REQUIRED</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 or Resource Server may reject JWTs with an "iat" claim value that is unreasonably far in the past.</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 or Resource Server for the client to include in the Client Attestation PoP JWT.</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 or Resource 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 or Resource 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"
}
.
{
  "aud": "https://as.example.com",
  "jti": "d25d00ab-552b-46fc-ae19-98f440f25064",
  "challenge": "5c1a9e10-29ff-4c2b-ae73-57c0957c09c4"
}
]]></artwork>
        <t>When using headers to transfer the Client Attestation PoP JWT to an Authorization Server or Resource Server, it <bcp14>MUST</bcp14> be provided in an HTTP request using the a HTTP header named <tt>OAuth-Client-Attestation-PoP</tt>.</t>
        <t>The following is an example of the OAuth-Client-Attestation-PoP header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1w
bGUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0I
iwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My01N2MwOTU3YzA5YzQifQ.U0u
AUL60MXSf2qB3uWoo1tQanBMLa7OJ-pk_GsA_o1rfJfRkUOyWpqeSbNH90ykVad-m6x5M
crEnFgCqdkNfUA
]]></artwork>
        <t>Note that per <xref target="RFC9110"/> header field names are case-insensitive; so OAUTH-CLIENT-ATTESTATION-POP, oauth-client-attestation-pop, etc., are all valid and equivalent
header field names. Case is significant in the header field value, however.</t>
        <t>The 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-PoP   = token68
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></artwork>
      </section>
      <section anchor="dpop-combined-mode">
        <name>Using DPoP as the Proof of Possession</name>
        <t>This section defines an optimization that allows a single Proof of Possession (PoP) JWT to satisfy the role of both (a) the Client Attestation PoP defined in this specification and (b) the DPoP proof defined in <xref target="RFC9449"/> for sender-contrained access tokens. In this "combined mode" the Client Instance Key and the DPoP Key are the same asymmetric key pair, and a request using the mechanism carries only one PoP, the DPoP proof, instead of two separate PoP JWTs (the DPoP proof and Client Attestation PoP JWT).</t>
        <t>The following rules apply to the DPoP proof as defined in <xref target="RFC9449"/>:</t>
        <ol spacing="normal" type="1"><li>
            <t>The DPoP proof <bcp14>MUST</bcp14> adhere to <xref target="RFC9449"/></t>
          </li>
          <li>
            <t>The public key located in the DPoP proof <bcp14>MUST</bcp14> match the public key located in the <tt>cnf</tt> claim of the Client Attestation JWT.</t>
          </li>
        </ol>
        <t>The following non-normative example shows a token request using combined mode (line breaks for display only):</t>
        <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: <Client-Attestation-JWT>
DPoP: <Combined-DPoP-And-Attestation-PoP-JWT>

grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
]]></artwork>
        <t>Decoded (non-normative) DPoP (combined) proof:</t>
        <t>Header:
{
  "typ": "dpop+jwt",
  "alg": "ES256",
  "jwk": {
    "kty": "EC",
    "crv": "P-256",
    "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
    "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
  }
}</t>
        <t>Payload:
{
  "htm": "POST",
  "htu": "https://as.example.com/token",
  "iat": 1700000000,
  "jti": "7c20c3e2-0f52-4f74-81a5-5c7b83a7a1f9"
}</t>
        <t>Note that additional claims may be present in the DPoP proof depending on the context, as required by <xref target="RFC9449"/>.</t>
      </section>
    </section>
    <section anchor="challenges">
      <name>Challenges</name>
      <t>This section defines optional mechanisms that allows a Client to receive a fresh Challenge from the Authorization Server or Resource Server and to include the Challenge in the proof of possession. This construct may be similar or equivalent to a nonce, see <xref target="terminology"/>. The value of the challenge is opaque to the client.</t>
      <section anchor="challenge-endpoint">
        <name>Providing Challenges through the Challenge Endpoint</name>
        <t>The Authorization Server or Resource 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"/> or the Resource Server supports metadata as defined in <xref target="RFC9728"/>, 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 Client Attestation PoP JWT or DPoP Proof as defined in <xref target="pop"/>.</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. 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 or Resource 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:</t>
        <ul spacing="normal">
          <li>
            <t>attestation_challenge: <bcp14>REQUIRED</bcp14> if the Authorization Server or Resource Server supports Client Attestations and server-provided challenges as described in this document. String containing a Challenge to be used in the Client Attestation PoP JWT or DPoP Proof as defined in <xref target="pop"/>. 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>
          </li>
        </ul>
        <t>The Authorization Server or Resource 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 or Resource 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
Cache-Control: no-store

{
  "attestation_challenge": "AYjcyMzY3ZDhiNmJkNTZ"
}
]]></artwork>
      </section>
      <section anchor="challenge-in-response">
        <name>Providing Challenges on Previous Responses</name>
        <t>The Authorization Server or Resource 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">
      <name>Verification and Processing</name>
      <section anchor="verification-client-attestation-jwt">
        <name>Client Attestation JWT</name>
        <t>To validate a Client Attestation, the receiving server <bcp14>MUST</bcp14> ensure the following conditions and rules are met:</t>
        <ol spacing="normal" type="1"><li>
            <t>There is precisely one <tt>OAuth-Client-Attestation</tt> HTTP request header field containing a Client Attestation JWT.</t>
          </li>
          <li>
            <t>The Client Attestation JWT contains all required claims and header parameters as per <xref target="client-attestation-jwt"/>.</t>
          </li>
          <li>
            <t>The alg JOSE Header Parameter contains a registered algorithm <xref target="IANA.JOSE.ALGS"/>, is not none, 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 Client 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 Client Attestation JWT is fresh enough per local policy of the Authorization Server or Resource Server by checking the <tt>iat</tt> or <tt>exp</tt> claims.</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.</t>
          </li>
        </ol>
      </section>
      <section anchor="verification-client-attestation-pop-jwt">
        <name>Client Attestation PoP JWT</name>
        <t>This section applies when the Client Attestation PoP JWT is used as the Proof of Possession. When operating in DPoP combined mode as defined in <xref target="dpop-combined-mode"/>, this section does not apply; instead, see <xref target="verification-dpop-combined"/>.</t>
        <t>To validate a Client Attestation PoP, the receiving server <bcp14>MUST</bcp14> ensure the following conditions and rules are met:</t>
        <ol spacing="normal" type="1"><li>
            <t>There is precisely one <tt>OAuth-Client-Attestation-PoP</tt> HTTP request header field containing a Client Attestation PoP JWT.</t>
          </li>
          <li>
            <t>The Client Attestation PoP JWT contains all required claims and header parameters as per <xref target="client-attestation-pop-jwt"/>.</t>
          </li>
          <li>
            <t>The alg JOSE Header Parameter contains a registered algorithm <xref target="IANA.JOSE.ALGS"/>, is not none, is supported by the application, and is acceptable per local policy.</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 per local policy of the Authorization Server or Resource Server.</t>
          </li>
          <li>
            <t>The audience claim in the Client Attestation PoP JWT identifies the receiving server: when validated by an Authorization Server, it <bcp14>MUST</bcp14> be the issuer identifier URL of the Authorization Server as described in <xref target="RFC8414"/>; when validated by a Resource Server, it <bcp14>MUST</bcp14> be the resource identifier URL of the Resource Server as described in <xref target="RFC9728"/>.</t>
          </li>
          <li>
            <t>If the Client received a challenge through the Authorization Server's challenge endpoint or within previous responses as described in <xref target="challenges"/>, it <bcp14>MUST</bcp14> match the challenge claim of the Client Attestation PoP JWT.</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>
        </ol>
      </section>
      <section anchor="verification-dpop-combined">
        <name>DPoP Combined Mode</name>
        <t>This section applies when the DPoP combined mode is used as defined in <xref target="dpop-combined-mode"/>. When the Client Attestation PoP JWT is used as the Proof of Possession instead, this section does not apply; see <xref target="verification-client-attestation-pop-jwt"/>.</t>
        <t>To validate a request using DPoP combined mode, the receiving server <bcp14>MUST</bcp14> perform the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>There is no <tt>OAuth-Client-Attestation-PoP</tt> HTTP request header field present in the request.</t>
          </li>
          <li>
            <t>There is precisely one <tt>DPoP</tt> HTTP request header field present in the request.</t>
          </li>
          <li>
            <t>Validate the DPoP proof in accordance with <xref target="RFC9449"/>.</t>
          </li>
          <li>
            <t>The public key in the <tt>jwk</tt> header parameter of the DPoP proof <bcp14>MUST</bcp14> be identical to the public key in the <tt>cnf</tt> claim of the Client Attestation JWT.</t>
          </li>
          <li>
            <t>If the Client received a challenge through the Authorization Server's challenge endpoint or within previous responses as described in <xref target="challenges"/>, it <bcp14>MUST</bcp14> match the nonce payload claim of the DPoP proof.</t>
          </li>
        </ol>
      </section>
      <section anchor="errors">
        <name>Errors</name>
        <t>When validation errors specifically related to the use of client attestations are encountered the following additional error codes are defined for use in either Authorization Server authenticated endpoint error responses (as defined in Section 5.2 of <xref target="RFC6749"/>) or Resource Server error responses (as defined in Section 3 of <xref target="RFC6750"/>).</t>
        <ul spacing="normal">
          <li>
            <t><tt>use_attestation_challenge</tt> <bcp14>MUST</bcp14> be used when the Client Attestation PoP JWT is not using an expected server-provided challenge. When used this error code <bcp14>MUST</bcp14> be accompanied by the <tt>OAuth-Client-Attestation-Challenge</tt> HTTP header field parameter (as described in <xref target="challenge-in-response"/>).</t>
          </li>
          <li>
            <t><tt>use_fresh_attestation</tt> <bcp14>MUST</bcp14> be used when the Client Attestation JWT is deemed to be not fresh enough to be acceptable by the server.</t>
          </li>
          <li>
            <t><tt>invalid_client_attestation</tt> <bcp14>MAY</bcp14> be used in addition to the more general <tt>invalid_client</tt> error code as defined in <xref target="RFC6749"/> if the attestation or its proof of possession could not be successfully verified.</t>
          </li>
        </ul>
        <t>In the event of errors due to situations not described above, Authorization and Resource Servers <bcp14>MUST</bcp14> follow the guidance of <xref target="RFC6749"/> and <xref target="RFC6750"/> or their respective extensions of when to return suitable Error Responses.</t>
      </section>
      <section anchor="client-attestation-as-an-oauth-client-authentication">
        <name>Client Attestation as an OAuth Client Authentication</name>
        <t>A Client Attestation may be used as an OAuth 2 Client Authentication mechanism as described in Section 2.3 of <xref target="RFC6749"/> towards an Authorization Server.  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.</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.eyJzdWIiOiJodHRwczovL2NsaWV
udC5leGFtcGxlLmNvbSIsImlhdCI6MTc3MjQ4NzU5NSwiZXhwIjoyNTI5ODY2Mzk0LCJj
bmYiOnsiandrIjp7Imt0eSI6IkVDIiwidXNlIjoic2lnIiwiY3J2IjoiUC0yNTYiLCJ4I
joiVmNLVk5CWjRJYUJBWVczanhNNHczVEpGVkE3bXllVUdReUd0LWdfeXZwUSIsInkiOi
JmLUUtaFlFM1RBV0t3aFZ2OXBlajlOQUJzOVNYOVhzTk84MHg1N2pGVHlVIn19fQ._TS4
d-LAnRlwdN97wiVnl4z7C9gvm45IWr-BvGTzeZaHtZtgNZ88gvzroU3LElUPbgF4kWi_D
FORnKzsx5yu6A
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1w
bGUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0I
iwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My01N2MwOTU3YzA5YzQifQ.U0u
AUL60MXSf2qB3uWoo1tQanBMLa7OJ-pk_GsA_o1rfJfRkUOyWpqeSbNH90ykVad-m6x5M
crEnFgCqdkNfUA

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4
]]></artwork>
      </section>
      <section anchor="client-attestation-as-an-additional-security-signal">
        <name>Client Attestation as an additional security signal</name>
        <t>A Client Attestation may be used as a (additional) security signal towards an Authorization Server or Resource Server. This may provide additional assurance about the client's authenticity, integrity, state or other information contained in the Client Attestation. When used at the Authorization Server, the Client Attestation may appear along existing OAuth 2 Client Authentication mechanisms.</t>
        <t>The following example demonstrates usage of the client attestation mechanism in a PAR request as defined in <xref target="RFC9126"/> along side client_secret (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.eyJzdWIiOiJodHRwczovL2NsaWV
udC5leGFtcGxlLmNvbSIsImlhdCI6MTc3MjQ4NzU5NSwiZXhwIjoyNTI5ODY2Mzk0LCJj
bmYiOnsiandrIjp7Imt0eSI6IkVDIiwidXNlIjoic2lnIiwiY3J2IjoiUC0yNTYiLCJ4I
joiVmNLVk5CWjRJYUJBWVczanhNNHczVEpGVkE3bXllVUdReUd0LWdfeXZwUSIsInkiOi
JmLUUtaFlFM1RBV0t3aFZ2OXBlajlOQUJzOVNYOVhzTk84MHg1N2pGVHlVIn19fQ._TS4
d-LAnRlwdN97wiVnl4z7C9gvm45IWr-BvGTzeZaHtZtgNZ88gvzroU3LElUPbgF4kWi_D
FORnKzsx5yu6A
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1w
bGUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0I
iwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My01N2MwOTU3YzA5YzQifQ.U0u
AUL60MXSf2qB3uWoo1tQanBMLa7OJ-pk_GsA_o1rfJfRkUOyWpqeSbNH90ykVad-m6x5M
crEnFgCqdkNfUA

response_type=code
&state=af0ifjsldkj
&client_id=s6BhdRkqt3
&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&code_challenge=K2-ltc83acc4h0c9w6ESC_rEMTJ3bww-uCHaoeK1t8U
&code_challenge_method=S256&scope=account-information
]]></artwork>
        <t>The following example demonstrates usage of the client attestation mechanism at the Resource Server (with extra line breaks for display purposes only):</t>
        <artwork><![CDATA[
POST /api/users/list HTTP/1.1
Host: rs.example.com
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer mF_9.B5f-4.1JqM
Accept: application/json
OAuth-Client-Attestation: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRpb24
rand0IiwiYWxnIjoiRVMyNTYiLCJraWQiOiIxMSJ9.eyJzdWIiOiJodHRwczovL2NsaWV
udC5leGFtcGxlLmNvbSIsImlhdCI6MTc3MjQ4NzU5NSwiZXhwIjoyNTI5ODY2Mzk0LCJj
bmYiOnsiandrIjp7Imt0eSI6IkVDIiwidXNlIjoic2lnIiwiY3J2IjoiUC0yNTYiLCJ4I
joiVmNLVk5CWjRJYUJBWVczanhNNHczVEpGVkE3bXllVUdReUd0LWdfeXZwUSIsInkiOi
JmLUUtaFlFM1RBV0t3aFZ2OXBlajlOQUJzOVNYOVhzTk84MHg1N2pGVHlVIn19fQ._TS4
d-LAnRlwdN97wiVnl4z7C9gvm45IWr-BvGTzeZaHtZtgNZ88gvzroU3LElUPbgF4kWi_D
FORnKzsx5yu6A
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hdXRoLWN
saWVudC1hdHRlc3RhdGlvbi1wb3Arand0In0.eyJhdWQiOiJodHRwczovL3JzLmV4YW1w
bGUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0I
iwibm9uY2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU3My01N2MwOTU3YzA5YzQifQ.gzk
0WkWsjNNx92gVMSp6jVpPDUvR0toYxLMyGmJMJOfm8mG2Otg0Nfm4PefOUpwBMNQtIXSd
dW-cqJopljQaCQ
]]></artwork>
      </section>
    </section>
    <section anchor="as-metadata">
      <name>Authorization Server Metadata</name>
      <t>The Authorization Server <bcp14>SHOULD</bcp14> communicate support for authentication with Attestation-Based Client Authentication using a Client Attestation PoP JWT as the PoP by using the value <tt>attest_jwt_client_auth</tt> in the <tt>token_endpoint_auth_methods_supported</tt> within its published metadata. The Authorization Server <bcp14>SHOULD</bcp14> communicate support for authentication with Attestation-Based Client Authentication using a DPoP proof as the PoP by using the value <tt>attest_jwt_client_auth_dpop</tt> in the <tt>token_endpoint_auth_methods_supported</tt> within its published metadata. The client <bcp14>SHOULD</bcp14> fetch and parse the Authorization Server metadata and recognize Attestation-Based Client Authentication as a client authentication mechanism if either of the given <tt>token_endpoint_auth_methods_supported</tt> values are present.</t>
      <t>The Authorization Server <bcp14>SHOULD</bcp14> communicate supported algorithms for client attestations by using <tt>client_attestation_signing_alg_values_supported</tt> and <tt>client_attestation_pop_signing_alg_values_supported</tt> within its published metadata. This enables the client to validate that its client attestation is understood by the Authorization Server prior to authentication. The client <bcp14>MAY</bcp14> try to get a new client attestation with different algorithms. The Authorization Server <bcp14>MUST</bcp14> include <tt>client_attestation_signing_alg_values_supported</tt> and <tt>client_attestation_pop_signing_alg_values_supported</tt> in its published metadata if the <tt>token_endpoint_auth_methods_supported</tt> includes <tt>attest_jwt_client_auth</tt>. When <tt>token_endpoint_auth_methods_supported</tt> includes <tt>attest_jwt_client_auth_dpop</tt>, the Authorization Server <bcp14>SHOULD</bcp14> advertise supported DPoP signing algorithms using <tt>dpop_signing_alg_values_supported</tt> as defined in <xref target="RFC9449"/>, rather than <tt>client_attestation_pop_signing_alg_values_supported</tt>, as the Proof of Possession in combined mode is a DPoP proof.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="dpop-combined-mode-considerations">
        <name>DPoP Combined Mode Considerations</name>
        <t>When using DPoP combined mode, the key used for client authentication and token binding is shared. This may be undesirable depending on the deployment considerations of the Client. Conversely, the benefits of this approach are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>It authenticates (attests) the DPoP key used for sender-constraining tokens against the Client deployment.</t>
          </li>
          <li>
            <t>It reduces implementation complexity for the Client by minimizing the number of JWTs that need to be constructed or validated in a request.</t>
          </li>
          <li>
            <t>It reduces run-time costs for the Client by minimizing the number of cryptographic operations that need to be constructed in a request, especially if the keys are in a remote and/or hardware-backed key storage.</t>
          </li>
        </ul>
      </section>
      <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 or Resource 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 its associated public key, 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 Server or Resource 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 or Resource 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 or Resource 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 or Resource 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 anchor="trust-management-and-key-resolution">
        <name>Trust Management and Key Resolution</name>
        <t>The mechanisms by which the Authorization Server establishes trust in the Client Attester, and by which it obtains the public keys used to verify Client Attestation JWTs, are out of scope of this specification.</t>
        <t>Attestation-Based Client Authentication protects the integrity of Client Attestations using either Message Authentication Codes (MACs) or digital signatures. When digital signatures are used, the Authorization Server needs to be able to obtain the corresponding public key, either through pre-configuration or through dynamic discovery.</t>
        <t>Examples of trust management approaches include:</t>
        <ul spacing="normal">
          <li>
            <t>Public Key Infrastructure (PKI) and trust lists.</t>
          </li>
          <li>
            <t>Pre-shared or out-of-band negotiated configuration (e.g., keys, URLs).</t>
          </li>
        </ul>
        <t>Specifications, profiles, and ecosystems built on top of Attestation-Based Client Authentication <bcp14>SHOULD</bcp14> adopt one of the following mechanisms to resolve the public key used to verify a Client Attestation JWT:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>x5c</tt> header parameter, as defined in <xref section="4.1.6" sectionFormat="of" target="RFC7515"/>, conveys an X.509 certificate chain in the JOSE header of each Client Attestation. Trust is established by validating the chain against a configured trust anchor.</t>
          </li>
          <li>
            <t>The <tt>kid</tt> header parameter combined with the <tt>jku</tt> header parameter, as defined in <xref section="4.1.2" sectionFormat="of" target="RFC7515"/> and <xref section="4.1.3" sectionFormat="of" target="RFC7515"/>. The Authorization Server retrieves a JWK Set from the URL indicated by <tt>jku</tt> and selects the key identified by <tt>kid</tt>. This approach is self-contained but requires an additional HTTP request, and trust must be established in the <tt>jku</tt> URL.</t>
          </li>
          <li>
            <t>The <tt>kid</tt> header parameter combined with Client Metadata or other pre-shared information. Client Metadata, as defined in <xref target="RFC7591"/>, includes a <tt>jwks_uri</tt> parameter which, together with <tt>kid</tt>, enables resolution of the verification key.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="client-instance-tracking-across-authorization-servers-or-resource-servers">
        <name>Client Instance Tracking Across Authorization Servers or Resource Servers</name>
        <t>Implementers should be aware that using the same client attestation across multiple Authorization Servers or Resource 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 or Resource 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/Resource 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/Resource 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/Resource Server. If any Client Attestation PoP JWT would be replayed, the Authorization/Resource 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/Resource 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/Resource 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/Resource 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/Resource Server.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The Authorization/Resource 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/Resource 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/Resource Server and Client.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Note that protocols that provide a challenge as part of a previous response should provide a clear indicator for clients when this feature is used. This makes it easier for client implementations to deal with proper state handling. This can be implicit by always mandating support for this feature or via some metadata that allows the client to detect support for this feature for a specific server.</t>
        <t>Because clock skews between servers and clients may be large, Authorization/Resource 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/Resource 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/Resource Server gives stronger replay attack detection guarantees, however support by the Authorization/Resource 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 anchor="client-attestation-protection">
        <name>Client Attestation Protection</name>
        <t>This specification allows both, digital signatures using asymmetric cryptography, and Message Authentication Codes (MAC) to be used to protect Client Attestation JWTs. Implementers should only use MACs to secure the integrity of Client Attestations JWTs if they fully understand the risks of MACs when compared to digital signatures and especially the requirements of their use-case scenarios.
These use-cases typically represent deployments where the Client Attester and Authorization Server have a trust relationship and the possibility to securely exchange keys out of band or are the same entity and no other entity needs to verify the Client Attestations. We expect most deployments to use digital signatures for the protection of Client Attestations, and implementers <bcp14>SHOULD</bcp14> default to digital signatures if they are unsure.</t>
      </section>
    </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="iana-considerations">
      <name>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-endpoint"/> 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: <xref target="errors"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Name: use_fresh_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: <xref target="errors"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <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: <xref target="errors"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Authorization Server Metadata" registry of <xref target="IANA.OAuth.Params"/> established by <xref target="RFC8414"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: client_attestation_signing_alg_values_supported</t>
          </li>
          <li>
            <t>Metadata Description: JSON array containing a list of the JWS signing algorithms supported by the authorization server for the signature on the Client Attestation JWT.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="as-metadata"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: client_attestation_pop_signing_alg_values_supported</t>
          </li>
          <li>
            <t>Metadata Description: JSON array containing a list of the JWS signing algorithms supported by the authorization server for the signature on the Client Attestation PoP JWT.</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="registration-of-attestjwtclientauthdpop-token-endpoint-authentication-method">
        <name>Registration of attest_jwt_client_auth_dpop Token Endpoint Authentication Method</name>
        <t>This section registers the value "attest_jwt_client_auth_dpop" 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_dpop"</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="dpop-combined-mode"/> of this specification</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>Structured Type: Item</t>
          </li>
          <li>
            <t>Reference: <xref target="client-attestation-jwt"/> 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>Structured Type: Item</t>
          </li>
          <li>
            <t>Reference: <xref target="client-attestation-pop-jwt"/> 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>Structured Type: Item</t>
          </li>
          <li>
            <t>Reference: <xref target="challenges"/> 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="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="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="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </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="RFC9901">
          <front>
            <title>Selective Disclosure for JSON Web Tokens</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="November" 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="RFC" value="9901"/>
          <seriesInfo name="DOI" value="10.17487/RFC9901"/>
        </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>
      </references>
    </references>
    <?line 768?>

<section anchor="document-history">
      <name>Document History</name>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>restructure draft</t>
        </li>
        <li>
          <t>add section how to establish trust and resolve keys</t>
        </li>
        <li>
          <t>rephrasing of introduction text</t>
        </li>
        <li>
          <t>adding challenge request/response to graphic</t>
        </li>
        <li>
          <t>restructure and minor fixes to challenge section</t>
        </li>
        <li>
          <t>add mentioning or Resource Server, where applicable</t>
        </li>
        <li>
          <t>clarify that alg is required for Client Attestation JWT and Client Attestation PoP JWT</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>remove concatenated Serialization for Client Attestations</t>
        </li>
        <li>
          <t>update all examples (removal of iss and nbf)</t>
        </li>
        <li>
          <t>remove <tt>iss</tt> from Client Attestation JWT and Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>add small security consideration sub-section for MAC-based deployments</t>
        </li>
        <li>
          <t>remove public clients reference and clarify this draft targets confidential clients</t>
        </li>
        <li>
          <t>clarify this may be a client authentication mechanism but also may be not</t>
        </li>
        <li>
          <t>add examples for RS usage and non client authentication</t>
        </li>
        <li>
          <t>Add note on protocols providing a challenge on previous responses</t>
        </li>
        <li>
          <t>add structured-type to iana header field registration requests</t>
        </li>
        <li>
          <t>moving Authorization Server metadata into it's own top level section</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>remove restrictions to not allow MAC-based algorithms</t>
        </li>
        <li>
          <t>require <tt>iat</tt> in Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>clarify <tt>use_attestation_challenge</tt> and add <tt>invalid_client_attestation</tt></t>
        </li>
        <li>
          <t>add <tt>client_attestation_signing_alg_values_supported</tt> and <tt>client_attestation_pop_signing_alg_values_supported</tt> to IANA registration</t>
        </li>
        <li>
          <t>add implementation consideration for Authorization Server Metadata</t>
        </li>
        <li>
          <t>clarify refresh token binding</t>
        </li>
        <li>
          <t>check client_id at PAR endpoint</t>
        </li>
        <li>
          <t>added <tt>use_fresh_attestation</tt> as an error to signal that the attestation was not deemed fresh enough by the server</t>
        </li>
        <li>
          <t>mandate the defined header fields if the attestation and pop are transferred via header fields</t>
        </li>
      </ul>
      <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
Babis Routis,
Brian Campbell,
Dimitris Zarras,
Filip Skokan,
Francesco Marino,
Frederik Krogsdal Jacobsen,
Guiseppe De Marco,
Joseph Heenan,
Kristina Yasuda,
Micha Kraus,
Michael B. Jones,
Takahiko Kawasaki,
Timo Glastra
and
Torsten Lodderstedt
for their valuable contributions to this specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
