<?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.8 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-attestation-based-client-auth-02" 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-02"/>
    <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="April" day="21"/>
    <abstract>
      <?line 39?>

<t>This specification defines a new method of client authentication for OAuth 2.0 <xref target="RFC6749"/> by extending the approach defined in <xref target="RFC7521"/>. This new method enables client deployments that are traditionally viewed as public clients to be able to authenticate with the authorization server through an attestation based authentication scheme.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://vcstuff.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><xref target="RFC7521"/> defines a way for a client to include an assertion in a token request to an authorization server for the purposes of client authentication. This specification uses this framework to define a new assertion type that provides a way for a client instance to authenticate itself with the authorization server through an assertion that is bound to a public key (for proof of possession). This assertion is designated with the name of Client Attestation in this draft.</t>
      <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>Note that the protocol for steps (2) and (4) and how the Client Instance authenticates to the Client Backend is out of scope of this specification.  Note also that this specification can be utilized without the client having a backend server at all; in this case, each client instance will perform the functions described as being done by the backend for itself.</t>
      <t>This specification defines the format of the Client Attestation that a Client Instance uses to authenticate in its interactions with an authorization server, which is comprised of two key parts:</t>
      <ol spacing="normal" type="1"><li>
          <t>A Client Attestation JWT - typically produced by the client backend.</t>
        </li>
        <li>
          <t>A Client Attestation Proof of Possession (PoP) - produced by the client instance.</t>
        </li>
      </ol>
    </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 Key:</dt>
        <dd>
          <t>A cryptographic, asymmetric key generated by the client instance and proven to the client backend. The public key is contained in the Client Attestation JWT and is used to sign the Client Attestation Proof of Possession.</t>
        </dd>
      </dl>
    </section>
    <section anchor="client-authentication">
      <name>Client Authentication</name>
      <t>To perform client authentication using this scheme, the client instance uses the following parameter values and encodings.</t>
      <t>The value of the "client_assertion_type" parameter (as defined in <xref target="RFC7521"/>) set to "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation".</t>
      <t>The value of the "client_assertion" parameter (as defined in <xref target="RFC7521"/>) set to a value containing two JWTs, separated by a '~' character. It <bcp14>MUST NOT</bcp14> contain more or less than precisely two JWTs separated by the '~' character. The first JWT <bcp14>MUST</bcp14> be the client attestation JWT defined in <xref target="client-attestation-jwt"/>, the second JWT <bcp14>MUST</bcp14> be the client attestation PoP defined in <xref target="client-attestation-pop-jwt"/>.</t>
      <t>The following example demonstrates client authentication using this scheme during the presentation of an authorization code grant 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

