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

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

<section anchor="introduction">
      <name>Introduction</name>
      <t>The following diagram depicts the overall architecture and protocol flow.</t>
      <artwork type="ascii-art"><![CDATA[
                    (3)
                 +-------+
                 |       |
                 |      \ /
             +---------------+
             |               |
             |    Client     |
             |    Backend    |
             |               |
             +---------------+
                / \      |
            (2)  |       |  (4)
                 |      \ /
             +---------------+           +---------------+
      +----->|               |           |               |
  (1) |      |    Client     |    (6)    | Authorization |
      |      |   Instance    |<--------->|    Server     |
      +------|               |           |               |
             +---------------+           +---------------+
                / \      |
                 |       |
                 +-------+
                    (5)

]]></artwork>
      <t>The following steps describe this OAuth flow:</t>
      <t>(1) The Client Instance generates a key (Client Instance Key) and optional further attestations (that are out of scope) to prove its authenticity to the Client Backend.</t>
      <t>(2) The Client Instance sends this data to the Client Backend in request for a Client Attestation JWT.</t>
      <t>(3) The Client Backend validates the Client Instance Key and optional further data. It generates a signed Client Attestation JWT that is cryptographically bound to the Client Instance Key generated by the Client. Therefore, the attestation is bound to this particular Client Instance.</t>
      <t>(4) The Client Backend responds to the Client Instance by sending the Client Attestation JWT.</t>
      <t>(5) The Client Instance generates a Proof of Possession (PoP) with the Client Instance Key.</t>
      <t>(6) The Client Instance sends both the Client Attestation JWT and the Client Attestation PoP JWT to the authorization server, e.g. within a token request. The authorization server validates the Client Attestation and thus authenticates the Client Instance.</t>
      <t>Please note that the protocol details for steps (2) and (4), particularly how the Client Instance authenticates to the client Backend, are beyond the scope of this specification. Furthermore, this specification is designed to be flexible and can be implemented even in scenarios where the client does not have a backend server. In such cases, each Client Instance is responsible for performing the functions typically handled by the backend on its own.</t>
      <t>This approach acknowledges the evolving landscape of OAuth 2 deployments, where the ability for public clients to authenticate securely and reliably has become increasingly important.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Client Attestation JWT:</dt>
        <dd>
          <t>A JSON Web Token (JWT) generated by the client backend which is bound to a key managed by a Client Instance which can then be used by the instance for client authentication.</t>
        </dd>
        <dt>Client Attestation Proof of Possession (PoP) JWT:</dt>
        <dd>
          <t>A Proof of Possession generated by the Client Instance using the key that the Client Attestation JWT is bound to.</t>
        </dd>
        <dt>Client Instance:</dt>
        <dd>
          <t>A deployed instance of a piece of client software.</t>
        </dd>
        <dt>Client Instance Key:</dt>
        <dd>
          <t>A cryptographic asymmetric key pair that is generated by the Client Instance where the public key of the key pair is provided to the client backend. This public key is then encapsulated within the Client Attestation JWT and is utilized to sign the Client Attestation Proof of Possession.</t>
        </dd>
      </dl>
    </section>
    <section anchor="client-attestation">
      <name>Client Attestation</name>
      <t>This draft introduces the concept of client attestations to the OAuth 2 protocol, using two JWTs: a Client Attestation and a Client Attestation Proof of Possession (PoP). These JWTs are transmitted via HTTP headers in an HTTP request from a Client Instance to an Authorization Server or Resource Server. The primary purpose of these headers is to authenticate the Client Instance.</t>
      <section anchor="client-attestation-http-headers">
        <name>Client Attestation HTTP Headers</name>
        <t>A Client Attestation JWT and Client Attestation PoP JWT is included in an HTTP request using the following request header fields.</t>
        <dl>
          <dt>OAuth-Client-Attestation:</dt>
          <dd>
            <t>A JWT that conforms to the structure and syntax as defined in <xref target="client-attestation-jwt"/></t>
          </dd>
          <dt>OAuth-Client-Attestation-PoP:</dt>
          <dd>
            <t>A JWT that adheres to the structure and syntax as defined in <xref target="client-attestation-pop-jwt"/></t>
          </dd>
        </dl>
        <t>The following is an example of the OAuth-Client-Attestation header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation: eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJ\
