<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-attestation-based-client-auth-11" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-11"/>
    <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="September" day="03"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <abstract>
      <?line 91?>

<t>This specification defines an extension to the OAuth 2.0 protocol (RFC 6749) 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 95?>

<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>The 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 <xref section="2.1" sectionFormat="of" 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>This specification does not use the Assertion Framework for OAuth 2.0 Client Authentication, as the client attestation is transferred by HTTP headers, which is incompatible with the mechanisms defined by <xref target="RFC7521"/>.</t>
      <section anchor="data-flow">
        <name>Data Flow</name>
        <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 gathers optional evidence to prove its authenticity to the Client Attester. This could be evidence about the software running on the client, statements about the integrity of the operating system, or hardware the Client Instance is running on. A Client Instance can provide several such statements or attestations to the Client Attester within a single request, but their content, how they are collected, and how they are transmitted are out of scope of this specification.</t>
        <t>(2) The Client Instance sends this data to the Client Attester in request for a Client Attestation JWT. Transmission of the evidence may result in one or multiple requests.</t>
        <t>(3) The Client Attester authenticates the Client Instance, validates that the Client Instance is in control of the private key of the Client Instance Key, and evaluates any further provided evidence according to its policy. It then 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 typically a Client Attestation PoP JWT or a DPoP proof (see <xref target="pop"/>). 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>
        <t>While the concrete evidence about the Client Instance collected and transmitted in (1) and (2) is out of scope, a Client Attestation JWT is generally understood to convey that the Client Attester has verified</t>
        <ul spacing="normal">
          <li>
            <t>the authenticity and integrity of the Client Instance (this might encompass statements about its software and hardware environment)</t>
          </li>
          <li>
            <t>that the Client Instance controls the private key of the Client Instance Key</t>
          </li>
          <li>
            <t>optionally, properties of that key (e.g., that it was securely generated or resides in hardware-backed storage)</t>
          </li>
        </ul>
      </section>
    </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 that attests to the authenticity of a Client Instance and is cryptographically bound to a key managed by that Client Instance. A Client Attestation JWT may additionally convey information about the integrity or state of the Client Instance.</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, used to detect replay attacks. Within OAuth, this is traditionally called a nonce.</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> unless specified otherwise by a profile as described in <xref target="profiling"/>.</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 the <tt>client_id</tt> value of the OAuth Client, unless specified otherwise by a profile as described in <xref target="profiling"/>.</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 HTTP header field <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 value uses the token68 syntax defined in <xref section="11.2" sectionFormat="of" target="RFC9110"/> (repeated below for ease of reference).</t>
      <sourcecode type="abnf"><![CDATA[
OAuth-Client-Attestation       = token68
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></sourcecode>
    </section>
    <section anchor="pop">
      <name>Proof of Possession</name>
      <t>This specification defines 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>
      <t>Other specifications or profiles may define additional proof of possession mechanisms for use with the Client Attestation. Any such mechanism <bcp14>MUST</bcp14> demonstrate possession of the private key corresponding to the key in the <tt>cnf</tt> claim of the Client Attestation JWT and <bcp14>MUST</bcp14> define how server-provided freshness is achieved, either by incorporating a Challenge (see <xref target="challenges"/>) into the proof of possession or by an equivalent mechanism native to that proof of possession mechanism. Such specifications are also expected to register their own token endpoint authentication method value, analogous to <tt>attest_jwt_client_auth</tt> and <tt>attest_jwt_client_auth_dpop</tt> (see <xref target="as-metadata"/>).</t>
      <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",
  "iat": 1772487595,
  "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 HTTP header field <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: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRp
b24tcG9wK2p3dCIsImFsZyI6IkVTMjU2In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1wb
GUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0Ii
wiaWF0IjoxNzcyNDg3NTk1LCJjaGFsbGVuZ2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU
3My01N2MwOTU3YzA5YzQifQ.M4Uc4rWVAqaLlmDDUXQKkKPbAQKj0JrTizLgWhZndmbkv
M3VL8y-w_QJr7Z0HZlH94E64cLa8L5fSjJItYv0jg
]]></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 value uses the token68 syntax defined in <xref section="11.2" sectionFormat="of" target="RFC9110"/> (repeated below for ease of reference).</t>
        <sourcecode type="abnf"><![CDATA[
OAuth-Client-Attestation-PoP   = token68
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></sourcecode>
      </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-constrained 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>Note that combined mode requires an actual DPoP proof to be presented, since the DPoP proof also serves as the Client Attestation PoP; the <tt>dpop_jkt</tt> authorization request parameter defined in <xref section="10" sectionFormat="of" target="RFC9449"/> cannot substitute for it. A Client that binds the authorization code using <tt>dpop_jkt</tt> without presenting a DPoP proof therefore uses the normal mode.</t>
        <t>Note that DPoP <xref target="RFC9449"/> can also be used alongside the Client Attestation PoP JWT without this combined mode. In this case, the DPoP proof is validated according to <xref target="RFC9449"/> independently of this specification and its public key is not required to match the key in the <tt>cnf</tt> claim of the Client Attestation JWT (see <xref target="verification"/>).</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>In combined mode, the Challenge mechanisms defined by this specification (the <tt>challenge</tt> claim and the <tt>OAuth-Client-Attestation-Challenge</tt> HTTP header field, see <xref target="challenges"/>) are not used for the DPoP proof. Instead, server-provided freshness and replay protection rely solely on the DPoP nonce mechanism defined in <xref section="8" sectionFormat="of" target="RFC9449"/> and <xref section="9" sectionFormat="of" target="RFC9449"/>: the server provides a nonce that the Client includes in the <tt>nonce</tt> claim of the DPoP proof. In addition to the means defined by <xref target="RFC9449"/>, a server that supports DPoP with server-provided nonces provides a fresh DPoP nonce in the response of the challenge endpoint as described in <xref target="challenge-endpoint"/>, allowing the Client to obtain a nonce proactively.</t>
        <t>The following non-normative example shows a token request using combined mode (line breaks for display only):</t>
        <sourcecode type="http"><![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
]]></sourcecode>
        <t>Decoded (non-normative) DPoP (combined) proof - Header:</t>
        <sourcecode type="json"><![CDATA[
{
  "typ": "dpop+jwt",
  "alg": "ES256",
  "jwk": {
    "kty": "EC",
    "crv": "P-256",
    "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
    "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
  }
}
]]></sourcecode>
        <t>Payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "htm": "POST",
  "htu": "https://as.example.com/token",
  "iat": 1700000000,
  "jti": "7c20c3e2-0f52-4f74-81a5-5c7b83a7a1f9",
  "nonce": "eyJ7S_zG.eyJH0-Z.HX4w-7v"
}
]]></sourcecode>
        <t>Note that additional claims may be present in the DPoP proof depending on the context, as required by <xref target="RFC9449"/>. The <tt>nonce</tt> claim is present when the server provides DPoP nonces, either through the means defined in <xref target="RFC9449"/> or through the challenge endpoint (see <xref target="challenge-endpoint"/>).</t>
      </section>
    </section>
    <section anchor="challenges">
      <name>Challenges</name>
      <t>Challenges may be used by the Authorization Server or Resource Server to guarantee freshness and can be used to detect replay attacks. Support for Challenges is <bcp14>OPTIONAL</bcp14> for the Authorization Server or Resource Server. The lifetime of a Challenge, and whether a Challenge may be used in more than one Client Attestation PoP JWT, are determined solely by the local policy of the Authorization Server or Resource Server. If they are provided, the Client <bcp14>MUST</bcp14> include the Challenge in the proof of possession. The value of the challenge is opaque to the Client.</t>
      <t>A server that uses Challenges:</t>
      <ul spacing="normal">
        <li>
          <t><bcp14>MUST</bcp14> provide a Challenge when returning an <tt>use_attestation_challenge</tt> error defined in <xref target="errors"/></t>
        </li>
        <li>
          <t><bcp14>MAY</bcp14> provide a Challenge in any HTTP response as described in <xref target="challenge-in-response"/></t>
        </li>
        <li>
          <t><bcp14>MAY</bcp14> provide a Challenge at the challenge endpoint as described in <xref target="challenge-endpoint"/></t>
        </li>
      </ul>
      <t>A Client <bcp14>MUST</bcp14> include the most recently received Challenge provided by the Authorization Server or Resource Server in the Client Attestation PoP JWT as defined in <xref target="client-attestation-pop-jwt"/>, irrespective of whether that Challenge was obtained from the challenge endpoint or from a previous response as described in <xref target="challenge-in-response"/>.