grant_type=authorization_code&
code=n0esc3NRze7LTCu7iYzS6a5acc3f0ogp4&
client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
client-assertion-type%3Ajwt-client-attestation&
client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0.
eyJpc3Mi[...omitted for brevity...].
cC4hiUPo[...omitted for brevity...]~eyJzI1NiIsImtphbGciOimtpZCI6IjIyIn0.
IjIyIn0[...omitted for brevity...].
iOiJSUzI1[...omitted for brevity...]
]]></artwork>
      <section anchor="jwt-format-and-processing-requirements">
        <name>JWT Format and Processing Requirements</name>
        <t>In order to authenticate the client using this scheme, the authorization server <bcp14>MUST</bcp14> validate BOTH the JWTs present in the "client_assertion" parameter according to the criteria below.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the authorization server validate the Client Attestation JWT prior to validating the Client Attestation PoP.</t>
        <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 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>
    </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 "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation" client authentication method <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> authenticate itself to the authorization server when refreshing an access token using the "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation" authentication method. The client <bcp14>MUST</bcp14> also use the same key that was present in the "cnf" claim of the client attestation that was used for client authentication when the refresh token was issued.</t>
      </section>
      <section anchor="rotation-of-client-instance-key">
        <name>Rotation of Client Instance Key</name>
        <t>This specification does not provide a mechanism to rotate the Client Instance Key in the Client Attestation JWT's "cnf" claim. If the Client Instance needs to use a new Client Instance Key for any reason, then it <bcp14>MUST</bcp14> request a new Client Attestation JWT from its Client Backend.</t>
      </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 public key in the <tt>cnf</tt> claim). Client deployments are therefore <bcp14>RECOMMENDED</bcp14> to use different client attestations 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="sub-namespace-registration-of-urnietfparamsoauthclient-assertion-typejwt-client-attestation">
        <name>Sub-Namespace Registration of urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation</name>
        <t>This section registers the value "client-assertion-type:jwt-client-attestation" in the IANA "OAuth URI" registry established by "An IETF URN Sub-Namespace for OAuth" <xref target="RFC6755"/>.</t>
        <ul spacing="normal">
          <li>
            <t>URN: urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation</t>
          </li>
          <li>
            <t>Common Name: OAuth 2.0 Attested Key-Based Client Authentication</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document: TBC</t>
          </li>
        </ul>
      </section>
      <section anchor="registration-of-attestjwtclientauth-token-endpoint-authentication-method">
        <name>Registration of attest_jwt_client_auth Token Endpoint Authentication Method</name>
        <t>This section registers the value "attest_jwt_client_auth" in the IANA "OAuth Token Endpoint Authentication Methods" registry established by OAuth 2.0 Dynamic Client Registration Protocol <xref target="RFC7591"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Token Endpoint Authentication Method Name: "attest_jwt_client_auth"</t>
          </li>
          <li>
            <t>Change Controller: IESG</t>
          </li>
          <li>
            <t>Specification Document(s): TBC</t>
          </li>
        </ul>
      </section>
    </section>
  </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="RFC6755">
          <front>
            <title>An IETF URN Sub-Namespace for OAuth</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This document establishes an IETF URN Sub-namespace for use with OAuth-related specifications. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6755"/>
          <seriesInfo name="DOI" value="10.17487/RFC6755"/>
        </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="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="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="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 306?>

<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>-02</t>
      <ul spacing="normal">
        <li>
          <t>Add text on rotation of the confirmation 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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
YWqRNpM4VUkT0XJLpLtcubszOZ0VCSgWLhT/dHFS1Z2caWt1DRUPVVY1VDxH
dQ6j0/75bfvk5/t0//rFs+777pvu/WT4OnwxuGkPLqR/5quj+1PxXMzdTWMR
WT9/eC/fvBn/fPnT8xev3/z4+qfubDwcyFi9nqTCPT0/TLrvRyfPOi9+/qmx
NtTD+ugNCFLN6wkw+nB0e331/On1XyvowOqO+F0ZqOtOb4ej88t3N4OrfEas
tbDpZ2te2AvYMMAHYF72OmjlwLIwrcCBTqAUInHSUjId0HYnqFObHF/k0XGG
1vjsFIDKLwlMwDO3Yh7eCzM4J8zMAK3k6H7d9uxg0oiy/9TJvJFokK21N5XF
dDRfoauZDyRw03xoniFG0UlEels01PnJUu5Kv7FY++LQZ8JlmOOSe5hM1K9Z
WAyag9q63jazBRPoF4Z8W+oPMI+SOjLRlaqJRGtmXxUAismO+/JOsJv+bWG/
wJsE4cIX3pQwJDohDTqlKay1v4thmC2LP4+SDxPbn69RWoCgSYXzQuLCsL8G
MKMY7aEYDfB1R1gW/UYHubkV+j719G84Ce+HBoBWJRog0W+EiWtpgZSd5cGd
8zSW4LFOQRTHwvd3nGdk0JUbAv9jGYQ7zvNUKgECys4EtrnQ9GNM4Qpnb7lK
Pb7jXEIsz8EpPG2xl2EAiN4Z8Ts+k3ch+5EvuALGO+BJnFEYg5UM2EUIy8dL
L3FMUCl1wbAuU0G3LyHMoh2xL6mXXyJ2/gcQEYHcaUsAAA==

-->

</rfc>