pc3MiOiJodHRwczovL2NsaWVudC5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2x\
pZW50LmV4YW1wbGUuY29tIiwibmJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODA\
sImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiI\
sIngiOiIxOHdITGVJZ1c5d1ZONlZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiw\
ieSI6Ii1WNGRTNFVhTE1nUF80Zlk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX1\
9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
]]></artwork>
        <t>The following is an example of the OAuth-Client-Attestation-PoP header.</t>
        <artwork><![CDATA[
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwc\
zovL2NsaWVudC5leGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb\
20iLCJuYmYiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MH0.coB_mtdXwvi9RxSMz\
bIey8GVVQLv9qQrBUqmc1qj9Bs
]]></artwork>
        <t>Note that per <xref target="RFC9110"/> header field names are case-insensitive; so OAUTH-CLIENT-ATTESTATION, oauth-client-attestation, etc., are all valid and equivalent
header field names. Case is significant in the header field value, however.</t>
        <t>The OAuth-Client-Attestation and OAuth-Client-Attestation-PoP HTTP header field values uses the token68 syntax defined in Section 11.2 of <xref target="RFC9110"/> (repeated below for ease of reference).</t>
        <artwork><![CDATA[
OAuth-Client-Attestation       = token68
OAuth-Client-Attestation-PoP   = token68
token68                        = 1*( ALPHA / DIGIT / "-" / "." /
                                     "_" / "~" / "+" / "/" ) *"="
]]></artwork>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the authorization server validate the Client Attestation JWT prior to validating the Client Attestation PoP.</t>
      </section>
      <section anchor="client-attestation-jwt">
        <name>Client Attestation JWT</name>
        <t>The following rules apply to validating the Client Attestation JWT. Application of additional restrictions and policy are at the discretion of the Authorization Server.</t>
        <ol spacing="normal" type="1"><li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "iss" (issuer) claim that contains a unique identifier for the entity that issued the JWT. In the absence of an application profile specifying otherwise, compliant applications <bcp14>MUST</bcp14> compare issuer values using the Simple String Comparison method defined in Section 6.2.1 of <xref target="RFC3986"/>.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain a "sub" (subject) claim with a value corresponding to the "client_id" of the OAuth client.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "exp" (expiration time) claim that limits the time window during which the JWT can be used.  The authorization server <bcp14>MUST</bcp14> reject any JWT with an expiration time that has passed, subject to allowable clock skew between systems.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "cnf" claim conforming <xref target="RFC7800"/> that conveys the key to be used for producing the client attestation pop for client authentication with an authorization server. The key <bcp14>MUST</bcp14> be expressed using the "jwk" representation.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain an "nbf" (not before) claim that identifies the time before which the token <bcp14>MUST NOT</bcp14> be accepted for processing.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain an "iat" (issued at) claim that identifies the time at which the JWT was issued.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain other claims.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> be digitally signed using an asymmetric cryptographic algorithm. The authorization server <bcp14>MUST</bcp14> reject the JWT if it is using a Message Authentication Code (MAC) based algorithm. The authorization server <bcp14>MUST</bcp14> reject JWTs with an invalid signature.</t>
          </li>
          <li>
            <t>The authorization server <bcp14>MUST</bcp14> reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" <xref target="RFC7519"/>.</t>
          </li>
        </ol>
        <t>The following example is the decoded header and payload of a JWT meeting the processing rules as defined above.</t>
        <artwork><![CDATA[
{
  "alg": "ES256",
  "kid": "11"
}
.
{
  "iss": "https://client.example.com",
  "sub": "https://client.example.com",
  "nbf":1300815780,
  "exp":1300819380,
  "cnf": {
    "jwk": {
      "kty": "EC",
      "use": "sig",
      "crv": "P-256",
      "x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
      "y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
    }
  }
}
]]></artwork>
      </section>
      <section anchor="client-attestation-pop-jwt">
        <name>Client Attestation PoP JWT</name>
        <t>The following rules apply to validating the Client Attestation PoP JWT. Application of additional restrictions and policy are at the discretion of the Authorization Server.</t>
        <ol spacing="normal" type="1"><li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "iss" (issuer) claim with a value corresponding to the "client_id" of the OAuth client.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "exp" (expiration time) claim that limits the time window during which the JWT can be used.  The authorization server <bcp14>MUST</bcp14> reject any JWT with an expiration time that has passed, subject to allowable clock skew between systems.  Note that the authorization server may reject JWTs with an "exp" claim value that is unreasonably far in the future.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain a "jti" (JWT ID) claim that provides a unique identifier for the token.  The authorization server <bcp14>MAY</bcp14> ensure that JWTs are not replayed by maintaining the set of used "jti" values for the length of time for which the JWT would be considered valid based on the applicable "exp" instant.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> contain an "aud" (audience) claim containing a value that identifies the authorization server as an intended audience. The <xref target="RFC8414"/> issuer identifier URL of the authorization server <bcp14>MUST</bcp14> be used as a value for an "aud" element to identify the authorization server as the intended audience of the JWT.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain an "nonce" claim containing a String value that is provided by the authorization server to associate the Client Attestation PoP JWT with a particular transaction and prevent replay attacks.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain an "nbf" (not before) claim that identifies the time before which the token <bcp14>MUST NOT</bcp14> be accepted for processing.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain an "iat" (issued at) claim that identifies the time at which the JWT was issued.  Note that the authorization server may reject JWTs with an "iat" claim value that is unreasonably far in the past.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MAY</bcp14> contain other claims.</t>
          </li>
          <li>
            <t>The JWT <bcp14>MUST</bcp14> be digitally signed using an asymmetric cryptographic algorithm. The authorization server <bcp14>MUST</bcp14> reject the JWT if it is using a Message Authentication Code (MAC) based algorithm. The authorization server <bcp14>MUST</bcp14> reject JWTs with an invalid signature.</t>
          </li>
          <li>
            <t>The public key used to verify the JWT <bcp14>MUST</bcp14> be the key located in the "cnf" claim of the corresponding Client Attestation JWT.</t>
          </li>
          <li>
            <t>The Authorization Server <bcp14>MUST</bcp14> reject a JWT that is not valid in all other respects per "JSON Web Token (JWT)" <xref target="RFC7519"/>.</t>
          </li>
        </ol>
        <t>The following example is the decoded header and payload of a JWT meeting the processing rules as defined above.</t>
        <artwork><![CDATA[
{
  "alg": "ES256"
}
.
{
  "iss": "https://client.example.com",
  "aud": "https://as.example.com",
  "nbf":1300815780,
  "exp":1300819380,
  "jti": "d25d00ab-552b-46fc-ae19-98f440f25064"
}
]]></artwork>
      </section>
      <section anchor="checking-http-requests-with-client-attestations">
        <name>Checking HTTP requests feature client attestations</name>
        <t>To validate an HTTP request which contains the client attestation headers, the receiving server <bcp14>MUST</bcp14> ensure the following with regard to a received HTTP request:</t>
        <ol spacing="normal" type="1"><li>
            <t>There is precisely one OAuth-Client-Attestation HTTP request header field, where its value is a single well-formed JWT conforming to the syntax outlined in []{client-attestation-jwt}.</t>
          </li>
          <li>
            <t>There is precisely one OAuth-Client-Attestation-PoP HTTP request header field, where its value is a single well-formed JWT conforming to the syntax outlined in []{client-attestation-pop-jwt}.</t>
          </li>
          <li>
            <t>The signature of the Client Attestation PoP JWT obtained from the OAuth-Client-Attestation-PoP HTTP header verifies with the Client Instance Key contained in the <tt>cnf</tt> claim of the Client Attestation JWT obtained from the OAuth-Client-Attestation HTTP header.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="client-attestation-at-the-token-endpoint">
      <name>Client Attestation at the Token Endpoint</name>
      <t>While usage of the the client attestation mechanism defined by this draft can be used in a variety of different HTTP requests to different endpoints, usage within the token request as defined by <xref target="RFC6749"/> has particular additional considerations outlined below.</t>
      <t>The Authorization Server <bcp14>MUST</bcp14> perform all of the checks outlined in <xref target="checking-http-requests-with-client-attestations"/> for a received access token request which is making use of the client attestation mechanism as defined by this draft.</t>
      <t>The following example demonstrates usage of the client attestation mechanism in an access token request (with extra line breaks for display purposes only):</t>
      <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
