<?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-12" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>OAuth 2.0 Attestation-Based Client Authentication</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-12"/>
    <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="October" day="13"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <abstract>
      <?line 93?>

<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, as 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 97?>

<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., the Client Attester) to correlate which Holder (i.e., the client) interacts with which Issuer (i.e., the Authorization Server) and potentially observe the credentials or metadata being issued. This specification establishes a mechanism for backend-attested client authentication through the front channel to address these issues.</t>
      <t>Additionally, this approach acknowledges the evolving landscape of OAuth 2.0 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 a mobile native app, 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 and minimizes the effort required by 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.0 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.0 client authentication mechanism or as an additional, supportive security mechanism beside an existing OAuth 2.0 client authentication mechanism.</t>
      <t>This specification introduces the concept of client attestations to the OAuth 2.0 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 and Authorization Grants <xref target="RFC7521"/>, as the Client Attestation is transferred in HTTP header fields, which is incompatible with the mechanisms defined by that framework.</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 a 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 Instance. 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 obtains a Challenge from a previous response (see <xref target="challenges"/>).</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>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 steps (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>
          <li>
            <t>optionally, further characteristics of the Client Instance (e.g., the criteria or policy against which the Client Instance was evaluated)</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, state, or other characteristics 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>An asymmetric cryptographic 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 parameter <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 parameter <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 <tt>jwk</tt> representation.</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 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 is a non-normative example of the decoded header and payload of a JWT meeting the processing rules 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 HTTP header fields 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 a non-normative example of the <tt>OAuth-Client-Attestation</tt> HTTP header field.</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 <tt>OAUTH-CLIENT-ATTESTATION</tt>, <tt>oauth-client-attestation</tt>, etc., are all valid and equivalent header field names. Case is significant in the header field value, however.</t>
      <t>The <tt>OAuth-Client-Attestation</tt> HTTP header field is a Structured Field <xref target="RFC9651"/> whose value is an Item of type Token (see <xref section="3.3.4" sectionFormat="of" target="RFC9651"/>) containing the JWT in compact serialization. The Item <bcp14>MUST NOT</bcp14> have any parameters.</t>
    </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 parameter <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 parameter <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 a separate JWT 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 <tt>iat</tt> 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 <tt>cnf</tt> 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 is a non-normative example of the decoded header and payload of a JWT meeting the processing rules 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 HTTP header fields 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 a non-normative example of the <tt>OAuth-Client-Attestation-PoP</tt> HTTP header field.</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 <tt>OAUTH-CLIENT-ATTESTATION-POP</tt>, <tt>oauth-client-attestation-pop</tt>, etc., are all valid and equivalent header field names. Case is significant in the header field value, however.</t>
        <t>The <tt>OAuth-Client-Attestation-PoP</tt> HTTP header field is a Structured Field <xref target="RFC9651"/> whose value is an Item of type Token (see <xref section="3.3.4" sectionFormat="of" target="RFC9651"/>) containing the JWT in compact serialization. The Item <bcp14>MUST NOT</bcp14> have any parameters.</t>
      </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 this 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:</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>The decoded header of the combined DPoP proof in this example is:</t>
        <sourcecode type="json"><![CDATA[
{
  "typ": "dpop+jwt",
  "alg": "ES256",
  "jwk": {
    "kty": "EC",
    "crv": "P-256",
    "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
    "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
  }
}
]]></sourcecode>
        <t>The decoded payload of the combined DPoP proof in this example is:</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 a Challenge is provided, the Client <bcp14>MUST</bcp14> include it 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 a <tt>use_attestation_challenge</tt> error as 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 used to provide a DPoP nonce in the <tt>DPoP-Nonce</tt> HTTP header field (see <xref target="challenge-endpoint"/>).</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 an HTTP header field. The HTTP header field <bcp14>MUST</bcp14> be named <tt>OAuth-Client-Attestation-Challenge</tt> and contain the value of the Challenge.</t>
        <t>The following is a non-normative example of a token 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>A request for a Challenge is made by sending an HTTP POST request to the URL provided in the <tt>challenge_endpoint</tt> metadata parameter of the Authorization Server or Resource Server. 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 (OK) status code and the following parameters included in the message body of the HTTP response using the <tt>application/json</tt> media type:</t>
        <ul spacing="normal">
          <li>
            <t><tt>attestation_challenge</tt>: <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"/>. This parameter is not required in other circumstances in order to preserve the ability to use the challenge endpoint for 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>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>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
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> HTTP request header field and a DPoP proof, but no <tt>OAuth-Client-Attestation-PoP</tt> HTTP request 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 <tt>alg</tt> JOSE Header Parameter contains a registered algorithm <xref target="IANA.JOSE.ALGS"/>, is not <tt>none</tt>, 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"/>. See <xref target="client-attestation-as-client-auth"/> for how this parameter is used when the Client Attestation is used as an OAuth Client Authentication mechanism.</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 <tt>alg</tt> JOSE Header Parameter contains a registered algorithm <xref target="IANA.JOSE.ALGS"/>, is not <tt>none</tt>, 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 matches a Challenge provided by the server.</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 in the <tt>challenge</tt> claim, is within an acceptable window per local policy of the Authorization Server or Resource Server.</t>
          </li>
          <li>
            <t>The <tt>aud</tt> claim in the Client Attestation PoP JWT identifies the receiving server: when validated by an Authorization Server, it is the issuer identifier URL of the Authorization Server as described in <xref target="RFC8414"/>; when validated by a Resource Server, it is 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> ensure the following conditions and rules are met:</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>The DPoP proof is valid 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 is identical to the public key in the <tt>cnf</tt> claim of the Client Attestation JWT. Note that this is not a comparison of the serialized JWKs, but a comparison of their JWK Thumbprints <xref target="RFC7638"/> or of the required members for the key type (e.g., <tt>kty</tt>, <tt>crv</tt>, <tt>x</tt>, <tt>y</tt>).</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-error"/>). 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 do not match, or the proof of possession is not supported.</t>
          </li>
        </ul>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> return these error codes with an HTTP 400 (Bad Request) status code and <bcp14>MAY</bcp14> return a status code 401 (Unauthorized) for <tt>invalid_client_attestation</tt>.
Resource Servers <bcp14>SHOULD</bcp14> return them with an HTTP 401 (Unauthorized) status code and convey the error code in the error parameter of the <tt>WWW-Authenticate</tt> HTTP header field as described in <xref section="3" sectionFormat="of" target="RFC6750"/>.</t>
        <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 regarding when to return suitable error responses.</t>
      </section>
      <section anchor="client-attestation-as-client-auth">
        <name>Client Attestation as an OAuth Client Authentication Method</name>
        <t>A Client Attestation may be used as an OAuth 2.0 client authentication method 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 an 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.0 client authentication methods.</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 requirement 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 <tt>client_secret</tt> client authentication (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

someparameter=value&otherparameter=foobar
]]></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 Attestation-Based Client Authentication using a Client Attestation PoP JWT as the PoP by including the value <tt>attest_jwt_client_auth</tt> in the <tt>token_endpoint_auth_methods_supported</tt> parameter of its published metadata. The Authorization Server <bcp14>SHOULD</bcp14> communicate support for Attestation-Based Client Authentication using a DPoP proof as the PoP by including the value <tt>attest_jwt_client_auth_dpop</tt> in the <tt>token_endpoint_auth_methods_supported</tt> parameter of 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 method if either of these values is present in <tt>token_endpoint_auth_methods_supported</tt>.</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 determine whether its Client Attestation is understood by the Authorization Server or Resource 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. However, this approach has the following benefits:</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 performed 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 a Client Instance to reuse a single Client Attestation JWT in multiple interactions or requests with an Authorization Server or Resource Server, while producing a fresh proof of possession for each request. 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 reuse 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 defined by this specification <bcp14>MUST</bcp14> bind the refresh token to the Client Instance, and not just to 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 to the client as specified in <xref target="RFC6749"/>. Note that this only applies if Attestation-Based Client Authentication is used as a client authentication method. Examples of these artifacts include but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>authorization_code</tt> as specified in <xref section="4.1" sectionFormat="of" target="RFC6749"/>.</t>
          </li>
          <li>
            <t>The <tt>auth_req_id</tt> as specified in Section 7.3 of <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 <tt>authorization_code</tt> involves the Client Instance using client attestation before the user is redirected to the authorization endpoint (e.g., by using PAR <xref target="RFC9126"/>), and proving binding of the <tt>authorization_code</tt> 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 header fields, 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. Note that this limit is not imposed by HTTP/1.1 <xref target="RFC9112"/>; rather, web server implementations commonly set a default maximum size for HTTP headers. Typical modern web servers configure a default maximum HTTP header size of 8 kB or more.</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 <tt>cnf</tt> 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>
        <t>A Client Instance <bcp14>SHOULD</bcp14> keep track of which Client Instance Key each bound protocol artifact (e.g., a refresh token, see <xref target="refresh-token-binding"/>) is bound to. Rotation of Client Instance keys can be controlled by an underlying platform and the Client <bcp14>SHOULD</bcp14> be able to detect that a key got rotated and identify the artifacts that were bound to the old key.</t>
      </section>
      <section anchor="implementation-consideration-replay">
        <name>Replay Attack Detection</name>
        <t>Authorization Servers 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 a prefix tree) or a Patricia trie (also called a 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">
        <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.4" sectionFormat="of" target="RFC7515"/> and <xref section="4.1.2" sectionFormat="of" target="RFC7515"/>, respectively. 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="tracking-as-rs">
        <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>
        <t>Implementers should be aware that using multiple client attestations to multiple Authorization Servers or Resource Servers could result in correlation of the End-user using the Client Instance through shared claim values, such as <tt>iat</tt> and <tt>exp</tt> claims. When set with fine granularity, their values would match for a batch of Client Attestations issued at the same time. The Client Attester <bcp14>SHOULD</bcp14> randomize or round these values (e.g., round down values of <tt>iat</tt> to 24:00 UTC).</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 Server or Resource Server <bcp14>SHOULD</bcp14> implement measures to detect replay attacks. In the context of this specification, this means detecting that an attacker is resending the same Client Attestation PoP JWT in multiple requests. The following options are <bcp14>RECOMMENDED</bcp14> for this client authentication method:</t>
        <ul spacing="normal">
          <li>
            <t>The Authorization Server or 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 Server or Resource Server. If a Client Attestation PoP JWT is replayed, the Authorization Server or Resource Server recognizes the <tt>jti</tt> value in the list and responds with an authentication error. Details on how to implement such a data structure to maintain <tt>jti</tt> values are given in <xref target="implementation-consideration-replay"/>.</t>
          </li>
          <li>
            <t>The Authorization Server or Resource Server provides a Challenge to the Client Instance via the challenge endpoint (see <xref target="challenge-endpoint"/>) and the Client uses it as a <tt>challenge</tt> value in the Client Attestation PoP JWT. The Authorization Server or 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 on how to implement such a data structure to maintain <tt>challenge</tt> values are given in <xref target="implementation-consideration-replay"/>. This guarantees stronger replay protection with a challenge chosen by the Authorization Server or 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 Server or Resource Server.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>The Authorization Server or 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 Server or Resource Server sends the challenge as part of a 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 Servers or 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 <tt>iat</tt> time to the time at the server. Challenges created in this way yield the same result even in the face of arbitrarily large clock skews.</t>
        <t>In any case, the Authorization Server or Resource Server <bcp14>SHOULD</bcp14> ensure the freshness of the Client Attestation PoP by checking that either the <tt>iat</tt> claim or, if present, the server-provided challenge is within an acceptable time window.</t>
        <t>The approach using a challenge explicitly provided by the Authorization Server or Resource Server gives stronger replay attack detection guarantees; however, support by the Authorization Server or 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 (MACs) 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 cases.
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. Most deployments are expected 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 anchor="trust-in-client-attestation-content">
        <name>Trust in Client Attestation Content</name>
        <t>All claims conveyed in a Client Attestation JWT, including any additional claims about the integrity, state, or other characteristics of the Client Instance, are assertions made by the Client Attester.
An Authorization Server or Resource Server should rely on such claims only to the extent that it trusts the issuing Client Attester to make those statements.</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> define 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 field.</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 with this document. The flow specified in this specification relates to the "Passport Model" in RATS. However, while the RATS ecosystem defines explicit methods and values for 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: IETF</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: IETF</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 header fields 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>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 to convey a Client Attestation PoP</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="RFC9651">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </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="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </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 1076?>

<section anchor="document-history">
      <name>Document History</name>
      <t>-12</t>
      <ul spacing="normal">
        <li>
          <t>editorial pass</t>
        </li>
        <li>
          <t>make <tt>iat</tt> claim of  Client Attestation JWT <bcp14>REQUIRED</bcp14></t>
        </li>
        <li>
          <t>added text on HTTP status codes for the errors</t>
        </li>
        <li>
          <t>add implementation consideration on key binding of artifacts</t>
        </li>
        <li>
          <t>header field syntax now uses Structured Fields instead of token68</t>
        </li>
        <li>
          <t>"Structured Type" is removed from the Challenge IANA registration</t>
        </li>
        <li>
          <t>add cross-reference to the client authentication section</t>
        </li>
        <li>
          <t>add privacy considerations on temporal claims as correlation factors</t>
        </li>
        <li>
          <t>add security consideration on trust in Client Attestation content</t>
        </li>
      </ul>
      <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 duplicate challenge verification in Verification of Client Attestation PoP JWT</t>
        </li>
        <li>
          <t>fix IANA registry entries</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 of 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 its 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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
YFadzrvAPrzFg53dacawB+4NrArAN/B0cLBzKTieWNXwxwHanGBna99wX0sW
bQQrja/0JT4JZO0huqExQLGBQ05jihjehRy8o+P6AXl9PDBFVIOQebBwEvJq
+5M49QOWLElGD8NC4TnAQxnqGKOUox2E9NuQfdytzy3PWwBWuqDTRNwcE9RV
eBCYEj64d7y68Zg/uYkC/GRlZaH1pdXl4YBcLVjRyjxgV3bT7adDfhVuFjy2
srm5uv5kc2Nrgz6ECwsfrm6sbj15/Hhta50+BLIFH34m9+MC3F79Cy6gmNCS
dmlQ+gjIEn4EaGI+62e3+Nm7jlo5fXqPn531X58dPv2wvu8/3Xl/vnZ9f7B+
t3by6vnZzuZwEp6++Gnyouhcfpzcjn4yb9Kkg85e5+r93trJzvnru6uz261R
eL11uPM03zr+eevn/PDtk+X7jc3r5yeTU47k/tLC/7+ww/QchWUmS/UACuLY
KqdhivSMLGFm+thGcVfday3fIxpLDIfymRliWVuZd0HMvSNB3tZ6Lr4Cp5sH
q88sGNv0xrYXTl4thz/vRG+jV7fvfz5b9ndXrnsv4riX/FS8//lo+cPPh8vw
76i3ut4C0AbL+9Fd9P78Ptm/TqOjs4PJ4cn76M3uq8w//wkG2b8/OH611YVR
PwXn+zhqGrw8uut/Sm/frB7m/vlZaxzsbsThi+dF/8V9/GZ4eNs73s/3h/FV
sLv/+OCkv3Zw/dP64afTjcPju+jDz1d3MBPMsr/x9tn71YNPN8sw23WrN3wf
vQVhA5aU7V+PNveHxXJ4vP94/+bsGS4x+PkwxiX2V+OElrz2ahV/P91dVkte
32/BB2fDwzdnNxu759dHr96fvnp6ftb/5CdXh4cv+5/O9kYvzm721no/x/HZ
aXAUngbLb86DQfjzh7tTXHVyA1tsvRq+OT0t/Ofx84OVo6dny8Wa//zD6tuf
n8b+dfz2p9NXn96eHb5/e3b16eTmyfrBy8uVw1UY+GV8tp+sbA1+6n48OV5v
BZ03O8lRfBccbm3eRWdJvP5pc3fr8na4vrF/nnWe3r44+RR+8F8WH4rLww9P
nlzefsrS07U3e/Hpu97l8/Wb8+jjs9bzt0fJ60/5/cZk/HiH74xxLSCZ5eDm
lRWUSUo4iqlWObum/TzsgAaOEfyIgH8GhRux7vTkZWf3zf7e4Uln5+Rk7/hk
B+1AF+1mvQG+C4t+l70LSPeZCZB/9ZdxBL/h/awvo+vt+hTXS3yLHAsUh8gh
i/bjJEKTaz00MZrz3BC+cMdFNqbAp0CSnxhMjzdWyAiIgZ4srEcUALUPIiNd
R4xqFHaF3isT07jWXeuuS1QjD7OkxBBFJsgmklB8qg8cM0fDbSz0iBkvTaOs
heL3SCaelaaEiqvLdPMZnWhfpmZpYGwgW53ZvSTsr2o9ICO/074lomjbBC2K
YFudEgY4JUsF7pwcfn5eSw7ALLcvsOK3JBmU3qdgDFF4cjKp8cu2/OdYuR0v
hxvEGMCqr9XWB70dgC05i0yEJwE/CIewiILEcmt4R1ABheyTG1w0AGUgEtRl
ZYKl4bIFz2Xhkclpq+jcowjXrKOZ0ADmukpQTUSs7F9FcAVA85F4WJRdE1jQ
KJXwGdvF7fRkc8R1Ax7gGaDmmdg31wBKwstV5srU4+h6xxRsUz5jJhFAaUCc
YekYBsso/ZDZeZShN0380NqH74w2V2TBB9RIL9GHD2NdMGHC3JSPooTjyxcE
64YvP8IsqCgrcPl5RyVBkOf/B6fdSClpTtsRDDjdfoRv/wvakHDjZEf6rRiA
ENDfYgTyx4FjC/AhbEEyuRosBcxKWDmiiPlBFCp7KMxOB65ywYRMUOAVSb+a
daC5mbRx3mmDSMuOQUILzEoGdsamGDNz5p0evVHzOKVidbYI1IdWUZef9fyY
vQzzq6iHhhU4tUo9+TROxEFfAkAOYZOoPAXNP8vbosZrYws8GCKSFaE2rlCk
ACfmEcJeF1H9tPFDvhVmLw1nPk6iX8alPSum24CZc6neGFIh3gCx1+DKGM8G
5IS2bORiOKfIf0XYVHZDR5nw+M7ye0v/IFMPnqNl7vHKQTGzwoIjEI31QxnE
eK28PvsG5nA2mIGVJpSaNWCvLrFBP+fD11wSAKC8n8o8qL/yFvXPDTggDpDy
5JqdT8k9cm1ToY9KsDE5ss2+I7ko/4MNaaxl+1O8e5oHfKPRTKFNlLDSoi1o
xjBmOfIUv6HYmIkmj2ofSg6M075fqEQmpzxYFiEbXWvrv5vmvtY0pwQRh3nO
2OOAY9j2OD+v2+KAxOIjwepGsLzs9zobG6u9zvrjQb/jhytbna0ng/X15cHq
xvLj9SnGO00zcKyN/oq/Fa4sd1a3BoPOeh8G9MPNtc7GZn95i/7qry98N1uY
Ypu/IXtYB9b0XW1iNODcdjF8a3bbWKu3ul70X2zdvV4drQW7aM16nn+YkDHq
5OD6dHU/WUaT2FVANjLbJPb805vh2fr785W7XuvF6fj96laB1io/ORqhterD
s/2VD8927t6f7xeHJ6eT99Hy8uHww/Wb8+fxwclN8fbkanj47Ke7D9f7KwfP
3i/vRy14+fz5Mrx8f/ipPzl8drl2eHKzgjYz/8XzvPfibPxh9RQtdSvvPz2/
ent+en+wuzx5e/5h+Obk6PpguF+8Pz9trR1MllcOVw/u3p6crr3/tLPx/tNP
0eCn7sH6aX89Oz/b+cV/Ew+fPTv9+afXN6/f9XZ+en29/Co7iT69uTy/+pAE
w97Nbetg7ezNk0nn7uNPr7LND8svP8Qvt9b3Hq/33/hP3mwMjq9fwWy3y9eX
/xBDVefd23fTjFVIF35rBqsG9P0fb7T6wTvNbWsQDu22Y6ECDkLpsIe0voOF
GrRZS1ZtlR1Be9ZQkTCWRVQZD9EEpsZCkcIIL+fCwbOUKUwPeCIodUvTCKll
z3LlpGOMbo8HsELe3UYwjvZGNSYjcRzoODM6CiJnA0hOoc0004KCDpWxWGgK
a9U1M2j+1yrV6Eqi3y15SkU0ceCjX6PopTopfT/LKDY2oVIeIQKjXdlnm+K5
QubsaHfU2pawoBwDgkuQwZmbWdZSKWK+tH+Vy8+p3HA9QKa1xuWgUK2ythEv
+mH1XEydlXxKUi88/2fmPoikH69vQL3wS1xUQc4YMEonru7dyrK6dHz+QDxQ
LMvHvbyIinHBOhwm/mv1lzYOuw5MoQEzLQpWclrW0lTtGdk8mwRt0KgMIRRm
eVjitzHBtQRxesvGWNQ/CWiiqHPyCWXHPyB8qFWpWg3mJA2GI52v4hQSNZUI
EjhsYLIwgFA4wquUFPGkoVgDRdMV1bg8PAFdFwJGBcFDNNevMuhqEyJHz/PU
ZEMsyzqW/qWMTzZiNhnOja5mPU1U2A84eLEEl65Stqw9V3ST6jhm/83vzAwO
2PZ+Uj5uKYSjTdRN2e6141ssKno4z6/IXTNv3TWv1DissYyULORatc3FxFSG
VJcoLgzTnmKs50IwZI+xwi8ocSAHhsMVkfS4FKBYKobhICBPyvQDZzBfbpW+
3GaSz+K9rC5XgZC1GF4xKeT6gOmxyhGX96+NCQp9hyGoIfYZWnhIpSB4LTS1
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
wUCH+8VHkPd+pPKj/7a282+rz+E/HkCTkDS7xA97Laona5yrP75e7cRF/8ka
iD7rV8v9rbvHe8e7H7O9g5NXaz2gK+Pdl34avl4pnpxW3xVJ60csCQtb66do
XeiTN7tjKb4my++7EXThJlVd9LsQ41H0CMSXLH+EUkuVKGffRpRLqt22x5U3
vOHzj1vdpxuDznp35dUvB83lA36n6b/T9H8GTV979T+Mpp9edW6PJsnJixc7
Rx8Of4muX0zS26cHw497+c8bv4yXB5fLZy/enR3lo5XsVSt4vpntxb0P/b3b
5d2d4tNw4+bnq+vjn1++f3G/d9Zb3t98uR+ePj8Cmp6nw1BrYz+SmPsHsvSZ
Dwdp2vMzsZU2G3NqdjRlRfpsd1SdVitHVDugQ8NxQrpLqVKMjSdP/dxSbMoS
rCqzOF3tISUVfq0ZyiQbvilrVnncuOSQCjziND+HCarkoHab0Kak239niDjU
9LkhIKnBvxYY+iUtn0sfcdu4TAp/OAFlihBRbdR+eplgm8xZAUStd6c6mqOB
Ckdjdq76LuW2BQOAMiNA5qz90IwHdk4IywWusLzeRLWKcZiYqJtVcvkRxvnI
e7JPjrLEGwxT09+UbIHm06YSARiLkNsCklQMpzwGK0bVVY2A+3raDSgbEcRZ
iihKqdRM+cRLeIh6PVUKTL3LsODarS5JjuS0IBoMwoy+0kfyFS0ctenrH3hW
jeekYqymhfQbs0QuHXy/fs/Bw2ttDjyGtXLZmFnC6iuNiOav4WabgqJyAdCv
sGm7Yi6aHYxLU2BsWa6+0e3TLqfTlT0pTZCVkREk2i0i6PVwtTneVhXausgn
BcPMsaWaA+vhYnXdRgum3XaeY5Z/Q64eavkgNMsIXmLMLQlfjlopQtDqCJDr
cGw29FvstEfs1Mkzu96OKydpc2NrBbMUq7Pp3n46GpQ+xlsZl2shqlbOeTgY
xxSTZyXsTBJ/GPUVEI4Yohr2RdpPYxVr2QsRoSvNxq366Ia5Y8UwCtnn0k+Y
+N73R1yODPOF/EsMDpuzd3V54+a2Gyl5qYkLUikd9M5nnEKsy+RdRgiNvMrZ
4MCGI/a0lY/IClAoN2Wa8YwrF8iBqFHC/gexoGsRZAYZG51h3yh9XjQjde3i
M2JysKciudXMhSlXxMpe4AqB8/Jtu9+4RWNLtJdsN0J1X50fS+qwYGktL6Ga
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
+v1/sCGOeV1WAQA=

-->

</rfc>