If the Authorization Server or Resource Server provides a challenge endpoint as defined in <xref target="challenge-endpoint"/>, a Client that does not hold a Challenge <bcp14>SHOULD</bcp14> obtain a Challenge from that endpoint rather than sending a request without a Challenge and relying on the resulting error response.
A Client <bcp14>MAY</bcp14> use the same Challenge in more than one Client Attestation PoP JWT. If the Authorization Server or Resource Server accepts a Challenge only once, it rejects the second use with the <tt>use_attestation_challenge</tt> error as defined in <xref target="errors"/> and provides a fresh Challenge in that response.
Upon receiving a <tt>use_attestation_challenge</tt> error, a Client <bcp14>SHOULD</bcp14> retry the request once, using a newly created Client Attestation PoP JWT containing the Challenge provided with that error response. A Client <bcp14>MUST NOT</bcp14> retry indefinitely.</t>
      <t>This mechanism applies only to the Client Attestation PoP JWT. In the DPoP combined mode (see <xref target="dpop-combined-mode"/>), the <tt>use_dpop_nonce</tt> error and the <tt>DPoP-Nonce</tt> HTTP header field defined in <xref target="RFC9449"/> are used instead, see <xref target="errors"/>. The challenge endpoint <bcp14>MAY</bcp14> be utilized to provide <tt>DPoP-Nonce</tt> HTTP header field.</t>
      <section anchor="challenge-in-error">
        <name>Providing Challenges in Errors</name>
        <t>An Authorization Server that requires a Challenge that the Client did not provide, or that rejects the Challenge contained in the Client Attestation PoP JWT, <bcp14>MUST</bcp14> respond with an HTTP 400 (Bad Request) status code and the error code <tt>use_attestation_challenge</tt> (see <xref target="errors"/>). The response <bcp14>MUST</bcp14> include a fresh Challenge in the <tt>OAuth-Client-Attestation-Challenge</tt> HTTP header field.</t>
        <t>A Resource Server that requires a Challenge that the Client did not provide, or that rejects the Challenge contained in the Client Attestation PoP JWT, <bcp14>MUST</bcp14> respond with an HTTP 401 (Unauthorized) status code with the error code <tt>use_attestation_challenge</tt> in the <tt>WWW-Authenticate</tt> HTTP header field and a fresh Challenge in the <tt>OAuth-Client-Attestation-Challenge</tt> HTTP header field.</t>
        <t>The Client uses the Challenge provided with the error response to retry the request.</t>
        <t>The following is a non-normative example of such an error response of an Authorization Server:</t>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
OAuth-Client-Attestation-Challenge: AYjcyMzY3ZDhiNmJkNTZ

{
  "error": "use_attestation_challenge",
  "error_description": "Authorization Server requires a fresh challenge"
}
]]></sourcecode>
      </section>
      <section anchor="challenge-in-response">
        <name>Providing Challenges in 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 <bcp14>MUST</bcp14> be named "OAuth-Client-Attestation-Challenge" and contain the value of the Challenge.</t>
        <t>The following is a non-normative example of an Authorization Response containing a fresh Challenge:</t>
        <sourcecode type="http"><![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
}
]]></sourcecode>
      </section>
      <section anchor="challenge-endpoint">
        <name>Providing Challenges through the Challenge Endpoint</name>
        <t>The Authorization Server or Resource Server <bcp14>MAY</bcp14> provide 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.</t>
        <t>If the challenge endpoint response contains a <tt>DPoP-Nonce</tt> HTTP header field, a Client using DPoP <bcp14>MUST</bcp14> use its value as the <tt>nonce</tt> in subsequent DPoP proofs as defined in <xref target="RFC9449"/>.</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>
        <sourcecode type="http"><![CDATA[
POST /as/challenge HTTP/1.1
Host: as.example.com
Accept: application/json
]]></sourcecode>
        <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 as defined in <xref target="client-attestation-pop-jwt"/>. The intention of this element not being required in other circumstances is to preserve the ability for the challenge endpoint to be used in other applications unrelated to client attestations.</t>
          </li>
        </ul>
        <t>If the server supports DPoP <xref target="RFC9449"/> with server-provided nonces, the response <bcp14>MUST</bcp14> additionally include a fresh DPoP nonce in the <tt>DPoP-Nonce</tt> HTTP header field as defined in <xref target="RFC9449"/>. This allows a Client to obtain a DPoP nonce proactively, without the additional round trip caused by a <tt>use_dpop_nonce</tt> error, both when using the DPoP combined mode (see <xref target="dpop-combined-mode"/>) and when using DPoP independently of this specification.</t>
        <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>
        <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Host: as.example.com
Content-Type: application/json
Cache-Control: no-store
DPoP-Nonce: eyJ7S_zG.eyJH0-Z.HX4w-7v

{
  "attestation_challenge": "AYjcyMzY3ZDhiNmJkNTZ"
}
]]></sourcecode>
        <t>The <tt>DPoP-Nonce</tt> HTTP header field in this example is only present if the server supports DPoP with server-provided nonces.