OAuth-Client-Attestation: eyJhbGciOiAiRVMyNTYiLCJraWQiOiAiMTEifQ.eyJ\
pc3MiOiJodHRwczovL2NsaWVudC5leGFtcGxlLmNvbSIsInN1YiI6Imh0dHBzOi8vY2x\
pZW50LmV4YW1wbGUuY29tIiwibmJmIjoxMzAwODE1NzgwLCJleHAiOjEzMDA4MTkzODA\
sImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJjcnYiOiJQLTI1NiI\
sIngiOiIxOHdITGVJZ1c5d1ZONlZEMVR4Z3BxeTJMc3pZa01mNko4bmpWQWlidmhNIiw\
ieSI6Ii1WNGRTNFVhTE1nUF80Zlk0ajhpcjdjbDFUWGxGZEFnY3g1NW83VGtjU0EifX1\
9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
OAuth-Client-Attestation-PoP: eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwc\
zovL2NsaWVudC5leGFtcGxlLmNvbSIsImF1ZCI6Imh0dHBzOi8vYXMuZXhhbXBsZS5jb\
20iLCJuYmYiOjEzMDA4MTU3ODAsImV4cCI6MTMwMDgxOTM4MH0.coB_mtdXwvi9RxSMz\
bIey8GVVQLv9qQrBUqmc1qj9Bs

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4
]]></artwork>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="reuse-of-a-client-attestation-jwt">
        <name>Reuse of a Client Attestation JWT</name>
        <t>Implementers should be aware that the design of this authentication mechanism deliberately allows for a Client Instance to re-use a single Client Attestation JWT in multiple interactions/requests with an Authorization Server, whilst producing a fresh Client Attestation PoP JWT. Client deployments should consider this when determining the validity period for issued Client Attestation JWTs as this ultimately controls how long a Client Instance can re-use a single Client Attestation JWT.</t>
      </section>
      <section anchor="refresh-token-binding">
        <name>Refresh token binding</name>
        <t>Authorization servers issuing a refresh token in response to a token request using the client attestation mechanism as defined by this draft <bcp14>MUST</bcp14> bind the refresh token to the Client Instance, and NOT just the client as specified in section 6 <xref target="RFC6749"/>. To prove this binding, the Client Instance <bcp14>MUST</bcp14> use the client attestation mechanism when refreshing an access token. The client <bcp14>MUST</bcp14> also use the same key that was present in the "cnf" claim of the client attestation that was used when the refresh token was issued.</t>
        <section anchor="web-server-default-maximum-http-header-sizes">
          <name>Web Server Default Maximum HTTP Header Sizes</name>
          <t>Because the Client Attestation and Client Attestation PoP are communicated using HTTP headers, implementers should consider that web servers may have a default maximum HTTP header size configured which could be too low to allow conveying a Client Attestation and or Client Attestation PoP in an HTTP request. It should be noted, that this limit is not given by the HTTP <xref target="RFC9112"/>, but instead web server implementations commonly set a default maximum size for HTTP headers. As of 2024, typical limits for modern web servers configure maximum HTTP headers as 8 kB or more as a default.
