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

<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 66?>

<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) Generate Client
                                  Attestation
                                  +-------+
                                  |       |
                                  |      \ /
                              +---------------+
                              |               |
                              |               |
                              |    Client     |
                              |    Backend    |
                              |               |
                              |               |
                              +---------------+
                                 / \      |
                                  |       |
                (2) Request       |       |     (4) Respond with
                Client            |       |     generated Client
                Attestation       |       |     Attestation
                for generated     |       |
                key               |       |
                                  |       |
                                  |      \ /
                              +---------------+                          +---------------+
                              |               |                          |               |
                     +------->|               |<------------------------>|               |
  (1) Generate       |        |    Client     |    (6) Interaction       | Authorization |
  Attestation Key    |        |   Instance    |    using Client          |    Server     |
                     +--------|               |    Attestation + PoP     |               |
                              |               |    for authentication    |               |
                              +---------------+                          +---------------+
                                 / \      |
                                  |       |
                                  +-------+
                                (5) Generate
                           Client Attestation PoP
]]></artwork>
      <t>The flow starts with the Authorization Server communicating its requirements for the client authentication to the client, made available in its metadata. A Client instance that wants to request an access token from this Authorization Server needs to obtain a Client Attestation JWT, for example, from its client backend first.</t>
      <t>Therefore, the client generates a key (Client Instance Key) and (platform specific) attestations to prove its authenticity, integrity and security to the client backend (step 1). The Client instance sends this data to the client backend in request for a Client Attestation JWT (step 2). If the Client Backend successfully validates the Client Instance Key and further data, it generates a signed Client Attestation JWT (step 3). As the Client Attestation JWT is cryptographically bound to the Client Instance Key generated by the client, the attestation is bound to this particular client instance. The client backend responds to the client's request by sending the Client Attestation JWT (step 4).</t>
      <t>The client can proceed now and generate a Client Attestation Proof of Possession (PoP) for the Client Instance Key (step 5). Lastly, the client sends both the Client Attestation JWT and the Client Attestation PoP with the Token Request to the Authorization Server. The Authorization Server validates the client attestation and thus authenticates the client. The Authorization Server may continue to issue sender-constrained access tokens using <xref target="DPOP"/>.</t>
      <t>Note that the protocol for steps 2 and 4 and how the client instance authenticates with 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>A Client Attestation JWT - typically produced by the client backend.</li>
        <li>A Client Attestation Proof of Possession (PoP) - produced by the client instance.</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-in-the-token-request">
      <name>Client Authentication in the Token Request</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" is "urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation".</t>
      <t>The value of the "client_assertion" parameter contains two JWTs, separated by a '~' character. It <bcp14>MUST NOT</bcp14> contain more or less than precisely two JWTs seperated 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> 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>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"/>.</li>
            <li>The JWT <bcp14>MUST</bcp14> contain a "sub" (subject) claim with a value corresponding to the "client_id" of the OAuth client.</li>
            <li>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.</li>
            <li>The JWT <bcp14>MUST</bcp14> contain an "cnf" claim conforming <xref target="RFC7800"/> that conveys the key to be used for sender constraining tokens issued by the authorization server. The key <bcp14>MUST</bcp14> be expressed using the "jwk" representation.</li>
            <li>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.</li>
            <li>The JWT <bcp14>MAY</bcp14> contain an "iat" (issued at) claim that identifies the time at which the JWT was issued.</li>
            <li>The JWT <bcp14>MAY</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.</li>
            <li>The JWT <bcp14>MAY</bcp14> contain other claims.</li>
            <li>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.</li>
            <li>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"/>.</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>The JWT <bcp14>MUST</bcp14> contain an "iss" (issuer) claim with a value corresponding to the "client_id" of the OAuth client.</li>
            <li>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.</li>
            <li>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.</li>
            <li>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.</li>
            <li>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.</li>
            <li>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.</li>
            <li>The JWT <bcp14>MAY</bcp14> contain other claims.</li>
            <li>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.</li>
            <li>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.</li>
            <li>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"/>.</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,
}
]]></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 Client Attestation that was used for authentication when the refresh token was issued.</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>
    <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>URN: urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation</li>
          <li>Common Name: OAuth 2.0 Attested Key-Based Client Authentication</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document: TBC</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>Token Endpoint Authentication Method Name: "attest_jwt_client_auth"</li>
          <li>Change Controller: IESG</li>
          <li>Specification Document(s): TBC</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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="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="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="DPOP">
          <front>
            <title>OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP)</title>
            <author initials="D." surname="Fett" fullname="Daniel Fett">
              <organization/>
            </author>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="T." surname="Lodderstedt" fullname="Torsten Lodderstedt">
              <organization/>
            </author>
            <author initials="M." surname="Jones" fullname="Mike Jones">
              <organization/>
            </author>
            <author initials="D." surname="Waite" fullname="Daniel Waite">
              <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>
        <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 318?>

<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://wallet-provider.com",
        "sub": "https://wallet-provider.com/solution/wallet-1.6.0",
        "iat": 1541493724,
        "exp": 1516247022,
        "wallet_name": "human readable wallet name",
        "key_type" : "STRONGBOX",
        "user_authentication" : "SYSTEM_PIN",
        "attested_security_context" : "https://eu-trust-list.eu/asc/high",
        "cnf": {
                "jwk" : {
                        "kty": "EC",
                        "crv": "P-256",
                        "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
                        "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
                }
        }
}

]]></artwork>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We would like to thank
Michael B. Jones,
Torsten Lodderstedt,
and
Kristina Yasuda
for their valuable contributions to this specification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