The <tt>attestation_challenge</tt> parameter is only present if the server supports Client Attestations and server-provided challenges (i.e., this endpoint can also be used to provide only DPoP nonces).</t>
      </section>
    </section>
    <section anchor="verification">
      <name>Verification and Processing</name>
      <t>This section defines the verification and processing rules for the proof of possession mechanisms defined by this specification. Proof of possession mechanisms defined by other specifications define their own verification and processing rules.</t>
      <t>An Authorization Server <bcp14>MAY</bcp14> support both <tt>attest_jwt_client_auth</tt> and <tt>attest_jwt_client_auth_dpop</tt> and distinguish them by the following rules:</t>
      <ul spacing="normal">
        <li>
          <t>If the request contains an <tt>OAuth-Client-Attestation-PoP</tt> HTTP request header field, the receiving server <bcp14>MUST</bcp14> apply the validation rules of <xref target="verification-client-attestation-pop-jwt"/> and if present, a DPoP proof present in the request is validated according to <xref target="RFC9449"/> independently of this specification.</t>
        </li>
        <li>
          <t>If an <tt>OAuth-Client-Attestation</tt> HTTP request header field and a DPoP proof are present, but no <tt>OAuth-Client-Attestation-PoP</tt> HTTP request header field, the receiving server <bcp14>MUST</bcp14> apply the validation rules of <xref target="verification-dpop-combined"/>.</t>
        </li>
        <li>
          <t>If the request contains an <tt>OAuth-Client-Attestation</tt> header field and a DPoP proof, but no OAuth-Client-Attestation-PoP header field, and the Authorization Server does not support <tt>attest_jwt_client_auth_dpop</tt>, it <bcp14>MUST</bcp14> reject the request (see <xref target="errors"/>).</t>
        </li>
      </ul>
      <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, unless specified otherwise by a profile as described in <xref target="profiling"/>.</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 provides challenges through the challenge endpoint or within previous responses as described in <xref target="challenges"/>, the <tt>challenge</tt> claim of the Client Attestation PoP JWT <bcp14>MUST</bcp14> match a provided challenge.</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>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"/>. If the server provides DPoP nonces, this includes validating that the <tt>nonce</tt> claim of the DPoP proof contains a valid nonce provided by the server, whether it was provided via the <tt>DPoP-Nonce</tt> HTTP header field as defined in <xref target="RFC9449"/> or via the challenge endpoint as described in <xref target="challenge-endpoint"/>.</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. Note that this doesn't mean the comparison of a canonical representation of the JWK, but a check via JWK thumbprint or by comparing the required members per key type (e.g., kty, curve, x, y).</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 <xref section="5.2" sectionFormat="of" target="RFC6749"/>) or Resource Server error responses (as defined in <xref section="3" sectionFormat="of" 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 a fresh Challenge in the <tt>OAuth-Client-Attestation-Challenge</tt> HTTP header field (as described in <xref target="challenge-in-response"/>). If the combined mode as defined in <xref target="dpop-combined-mode"/> is used and the DPoP proof does not contain an expected server-provided nonce, the DPoP error <tt>use_dpop_nonce</tt> <bcp14>MUST</bcp14> be used instead and a fresh nonce provided in the <tt>DPoP-Nonce</tt> HTTP header field of the response, as defined in <xref target="RFC9449"/>.</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, the public keys of the Client Attestation JWT and the proof of possession don't match, or the proof of possession is not supported.</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-client-auth">
        <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 <xref section="2.3" sectionFormat="of" 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 <tt>client_id</tt> value in the <tt>sub</tt> claim of the Client Attestation, unless specified otherwise by a profile as described in <xref target="profiling"/>.</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>
        <sourcecode type="http"><![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: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRp
b24tcG9wK2p3dCIsImFsZyI6IkVTMjU2In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1wb
GUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0Ii
wiaWF0IjoxNzcyNDg3NTk1LCJjaGFsbGVuZ2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU
3My01N2MwOTU3YzA5YzQifQ.M4Uc4rWVAqaLlmDDUXQKkKPbAQKj0JrTizLgWhZndmbkv
M3VL8y-w_QJr7Z0HZlH94E64cLa8L5fSjJItYv0jg

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4
]]></sourcecode>
      </section>
      <section anchor="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 alongside existing OAuth 2 Client Authentication mechanisms.</t>
        <t>An Authorization Server or Resource Server <bcp14>MAY</bcp14> signal a requirement to Clients for presenting a Client Attestation and its Proof of Possession as an additional security signal alongside the regular request. A server signals this demand by including the <tt>client_attestation_pop_methods_supported</tt> metadata parameter in its published metadata, as defined in <xref target="RFC8414"/> for the Authorization Server and in <xref target="RFC9728"/> for the Resource Server. The value of <tt>client_attestation_pop_methods_supported</tt> is a JSON array of case-sensitive strings, each identifying a Proof of Possession method that the server accepts, as registered in the "OAuth Client Attestation Proof-of-Possession Methods" registry established by this specification (see <xref target="pop-methods"/>). A server <bcp14>MUST NOT</bcp14> include a method it does not accept, and the array <bcp14>MUST NOT</bcp14> be empty when the parameter is present.</t>
        <t>When the parameter is omitted, presenting a Client Attestation as an additional security signal is <bcp14>OPTIONAL</bcp14>.