## Rotation of Client Instance Key</t>
          <t>This specification does not provide a mechanism to rotate the Client Instance Key in the Client Attestation JWT's "cnf" claim. If the Client Instance needs to use a new Client Instance Key for any reason, then it <bcp14>MUST</bcp14> request a new Client Attestation JWT from its Client Backend.</t>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="client-instance-tracking-across-authorization-servers">
        <name>Client Instance Tracking Across Authorization Servers</name>
        <t>Implementers should be aware that using the same client attestation across multiple authorization servers could result in correlation of the end user using the Client Instance through claim values (including the Client Instance Key in the <tt>cnf</tt> claim). Client deployments are therefore <bcp14>RECOMMENDED</bcp14> to use different Client Attestation JWTs with different Client Instance Keys across different authorization servers.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The guidance provided by <xref target="RFC7519"/> and <xref target="RFC8725"/> applies.</t>
      <section anchor="replay-attack-detection">
        <name>Replay Attack Detection</name>
        <t>The following mechanisms exist within this client authentication method in order to allow an authorization server to detect replay attacks for presented client attestation PoPs:</t>
        <ul spacing="normal">
          <li>
            <t>The client uses "jti" (JWT ID) claims for the Client Attestation PoP JWT and the authorization server maintains a list of used (seen) "jti" values for the time of which the JWT would be considered valid based on the applicable "exp" claim. If any Client Attestation PoP JWT would be replayed, the authorization server would recognize the "jti" and respond with an authentication error.</t>
          </li>
          <li>
            <t>The authorization server provides a nonce for the particular transaction and the client uses it for the "nonce" claim in the Client Attestation PoP JWT. The authorization server validates that the nonce matches for the transaction. This approach may require an additional roundtrip in the protocol. The authorization server <bcp14>MUST</bcp14> ensure that the nonce provides sufficient entropy.</t>
          </li>
          <li>
            <t>The authorization server may expect the usage of a nonce in the Client Attestation PoP JWT, but instead of providing the nonce explicitly, the client may implicitly reuse an existing artefact, e.g. the authorization code. The authorization server <bcp14>MUST</bcp14> ensure that the nonce provides sufficient entropy.</t>
          </li>
        </ul>
        <t>The approach using a nonce explicitly provided by the authorization server gives stronger replay attack detection guarantees, however support by the authorization server is <bcp14>OPTIONAL</bcp14> to simplify mandatory implementation requirements. The "jti" method is mandatory and hence acts as a default fallback.</t>
      </section>
    </section>
    <section anchor="appendix-a-iana-considerations">
      <name>Appendix A IANA Considerations</name>
      <section anchor="registration-of-attestjwtclientauth-token-endpoint-authentication-method">
        <name>Registration of attest_jwt_client_auth Token Endpoint Authentication Method</name>
        <t>This section registers the value "attest_jwt_client_auth" in the IANA "OAuth Token Endpoint Authentication Methods" registry established by OAuth 2.0 Dynamic Client Registration Protocol <xref target="RFC7591"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Token Endpoint Authentication Method Name: "attest_jwt_client_auth"</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): TBC</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="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="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="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9112">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="ARF">
          <front>
            <title>The European Digital Identity Wallet Architecture and Reference Framework</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 351?>

<section anchor="additional-examples">
      <name>Additional Examples</name>
      <section anchor="wallet-instance-attestation">
        <name>Wallet Instance Attestation</name>
        <t>This non-normative example shows a client attestations used as an wallet instance attestation in the context of eIDAS 2.0 <xref target="ARF"/>, e.g. to secure a Type-1 configuration credential. The additional claims describe the wallet's device binding und user binding capabilities and the achievable level of assurance.</t>
        <artwork><![CDATA[
{
        "typ": "wallet-attestation+jwt",
        "alg": "ES256",
        "kid": "1"
}
.
{
        "iss": "https://attestation-service.com",
        "sub": "https://wallet-provider.com",
        "iat": 1541493724,
        "exp": 1516247022,
        "attested_security_context" : "https://eu-trust-list.eu/asc/high",
        "cnf": {
                "jwk" : {
                        "kty": "EC",
                        "crv": "P-256",
                        "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
                        "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
                },
                "key_type" : "STRONGBOX",
                "user_authentication" : "SYSTEM_PIN"
        }
}

]]></artwork>
      </section>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>remove usage of RFC7521 and the usage of client_assertion</t>
        </li>
        <li>
          <t>add new header-based syntax introducing Oauth-Client-Attestation and OAuth-Client-Attestation-PoP</t>
        </li>
        <li>
          <t>add Client Instance to the terminology and improve text around this concept</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>add text on the inability to rotate the Client Instance Key</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Updated eIDAS example in appendix</t>
        </li>
        <li>
          <t>Removed text around jti claim in client attestation, refined text for its usage in the client attestation pop</t>
        </li>
        <li>
          <t>Refined text around cnf claim in client attestation</t>
        </li>
        <li>
          <t>Clarified how to bind refresh tokens to a Client Instance using this client authentication method</t>
        </li>
        <li>
          <t>Made it more explicit that the client authentication mechanism is general purpose making it compatible with extensions like PAR</t>
        </li>
        <li>
          <t>Updated acknowledgments</t>
        </li>
        <li>
          <t>Simplified the diagram in the introduction</t>
        </li>
        <li>
          <t>Updated references</t>
        </li>
        <li>
          <t>Added some guidance around replay attack detection</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank
Brian Campbell,
Francesco Marino,
Guiseppe De Marco,
Kristina Yasuda,
Michael B. Jones,
Takahiko Kawasaki
and
Torsten Lodderstedt
for their valuable contributions to this specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