When the parameter includes <tt>none</tt>, the Client <bcp14>MAY</bcp14> omit the Client Attestation.
If the Client sends a Client Attestation, it <bcp14>MUST</bcp14> use one of the supported Proof of Possession methods.
For example, for <tt>"client_attestation_pop_methods_supported": ["dpop_combined", "none"]</tt>, the server accepts requests without a Client Attestation as well as requests carrying a Client Attestation with a DPoP proof as the Proof of Possession.
When the parameter is present and does not include <tt>none</tt>, a Client <bcp14>SHOULD</bcp14> include the Client Attestation and its Proof of Possession in its requests to that server, and the Client <bcp14>MUST</bcp14> use one of the listed Proof of Possession methods.</t>
        <t>This specification registers the following Proof of Possession methods:</t>
        <ul spacing="normal">
          <li>
            <t><tt>attestation_pop_jwt</tt>: The Proof of Possession is a dedicated Client Attestation PoP JWT as defined in <xref target="client-attestation-pop-jwt"/> ("normal mode").</t>
          </li>
          <li>
            <t><tt>dpop_combined</tt>: The Proof of Possession is a DPoP proof serving as the combined Proof of Possession as defined in <xref target="dpop-combined-mode"/> ("DPoP combined mode").</t>
          </li>
          <li>
            <t><tt>none</tt>: No Client Attestation is required. A server includes this value to signal that the Client <bcp14>MAY</bcp14> omit the Client Attestation.</t>
          </li>
        </ul>
        <t>The following example demonstrates usage of the client attestation mechanism in a PAR request as defined in <xref target="RFC9126"/> alongside client_secret (with extra line breaks for display purposes only):</t>
        <sourcecode type="http"><![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: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRp
b24tcG9wK2p3dCIsImFsZyI6IkVTMjU2In0.eyJhdWQiOiJodHRwczovL2FzLmV4YW1wb
GUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0Ii
wiaWF0IjoxNzcyNDg3NTk1LCJjaGFsbGVuZ2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU
3My01N2MwOTU3YzA5YzQifQ.M4Uc4rWVAqaLlmDDUXQKkKPbAQKj0JrTizLgWhZndmbkv
M3VL8y-w_QJr7Z0HZlH94E64cLa8L5fSjJItYv0jg

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
]]></sourcecode>
        <t>The following example demonstrates usage of the client attestation mechanism at the Resource Server (with extra line breaks for display purposes only):</t>
        <sourcecode type="http"><![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: eyJ0eXAiOiJvYXV0aC1jbGllbnQtYXR0ZXN0YXRp
b24tcG9wK2p3dCIsImFsZyI6IkVTMjU2In0.eyJhdWQiOiJodHRwczovL3JzLmV4YW1wb
GUuY29tIiwianRpIjoiZDI1ZDAwYWItNTUyYi00NmZjLWFlMTktOThmNDQwZjI1MDY0Ii
wiaWF0IjoxNzcyNDg3NTk1LCJjaGFsbGVuZ2UiOiI1YzFhOWUxMC0yOWZmLTRjMmItYWU
3My01N2MwOTU3YzA5YzQifQ.Uh-vRynTGGARZNqijGyovBMm_EsX5qu0fg0VGPVRsp1rJ
dF7rElbZcEv0CAtzm5kXhjSXHYGxEVb0I7HIeUFRg
]]></sourcecode>
      </section>
    </section>
    <section anchor="as-metadata">
      <name>Authorization Server and Resource 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 or Resource 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 or Resource 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 Client Attestation PoP JWT mechanism is used. The Authorization Server or Resource Server <bcp14>MUST</bcp14> include <tt>dpop_signing_alg_values_supported</tt> as defined in <xref target="RFC9449"/>, if DPoP is used as the Proof of Possession in combined mode.</t>
      <t>The Authorization Server or Resource Server <bcp14>MAY</bcp14> signal that it requires a Client Attestation as an additional security signal as described in <xref target="additional-security-signal"/>. The Authorization Server includes the <tt>client_attestation_pop_methods_supported</tt> metadata parameter, containing a JSON array of the Proof of Possession methods it accepts, in its metadata as defined in <xref target="RFC8414"/>. The Resource Server uses the same <tt>client_attestation_pop_methods_supported</tt> parameter in its metadata as defined in <xref target="RFC9728"/>. The Proof of Possession method values are registered in the "OAuth Client Attestation Proof-of-Possession Methods" registry established by this specification (see <xref target="pop-methods"/>).</t>
    </section>
    <section anchor="client-metadata">
      <name>Client Metadata</name>
      <t>This section defines client metadata parameters for use with attestation-based client authentication. As described in <xref target="RFC7591"/>, client metadata defines a general data model for Clients that is useful even when the Dynamic Client Registration Protocol is not being used. A Client <bcp14>MAY</bcp14> use these values to compare its own capabilities against the Authorization Server or Resource Server metadata defined in <xref target="as-metadata"/> to determine whether it can interoperate with a given server prior to attempting authentication.</t>
      <t>A Client that supports attestation-based client authentication as defined in this specification indicates this by using the value <tt>attest_jwt_client_auth</tt> or <tt>attest_jwt_client_auth_dpop</tt> in the <tt>token_endpoint_auth_method</tt> client metadata parameter defined in <xref target="RFC7591"/>.</t>
      <t>In addition, the following client metadata parameters are defined:</t>
      <ul spacing="normal">
        <li>
          <t><tt>client_attestation_signing_alg_values_supported</tt>: <bcp14>OPTIONAL</bcp14>. JSON array containing a list of the JWS <tt>alg</tt> values (as defined in <xref target="IANA.JOSE.ALGS"/>) supported by the Client for signing the Client Attestation JWT. The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t><tt>client_attestation_pop_signing_alg_values_supported</tt>: <bcp14>OPTIONAL</bcp14>. JSON array containing a list of the JWS <tt>alg</tt> values (as defined in <xref target="IANA.JOSE.ALGS"/>) supported by the Client for signing the Client Attestation PoP JWT. The values <tt>none</tt> and any symmetric algorithms <bcp14>MUST NOT</bcp14> be present.</t>
        </li>
        <li>
          <t><tt>client_attestation_pop_methods_supported</tt>: <bcp14>OPTIONAL</bcp14>. JSON array of case-sensitive strings, each identifying a Proof of Possession method supported by the Client, as registered in the "OAuth Client Attestation Proof-of-Possession Methods" registry established by this specification (see <xref target="pop-methods"/>).</t>
        </li>
      </ul>
      <t>These client metadata values are advertisements of Client capability. The Authorization Server or Resource Server enforces its own accepted algorithm and Proof of Possession method policies independently, and is not required to consult these values when validating an incoming request.</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 specification <bcp14>MUST</bcp14> bind the refresh token to the Client Instance, and NOT just the client as specified in <xref section="6" sectionFormat="of" target="RFC6749"/>. To prove this binding, the Client Instance <bcp14>MUST</bcp14> use the client attestation mechanism when refreshing an access token.</t>
        <t>Unless a profile specifies otherwise as described in <xref target="profiling"/>, the refresh token <bcp14>MUST</bcp14> be bound to the Client Instance Key, and the Client Instance <bcp14>MUST</bcp14> use the same key that was present in the <tt>cnf</tt> claim of the Client Attestation that was used when the refresh token was issued.</t>
      </section>
      <section anchor="binding-of-oauth-protocol-artifacts">
        <name>Binding of OAuth protocol artifacts</name>
        <t>Authorization servers using Attestation-Based Client Authentication are <bcp14>RECOMMENDED</bcp14> to bind relevant protocol artifacts to the Client Instance and its associated public key where possible, and NOT just the client as specified in <xref target="RFC6749"/>. Note that this only applies if Attestation-Based Client Authentication is used as Client Authentication. Examples of these artifacts include but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>The authorization_code as specified in <xref section="4.1" sectionFormat="of" target="RFC6749"/>.</t>
          </li>
          <li>
            <t>The auth_req_id as specified in section 7.3 <xref target="CIBA"/>.</t>
          </li>
        </ul>
        <t>How this binding is established and then proven is specific to the protocol artifact. For example establishing binding to an authorization_code involves the client instance using client attestation before the user is redirected to the Authorization Endpoint (for example by using PAR, <xref target="RFC9126"/>), and proving binding of the authorization_code to the Client Instance involves using the client attestation mechanism to authenticate at the token endpoint when performing the authorization code grant.</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 <tt>challenge</tt> or <tt>jti</tt> values 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. 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. To ensure security, the Authorization Server or Resource Server <bcp14>MUST</bcp14> first evaluate the <tt>iat</tt> of the Client Attestation PoP and reject any Client Attestation PoP whose <tt>iat</tt> falls outside this time window. Using such a data structure, the Authorization Server or Resource Server performs the following operations:</t>
        <ul spacing="normal">
          <li>
            <t>search for the <tt>challenge</tt> or <tt>jti</tt> value of the Client Attestation PoP to validate whether it has been previously seen, and reject the Client Attestation PoP if it has</t>
          </li>
          <li>
            <t>insert the <tt>challenge</tt> or <tt>jti</tt> value of the Client Attestation PoP once it has passed all other checks</t>
          </li>
          <li>
            <t>delete <tt>challenge</tt> or <tt>jti</tt> values after they have passed the sliding time window</t>
          </li>
        </ul>
        <t>A trie (also called prefix tree), or a patricia trie (also called radix tree) are <bcp14>RECOMMENDED</bcp14> data structures to implement such a mechanism. Note that this seen-values mechanism is only needed when replay detection relies on a <tt>jti</tt> value or on a <tt>challenge</tt> obtained from the challenge endpoint. When the Authorization Server or Resource Server issues a challenge bound to a specific Client Instance session (see <xref target="security-consideration-replay"/>), it can instead validate the Client Attestation PoP against the single challenge value expected for that session, without maintaining a seen-values data structure.</t>
        <t>Note that for the combined mode, the <tt>nonce</tt> and <tt>jti</tt> claims of the DPoP proof are used instead of the <tt>challenge</tt> and <tt>jti</tt> claims of the Client Attestation PoP.</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">
      <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 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 choose 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 sends the challenge as part of another previous response to the Client Instance.</t>
          </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 Attestation 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="profiling">
      <name>Considerations for Profiling this specification</name>
      <t>Use cases, ecosystems or other specifications that utilize Attestation-Based Client Authentication may profile this specification.</t>
      <t>A profile <bcp14>MUST</bcp14> define how an Authorization Server or Resource Server determines that the profile applies to a given request (which could also be an out-of-band mechanism).</t>
      <t>A profile <bcp14>MAY</bcp14> deviate on the following points:</t>
      <ul spacing="normal">
        <li>
          <t>The type of the Client Attestation JWT: a profile <bcp14>MAY</bcp14> redefine a <tt>typ</tt> header parameter value other than <tt>oauth-client-attestation+jwt</tt> (see <xref target="client-attestation-jwt"/>) in order to distinguish profile-specific Client Attestations. Client Attestations are still unambiguously transferred by the <tt>OAuth-Client-Attestation</tt> HTTP header.</t>
        </li>
        <li>
          <t>The subject of the Client Attestation JWT: a profile <bcp14>MAY</bcp14> redefine the meaning of the <tt>sub</tt> claim (see <xref target="client-attestation-jwt"/>) and how a <tt>client_id</tt> maps to Client Instances. Such a profile <bcp14>MUST</bcp14> define how the checks that rely on <tt>sub</tt> matching the <tt>client_id</tt> are replaced, in particular those in <xref target="verification-client-attestation-jwt"/> and <xref target="client-attestation-as-client-auth"/>.</t>
        </li>
        <li>
          <t>The binding of refresh tokens: a profile <bcp14>MAY</bcp14> redefine the refresh token binding described in <xref target="refresh-token-binding"/> if its use case does not allow binding refresh tokens to the Client Instance Key. Such a profile <bcp14>MUST</bcp14> define what the refresh token is bound to instead and how that binding is proven when the refresh token is used.</t>
        </li>
      </ul>
      <t>All other requirements of this specification continue to apply unchanged.</t>
    </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 "Attestation 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-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>Error Name: use_attestation_challenge</t>
          </li>
          <li>
            <t>Error Usage Location: token error response, resource access error response</t>
          </li>
          <li>
            <t>Related Protocol Extension: OAuth 2.0 Attestation-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="errors"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Error Name: use_fresh_attestation</t>
          </li>
          <li>
            <t>Error Usage Location: token error response, resource access error response</t>
          </li>
          <li>
            <t>Related Protocol Extension: OAuth 2.0 Attestation-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="errors"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Error Name: invalid_client_attestation</t>
          </li>
          <li>
            <t>Error Usage Location: token error response, resource access error response</t>
          </li>
          <li>
            <t>Related Protocol Extension: OAuth 2.0 Attestation-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <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: challenge_endpoint</t>
          </li>
          <li>
            <t>Metadata Description: URL of the authorization server's 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>Specification Document(s): <xref target="challenge-endpoint"/> of this specification</t>
          </li>
        </ul>
        <t><br/></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>Specification Document(s): <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>Specification Document(s): <xref target="as-metadata"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: client_attestation_pop_methods_supported</t>
          </li>
          <li>
            <t>Metadata Description: JSON array of strings, each identifying a Proof of Possession method the authorization server accepts when requiring Clients to present a Client Attestation as an additional security signal. If omitted, presenting a Client Attestation is not required.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="additional-security-signal"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-protected-resource-metadata-registration">
        <name>OAuth Protected Resource Metadata Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Protected Resource Metadata" registry of <xref target="IANA.OAuth.Params"/> established by <xref target="RFC9728"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: challenge_endpoint</t>
          </li>
          <li>
            <t>Metadata Description: URL of the protected resource's 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>Specification Document(s): <xref target="challenge-endpoint"/> of this specification</t>
          </li>
        </ul>
        <t><br/></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 protected resource for the signature on the Client Attestation JWT.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <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 protected resource for the signature on the Client Attestation PoP JWT.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="as-metadata"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: client_attestation_pop_methods_supported</t>
          </li>
          <li>
            <t>Metadata Description: JSON array of strings, each identifying a Proof of Possession method the protected resource accepts when requiring Clients to present a Client Attestation as an additional security signal. If omitted, presenting a Client Attestation is not required.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="additional-security-signal"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-dynamic-client-registration-metadata-registration">
        <name>OAuth Dynamic Client Registration Metadata Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Dynamic Client Registration Metadata" registry of <xref target="IANA.OAuth.Params"/> established by <xref target="RFC7591"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: client_attestation_signing_alg_values_supported</t>
          </li>
          <li>
            <t>Client Metadata Description: JSON array containing a list of the JWS signing algorithms supported by the Client for signing the Client Attestation JWT.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="client-metadata"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: client_attestation_pop_signing_alg_values_supported</t>
          </li>
          <li>
            <t>Client Metadata Description: JSON array containing a list of the JWS signing algorithms supported by the Client for signing the Client Attestation PoP JWT.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="client-metadata"/> of this specification</t>
          </li>
        </ul>
        <t><br/></t>
        <ul spacing="normal">
          <li>
            <t>Client Metadata Name: client_attestation_pop_methods_supported</t>
          </li>
          <li>
            <t>Client Metadata Description: JSON array of strings, each identifying a Proof of Possession method supported by the Client.</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="client-metadata"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="pop-methods">
        <name>OAuth Client Attestation Proof-of-Possession Methods Registry</name>
        <t>This specification establishes the IANA "OAuth Client Attestation Proof-of-Possession Methods" registry. This registry lists the Proof of Possession methods that a Client may use to demonstrate possession of the Client Instance Key, referenced by the <tt>client_attestation_pop_methods_supported</tt> metadata parameter defined in <xref target="additional-security-signal"/> and <xref target="client-metadata"/>.</t>
        <t>Client Attestation Proof-of-Possession Methods are registered by Specification Required <xref target="RFC8126"/> after a two-week review period on the oauth-ext-review@ietf.org mailing list, on the advice of one or more Designated Experts. To allow for the allocation of values prior to publication of the final version of a specification, the designated experts may approve registration once they are satisfied that the specification will be completed and published. However, if the specification is not completed and published in a timely manner, as determined by the designated experts, the designated experts may request that IANA withdraw the registration.</t>
        <t>Registration requests sent to the mailing list for review should use an appropriate subject (e.g., "Request to register Client Attestation PoP: example").</t>
        <t>Within the review period, the designated experts will either approve or deny the registration request, communicating this decision to the review list and IANA. Denials should include an explanation and, if applicable, suggestions as to how to make the request successful. If the designated experts are not responsive, the registration requesters should contact IANA to escalate the process.</t>
        <t>Designated experts should apply at least the following criteria when reviewing proposed registrations:</t>
        <ul spacing="normal">
          <li>
            <t>the mechanism should not duplicate existing functionality</t>
          </li>
          <li>
            <t>the mechanism is likely generally applicable, as opposed to being used for a single application</t>
          </li>
          <li>
            <t>the specification sufficiently describes how the Proof of Possession method works in combination with a Client Attestation</t>
          </li>
        </ul>
        <t>IANA must only accept registry updates from the designated experts and should direct all requests for registration to the review mailing list.</t>
        <t>In order to enable broadly informed review of registration decisions, there should be multiple designated experts to represent the perspectives of different applications using this specification. In cases where registration may be perceived as a conflict of interest for a particular expert, that expert should defer to the judgment of the other experts.</t>
        <t>The mailing list is used to enable public review of registration requests, which enables both designated experts and other interested parties to provide feedback on proposed registrations. Designated experts may allocate values prior to publication of the final specification. This allows authors to receive guidance from the designated experts early, so any identified issues can be fixed before the final specification is published.</t>
        <section anchor="registration-template">
          <name>Registration Template</name>
          <ul spacing="normal">
            <li>
              <t>Method Name: The name of the Proof of Possession method, a case-sensitive ASCII string.</t>
            </li>
            <li>
              <t>Method Description: A brief description of the mechanism.</t>
            </li>
            <li>
              <t>Change Controller: For values registered by this specification, IETF.</t>
            </li>
            <li>
              <t>Specification document(s): A reference to the specification that defines the mechanism.</t>
            </li>
          </ul>
        </section>
        <section anchor="initial-registry-content">
          <name>Initial Registry Content</name>
          <ul spacing="normal">
            <li>
              <t>Method Name: attestation_pop_jwt</t>
            </li>
            <li>
              <t>Method Description: The Proof of Possession is a dedicated Client Attestation PoP JWT ("normal mode").</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): <xref target="client-attestation-pop-jwt"/> of this specification</t>
            </li>
          </ul>
          <t><br/></t>
          <ul spacing="normal">
            <li>
              <t>Method Name: dpop_combined</t>
            </li>
            <li>
              <t>Method Description: The Proof of Possession is a DPoP proof serving as the combined Proof of Possession ("DPoP combined mode").</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): <xref target="dpop-combined-mode"/> of this specification</t>
            </li>
          </ul>
          <t><br/></t>
          <ul spacing="normal">
            <li>
              <t>Method Name: none</t>
            </li>
            <li>
              <t>Method Description: No Client Attestation is required. When a server includes this value, the Client <bcp14>MAY</bcp14> omit the Client Attestation.</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification document(s): <xref target="additional-security-signal"/> of this specification</t>
            </li>
          </ul>
        </section>
      </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): <xref target="client-attestation-as-client-auth"/> of this specification</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>Specification document(s): <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>Specification document(s): <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>Specification document(s): <xref target="challenge-in-response"/> of this specification</t>
          </li>
        </ul>
      </section>
      <section anchor="media-type-registration">
        <name>Media Type Registration</name>
        <t>This section requests registration of the following media types <xref target="RFC2046"/> in the "Media Types" registry <xref target="IANA.MediaTypes"/> in the manner described in <xref target="RFC6838"/>.</t>
        <t>To indicate that the content is a Client Attestation JWT as defined by this specification:</t>
        <ul spacing="normal">
          <li>
            <t>Type name: application</t>
          </li>
          <li>
            <t>Subtype name: oauth-client-attestation+jwt</t>
          </li>
          <li>
            <t>Required parameters: n/a</t>
          </li>
          <li>
            <t>Optional parameters: n/a</t>
          </li>
          <li>
            <t>Encoding considerations: 8bit; JWT values are encoded as a series of base64url encoded values (some of which may be the empty string) separated by period ('.') characters.</t>
          </li>
          <li>
            <t>Security considerations: See <xref target="security"/> of this specification</t>
          </li>
          <li>
            <t>Interoperability considerations: n/a</t>
          </li>
          <li>
            <t>Published specification: this specification</t>
          </li>
          <li>
            <t>Applications that use this media type: Applications using this specification to convey a Client Attestation</t>
          </li>
          <li>
            <t>Fragment identifier considerations: n/a</t>
          </li>
          <li>
            <t>Additional information: n/a</t>
          </li>
          <li>
            <t>Person &amp; email address to contact for further information: OAuth WG mailing list, oauth@ietf.org</t>
          </li>
          <li>
            <t>Intended usage: COMMON</t>
          </li>
          <li>
            <t>Restrictions on usage: none</t>
          </li>
          <li>
            <t>Author: OAuth WG mailing list, oauth@ietf.org</t>
          </li>
          <li>
            <t>Change controller: IETF</t>
          </li>
          <li>
            <t>Provisional registration? No</t>
          </li>
        </ul>
        <t>To indicate that the content is a Client Attestation PoP JWT as defined by this specification:</t>
        <ul spacing="normal">
          <li>
            <t>Type name: application</t>
          </li>
          <li>
            <t>Subtype name: oauth-client-attestation-pop+jwt</t>
          </li>
          <li>
            <t>Required parameters: n/a</t>
          </li>
          <li>
            <t>Optional parameters: n/a</t>
          </li>
          <li>
            <t>Encoding considerations: 8bit; JWT values are encoded as a series of base64url encoded values (some of which may be the empty string) separated by period ('.') characters.</t>
          </li>
          <li>
            <t>Security considerations: See <xref target="security"/> of this specification</t>
          </li>
          <li>
            <t>Interoperability considerations: n/a</t>
          </li>
          <li>
            <t>Published specification: this specification</t>
          </li>
          <li>
            <t>Applications that use this media type: Applications using this specification for updated status information of tokens</t>
          </li>
          <li>
            <t>Fragment identifier considerations: n/a</t>
          </li>
          <li>
            <t>Additional information: n/a</t>
          </li>
          <li>
            <t>Person &amp; email address to contact for further information: OAuth WG mailing list, oauth@ietf.org</t>
          </li>
          <li>
            <t>Intended usage: COMMON</t>
          </li>
          <li>
            <t>Restrictions on usage: none</t>
          </li>
          <li>
            <t>Author: OAuth WG mailing list, oauth@ietf.org</t>
          </li>
          <li>
            <t>Change controller: IETF</t>
          </li>
          <li>
            <t>Provisional registration? No</t>
          </li>
        </ul>
      </section>
      <section anchor="json-web-token-claims-registration">
        <name>JSON Web Token Claims Registration</name>
        <t>This specification requests registration of the following value in the IANA "JSON Web Token (JWT) Claims" registry <xref target="IANA.JWT.Claims"/> established by <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: challenge</t>
          </li>
          <li>
            <t>Claim Description: Server-provided challenge for use in a proof of possession</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="client-attestation-pop-jwt"/> 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="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </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="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </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">
          <front>
            <title>OAuth Parameters</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="IANA.JWT.Claims" target="https://www.iana.org/assignments/jwt/jwt.xhtml#claims">
          <front>
            <title>JSON Web Token (JWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.MediaTypes" target="https://www.iana.org/assignments/media-types/media-types.xhtml">
          <front>
            <title>Media Types</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="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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </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="CIBA" target="https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html">
          <front>
            <title>OpenID Connect Client-Initiated Backchannel Authentication Flow - Core 1.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1072?>

<section anchor="document-history">
      <name>Document History</name>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>clarify that challenge support is optional, but that a server using challenges always provides a fresh challenge in the <tt>use_attestation_challenge</tt> error</t>
        </li>
        <li>
          <t>combined mode now exclusively uses the DPoP nonce mechanism</t>
        </li>
        <li>
          <t>allow the challenge endpoint response to convey a DPoP nonce</t>
        </li>
        <li>
          <t>add clarifications on AS combined mode handling &amp; errors</t>
        </li>
        <li>
          <t>remove duplication challenge verification in Verifivation of Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>fix IANA registry entries</t>
        </li>
        <li>
          <t>remove duplication challenge verification in Verification of Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>add Client Metadata section defining for use by Clients</t>
        </li>
        <li>
          <t>register the new client metadata parameters in the IANA registry</t>
        </li>
        <li>
          <t>add considerations for profiling this draft</t>
        </li>
        <li>
          <t>mention that RFC7521 is not used</t>
        </li>
      </ul>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>add <tt>client_attestation_pop_methods_supported</tt> Authorization Server and Resource Server metadata</t>
        </li>
        <li>
          <t>establish the "OAuth Client Attestation Proof-of-Possession Methods" registry</t>
        </li>
        <li>
          <t>allow proof of possession mechanisms defined by other/future specifications</t>
        </li>
        <li>
          <t>clarify that DPoP can be used alongside <tt>attest_jwt_client_auth</tt> and which validation rules apply</t>
        </li>
        <li>
          <t>add short note that dpop_jkt cannot be used with the combined mode</t>
        </li>
        <li>
          <t>update Client Attestation PoP JWT examples to use <tt>challenge</tt> instead of <tt>nonce</tt> and include the required <tt>iat</tt> claim</t>
        </li>
        <li>
          <t>clean up references</t>
        </li>
        <li>
          <t>fix IANA registrations</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>add clarification on Client Attester</t>
        </li>
        <li>
          <t>remove replay attack consideration to reuse existing artifacts as challenge</t>
        </li>
        <li>
          <t>clarifications around implementation consideration for replay attack detection</t>
        </li>
      </ul>
      <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,
Giuseppe 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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
09GCQ08xcxVmQX7ecDpIwh5LjCRjK5VrpIbNa+OWoI91PYOcfavY8dv40giC
BWCTCyafoZovgsYJDwITwgefHa9uPOZPbqIefrKystD42mjzcECeFpwIWx6w
LRtqd5Mhvwo3CR5b2dxcXX+yubG1QR/CBYUPVzdWt548fry2tU4fApmCD7+Q
T45uq/4FF5BPaUm7NCh9BGQIPwK0sJ9101v87F1Lr5w+vcPPzrqvzw6fflzf
D5/ufDhfu747WJ+snbx6frazOZyq0xe/Tl/krctP09vRr/ZNmrTfeta6+vBs
7WTn/PXk6ux2a6Sutw53nmZbx++33meHb58s321sXj8/mZ5y9PHXBv7/lb2I
5ygIMxmSOAJiyzr4foY4jHR/biLYRPlVX14jsCOuxhzEoP1HliI6sQ0BxecH
F8TBWxKY7KznooS4kcT8Mvq6AkDF6zKLIGPdU9uBmr5aVu93orfRq9sP78+W
w92V686LwaAT/5p/eH+0/PH94TL8O+qsrjcAgL3l/WgSfTi/i/evk+jo7GB6
ePIherP7Kg3Pf4VB9u8Ojl9ttWHUz73zfRw16b08mnQ/J7dvVg+z8PysMe7t
bgzUi+d598Xd4M3w8LZzvJ/tDwdXvd39xwcn3bWD61/XDz+fbhweT6KP768m
MBPMsr/xdu/D6sHnm2WY7brRGX6I3oLcAEtK969Hm/vDfFkd7z/evznbwyX2
3h8OcInd1UFMS157tYq/n+4u6yWv7zfgg7Ph4Zuzm43d8+ujVx9OXz09P+t+
DuOrw8OX3c9nz0Yvzm6erXXeDwZnp70jddpbfnPe66v3HyenuOr4BrbYeDV8
c3qah88Hzw9Wjp6eLedr4fOPq2/fPx2E14O3v56++vz27PDD27Orzyc3T9YP
Xl6uHK7CwC8HZ/vxylb/1/ank+P1Rq/1Zic+Gkx6h1ubk+gsHqx/3tzdurwd
rm/sn6etp7cvTj6rj+HL/GN+efjxyZPL289pcrr25tng9F3n8vn6zXn0aa/x
/O1R/PpzdrcxHT/e4etwaKzsSDE59nZlBcULDxMx3SdjV2yYqRbozRhbjoFb
fwY1GRDt9ORla/fN/rPDk9bOycmz45Md5N/NoI66NQOVd9tsZEfyzbScvIl/
G0fwGzzfKC+hHeyGFIFK7Ifs6xQ9x4F27uMkCZMbWdnIwtoLUb57LEmPM3GW
kMvn8RMQ7oBv3/nB1TrMbmWlvSpxdgLDRZBvFKv8Cl0qKGORcwOeShXQG7R3
L+looE7cr72MEg3xi15IQy+o5s8vwcofF4OdN+9e7gSPgr39F/sn8O9CawH/
bsPfFaEWFX8WPtEL/0N//4n+frQQLAV/XPhlgRHop0qbzhf0XH2dmaKAAXRs
XLZBoRV2BQqtqzRwieDatHF9IgYXp4QBTsmGgYSSvGwOWzYR5+sYGdlovCU5
wnuf4htEPcrIpsYvu9Jixcrd+DPcIAbKFf2brvYY7IBGQq4ZGwJJHKSnhrCI
nIR4Z/gKTz1FrpOTWfQFbTqSG8KqB8vOvmmvyvYjk9NW0ZVGAaBpy3CzPsx1
FaNSidynexXBTQM9ScJFUdKNYUGjRCJSXFe0cXAaC0y2tMRRyDV4gGeAemrs
EAgHUBJzrXM3Zh5HOzim+BX/jJkSATEDYYhlaRgspYQ7lguiFH1X4vw1HvLK
CGxNfUJAjeQSHeQw1gWTP8zO+CQqO758QbCu+fITzIJqtQZXmLV0VsDSEocv
zlDpKq1KMOBsyxK+/W9jXcLtkoXpX2saQqB+h3UoHPcq1g0fwrolbanGhMBs
jLUmihzvR0obRWF2Olud+CQUgQKXSEzWyyGbM6npvNEaMZjjZggDMM8W+B/b
aOzMaXB69EbPUylJ6wNFmN63irLMbebH1FyYX0cV1KygUt00k89iOhw0JQDk
EDCJadPQbMrbot8bKwypzywHoIWCcs8IN6/zqHzG+CGjvd1BzUmP4wg0Cnen
mqtWb+NhmjhGKIgjgDkJrYyxq0+uXcc8LjZzEvM05dLx/S1t0ePrye8tOZaf
AgR+qOUHT8+x/gSHXozJvLDguD1rDNH2MdKtZX3uvcvgbDDrKIkpHanPflvi
c2HGh2/YYNn0Zb8KFs3PNTggvg9/csOvxUY47zY1+ugEE5sBWu82kuvxv9iu
xvo45qlYV14N4f9OG5pGmyhm5ccY1KydzPHhaSZDASdTQxT1PrSgN0i6Ya4T
eRQbcXyBz5cRa71q679b6ua11GkZo8JaZ81zwBdc81yYlU1zQFLxkd7qRm95
Oey0NjZWO631x/1uK1QrW62tJ/319eX+6sby4/UZtjxDI3Csje5KuKVWllur
W/1+a70LA4Zqc621sdld3qK/uusL32ca0xzxN2Qea8GavtNEhkPMZybDJ+c3
lTU6q+t598XW5PXqaK23i8at59nHKdmmTg6uT1f342W0kF31yGTmWsief34z
PFv/cL4y6TRenI4/rG7laLwK46MRGq8+7u2vfNzbmXw4388PT06nH6Ll5cPh
x+s3588HByc3+duTq+Hh3q+Tj9f7Kwd7H5b3owa8fP58GV6+O/zcnR7uXa4d
ntysoAktfPE867w4G39cPUXD3cqHz8+v3p6f3h3sLk/fnn8cvjk5uj4Y7ucf
zk8bawfT5ZXD1YPJ25PTtQ+fdzY+fP416v/aPlg/7a6n52c7fwvfDIZ7e6fv
f3198/pdZ+fX19fLr9KT6POby/Orj3Fv2Lm5bRysnb15Mm1NPv36Kt38uPzy
4+Dl1vqzx+vdN+GTNxv94+tXMNvt8vXlP8Nu1Xr39l297Qrv+2/LfkXY+pu3
YdEqf5M2rJ+C08w1DiG0qs1aqI+DCDvsIOhaWLnAWLkEgk4JDjRvDTUtZMlF
l7QQbWFmzBTplPByJvw+TZhudYCDguK3NIsiO4dblbaNYbIdHsAJO6+2iXGo
Nao6KQnvwBCYTVIgNx9mRnHFNNOChg7VdVioCy01RSRo/tc6medKItArAqk4
EDKsYA3WDNQN05TCU2MqbaEQFs3CNpsU9qVYMkArZKaw1FCuNCvLMCbXAwxO
XM/6EPktPfK2T4uNUkaHsJuPQQB2xuUYUaPVNhEtuqp4LLbuSKaRs3oxf2bV
DHH00/UN6E2hx4014ExhpRoSsKwJAB8/kCiU4bJxJ8ujfJyzwoc58kZDpo3D
rns2J99Oi4KZHJazNF2LRTbPBkIXNDobx9IvKhI2ILh6EKe3XIRFZZWAJro8
p39QMvk9Qoxela5mYE/SIjhykiJOIUXXuRi9CouYLAwgBMQ0RhV9MK2pa0BR
d3kxfg9PQHCJ1IBhmIua+03mXWNQ5Ph1nposir7M5Chr2j7lImadGd0qds7T
JO6FPQ5y9OCiFTNnywU9pjiM3X79O3NDA3a9H/unzedr7dXVqeQVp7eYF3R2
nl8Tu3qRdde+UmLk1orimcuNGpyJEcqHVJvoLQzTnGG550IpZLtxIjcodD8D
dsMFgsy4FMfoFY6ooB9PfPKBM9gvt7wvt5ngs5Ygq8t0vGQp0lfMD5k5YHqs
cMT+/o3hQWPvUIE2UyoHwKuh4gm8FppaqlNkPCap60VA0goyd+kEWhdaslgT
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
UvgyGfOjztgI4lU1ZP8/JMXIU2hLAQA=

-->

</rfc>
