<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ekahraman-oauth-attestation-authz-native-app-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Attested Authorization for Native Apps">OAuth 2.0 Attestation Based Authorization for Native Applications</title>
    <seriesInfo name="Internet-Draft" value="draft-ekahraman-oauth-attestation-authz-native-app-01"/>
    <author fullname="Efe Kahraman">
      <organization>Mekarge</organization>
      <address>
        <postal>
          <street>190 Urla</street>
          <city>Izmir</city>
          <code>35450</code>
          <country>TR</country>
        </postal>
        <email>efe@mekarge.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="20"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>attestation</keyword>
    <keyword>authorization</keyword>
    <abstract>
      <?line 76?>

<t>This document defines an extension to OAuth 2.0 <xref target="RFC6749"/> that enables Authorization Servers to consider Attestation Results presented by Native Applications when issuing access grants. By incorporating information about the security characteristics of the application and its execution environment, this mechanism supports Authorization Policies that are tailored to the trustworthiness of the Native Application.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mekarge.github.io/draft-ekahraman-oauth-attestation-authz-native-app/draft-ekahraman-oauth-attestation-authz-native-app.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ekahraman-oauth-attestation-authz-native-app/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        oauth Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mekarge/draft-ekahraman-oauth-attestation-authz-native-app"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines an extension to OAuth 2.0 <xref target="RFC6749"/> that enables Authorization Servers to consider Attestation Results presented by Native Applications when issuing access grants. By incorporating information about the security characteristics of the application and its execution environment, this mechanism supports Authorization Policies that are tailored to the trustworthiness of the Native Application.</t>
      <t>Consider a scenario where a Native Application is authorized to perform sensitive operations on behalf of a user, such as accessing financial information or initiating transactions. The application may execute on a device that has been modified or is running software capable of monitoring, intercepting, or influencing the application's execution environment. In such cases, information processed by the application or exchanged with remote services may be modified or misused by unauthorized parties. Consequently, authorization decisions based solely on the identity of the user may not accurately reflect the security posture of the requesting environment.</t>
      <t>The Zero Trust Architecture <xref target="ZTA"/> suggests that access to a protected resource should be granted by a policy which is evaluated on multiple attributes of the subject. In this regard, granting access to a resource may be determined by a set of attributes including device characteristics and software metadata. This leads to a need for a policy decision algorithm consuming vectors of attributes.</t>
      <t>Thinking of Remote Attestation Procedures (RATS) Architecture <xref target="RFC9334"/> through the lens of Zero Trust Architecture brings a perspective to further break down the abstract concept of policy decision. It is then possible to conceptualize the subject as Attester which is the device being evaluated. And the Policy Decision Point can be mapped to the Relying Party. This mapping allows reuse of existing standardized roles and flows defined in RATS to design the policy decision functionality.</t>
      <t>OAuth 2.0 <xref target="RFC6749"/> is an effective way to ground these abstract concepts into operational implementation. The combination of the Native Application, user's device, and relevant Attesting Environments may collectively act as the Attester. The Authorization Server on the other hand relates to the concept of Relying Party.</t>
      <t>This document defines a mechanism to pass the Attestation Result, signed by the Verifier, to the Authorization Server during token exchange for Native Application Clients. Access tokens are issued only with the scopes permitted by Authorization Decisions derived from the Attestation Result. The flow specified in this document relates to the "Passport Model" in RATS as the Attestation Result is transported to the Authorization Server without requiring direct communication between the Authorization Server and Verifier.</t>
      <artwork type="ascii-art"><![CDATA[
+---------------+               (A)   +---------------+
|               +-------------------->|               |
|    Client     |               (B)   |   Verifier    |
|               |<--------------------+               |
+-----------+---+                     +---------------+
    ^       |
    |       |
    |       |                         +---------------+
    |       |                   (C)   |               |
    |       +------------------------>| Authorization |
    |                           (D)   |     Server    |
    +---------------------------------+               |
                                      +---------------+
]]></artwork>
      <t>This flow includes the following steps:</t>
      <t>(A) Client sends all collected Evidence to the Verifier. Client <bcp14>MAY</bcp14> cryptographically protect the integrity and authenticity of the request. It's <bcp14>RECOMMENDED</bcp14> to use HTTP Message Signatures <xref target="RFC9421"/> for the signing implementation and HTTPS as the underlying protocol. The message structure is beyond the scope of this document.</t>
      <t>(B) Verifier creates an Attestation Result based on the Evidence. Verifier <bcp14>MUST</bcp14> sign the Attestation Result with a cryptographic key. For asymmetric keys, Verifier <bcp14>MUST</bcp14> share the public key with Authorization Server. For both asymmetric and symmetric keys, key establishment protocol is beyond the scope of this document. Verifier <bcp14>MUST</bcp14> make the response uncacheable by adding a <tt>Cache-Control</tt> header set as <tt>no-store</tt>.</t>
      <t>(C) Client sends the token request to Authorization Server with additional parameters including the Attestation Result. This document defines necessary extensions in <xref target="ext"/>.</t>
      <t>(D) The Authorization Server gathers Authorization Policies for each requested scope. For each Authorization Policy, Authorization Server obtains Trust Decisions by evaluating the corresponding Trust Assessment. Trust Assessments are predicates using the Attestation Result provided by the client. After each Authorization Policy is evaluated, Authorization Server determines scopes based on Authorization Decisions and issues the access token accordingly.</t>
      <t>Client <bcp14>MAY</bcp14> cache the Attestation Result received from the Verifier for different token requests. In this case, client <bcp14>SHOULD</bcp14> cache the Attestation Result with a short expiry time. Authorization Server <bcp14>MAY</bcp14> reject the token request if the freshness of the Attestation Result doesn't meet system requirements.</t>
      <t>This document does not standardize Evidence collection, Verifier interfaces, or Attestation Result formats. It defines only how an Authorization Server consumes Attestation Results during authorization.</t>
      <section anchor="related-work">
        <name>Related Work</name>
        <t>A related approach is defined in <xref target="I-D.ietf-oauth-attestation-based-client-auth"/>, which specifies how a client instance can present a key-bound client attestation together with proof of possession to an Authorization Server or Resource Server. The mechanism can be used for OAuth client authentication or as an additional security signal providing assurance about the client instance.</t>
        <t>The primary distinction is the function performed using the attestation information. <xref target="I-D.ietf-oauth-attestation-based-client-auth"/> primarily establishes assurance about a client instance and binds its client attestation to a client instance key, possession of which is demonstrated during the protocol exchange. This document instead specifies how a Verifier-issued Attestation Result is consumed as an input to Authorization Policies and how the resulting Authorization Decisions affect the scopes granted to a Native Application. Consequently, client instance authentication or assurance established by <xref target="I-D.ietf-oauth-attestation-based-client-auth"/> does not replace the authorization processing defined by this document.</t>
        <t>The two mechanisms can therefore be combined in deployments that require both client-instance assurance and attestation-based authorization. Where a client-held key is bound to attestation information and proof of possession is required, the key binding can additionally provide continuity between the attested client instance and the client participating in the OAuth exchange, while the Attestation Result continues to provide the assertions evaluated by the Authorization Server when making authorization decisions.</t>
        <t>This document does not define a common Attestation Result format or claim vocabulary; interoperability at those layers therefore depends on deployment agreement, as discussed in <xref target="interop"/>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The reader is assumed to be familiar with the vocabulary and concepts defined in OAuth 2.0.</t>
      <t>The following term is imported from <xref target="ZTA"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Policy Decision Point</t>
        </li>
      </ul>
      <t>The following terms are imported from <xref section="4" sectionFormat="of" target="RFC9334"/>:</t>
      <ul spacing="normal">
        <li>
          <t>Attesting Environment</t>
        </li>
        <li>
          <t>Appraisal Policy for Attestation Result (APR)</t>
        </li>
        <li>
          <t>Attestation Result</t>
        </li>
        <li>
          <t>Attester</t>
        </li>
        <li>
          <t>Evidence</t>
        </li>
        <li>
          <t>Relying Party</t>
        </li>
        <li>
          <t>Verifier</t>
        </li>
      </ul>
      <t>The abbreviation APR is used throughout this document.</t>
      <t>This document additionally defines the following terms:</t>
      <t>Native Application (Native App)</t>
      <ul empty="true">
        <li>
          <t>An application that is installed by the user on their device. Different from the "native app" definition in <xref section="3" sectionFormat="of" target="RFC8252"/>, Native Application is expected to provide device attributes and application metadata.</t>
        </li>
      </ul>
      <t>Native Application Client</t>
      <ul empty="true">
        <li>
          <t>The OAuth 2.0 client requesting access token for the Native Application. Client can be a part of the Native Application acting as a Public client, or can be part of a backend service requesting access token on behalf of the Native Application as a part of the Backend-For-Frontend pattern. Throughout this document, Native Application Client will be referred to as "client".</t>
        </li>
      </ul>
      <t>Challenge</t>
      <ul empty="true">
        <li>
          <t>A cryptographically random nonce which is generated and validated by the Verifier.</t>
        </li>
      </ul>
      <t>Appraisal Assertion</t>
      <ul empty="true">
        <li>
          <t>Represents the outcome of evaluating a distinct aspect of the Attester. Each Appraisal Assertion <bcp14>MAY</bcp14> have its own status and associated claims. An Attestation Result <bcp14>MUST</bcp14> contain one or more Appraisal Assertions.</t>
        </li>
      </ul>
      <t>Trust Assessment</t>
      <ul empty="true">
        <li>
          <t>Evaluation of an Attestation Result according to an APR. An APR <bcp14>MAY</bcp14> have separate rule for each Appraisal Assertion forming the Attestation Result.</t>
        </li>
      </ul>
      <t>Trust Decision</t>
      <ul empty="true">
        <li>
          <t>The outcome of a Trust Assessment. It is either "Allow" or "Deny".</t>
        </li>
      </ul>
      <t>Authorization Policy</t>
      <ul empty="true">
        <li>
          <t>Specification of Trust Assessments required for a scope. Specification <bcp14>MAY</bcp14> require at least one of or all Trust Decisions to result in "Allow".</t>
        </li>
      </ul>
      <t>Authorization Decision</t>
      <ul empty="true">
        <li>
          <t>Indicates if a particular scope is granted to a client after the evaluation of the associated Authorization Policy.</t>
        </li>
      </ul>
    </section>
    <section anchor="kgen">
      <name>Native Application Key Requirements</name>
      <t>The mechanism defined in this document requires an Attestation Result to be bound to a Native Application instance. To establish this binding, the Native Application <bcp14>MUST</bcp14> generate an asymmetric key pair or use an existing asymmetric key pair. Symmetric key algorithms <bcp14>MUST NOT</bcp14> be used. The use of an asymmetric key pair allows the public key to be conveyed in the Attestation Result without exposing private key material capable of generating the corresponding Proof of Possession.</t>
      <t>The Native Application <bcp14>MUST</bcp14> use the same key pair throughout the authorization flow and for all subsequent token requests associated with the resulting authorization grant, including refresh token requests. A new Attestation Result presented with a refresh token request <bcp14>MUST</bcp14> be bound to the same public key.</t>
    </section>
    <section anchor="egen">
      <name>Evidence Collection</name>
      <t>Native Applications collect Evidence for the Verifier. Verifier <bcp14>SHOULD</bcp14> provide a Challenge value to test the freshness of the Evidence. When provided, Native Application <bcp14>MUST</bcp14> use the Challenge value when collecting Evidence. Verifier <bcp14>SHOULD</bcp14> generate a Challenge value with sufficient entropy according to the system requirements.</t>
      <t>How Native Application fetches the Challenge is beyond the scope of this document. Verifier <bcp14>MAY</bcp14> offer an endpoint as shown below.</t>
      <artwork type="ascii-art"><![CDATA[
+---------------+               (A)   +---------------+
|               +-------------------->|               |
|  Native App   |               (B)   |   Verifier    |
|               |<--------------------+               |
+---------------+                     +---------------+
]]></artwork>
      <t>This flow includes the following steps:</t>
      <t>(A) Native Application requests a Challenge value from Verifier. Native Application <bcp14>MAY</bcp14> sign the request by the generated key. If request is signed, Native Application <bcp14>MUST</bcp14> send the public key JWK to the Verifier. It's <bcp14>RECOMMENDED</bcp14> to use HTTP Message Signatures <xref target="RFC9421"/> for the signing implementation and HTTPS as the underlying protocol.</t>
      <t>(B) Verifier generates a fresh Challenge with sufficient entropy. If request is signed and Verifier receives public JWK from Native Application, it <bcp14>MUST</bcp14> bind the generated Challenge value to the public key JWK or to a stable identifier derived from that key, such as a JWK Thumbprint (<xref target="RFC7638"/>). Verifier <bcp14>MUST</bcp14> store the Challenge creation timestamp for the freshness check. Verifier <bcp14>MUST</bcp14> make the response uncacheable by adding a <tt>Cache-Control</tt> header set as <tt>no-store</tt>.</t>
      <t>Native Application <bcp14>MAY</bcp14> contact other parties when collecting the Evidence. In terms of RATS architecture, Evidence is created by Attesting Environments. The Attesting Environment can be a remote service provided by a vendor or platform. Message exchange is shown below.</t>
      <artwork type="ascii-art"><![CDATA[
+---------------+               (A)   +---------------+
|               +-------------------->|               |
|  Native App   |               (B)   |   Attesting   |
|               |<--------------------+  Environment  |
|               |                     |               |
+---------------+                     +---------------+
]]></artwork>
      <t>This flow includes the following steps:</t>
      <t>(A) Native Application sends a request to Attesting Environment to get Evidence by providing necessary claims. Native Application <bcp14>SHOULD</bcp14> present the Challenge value supplied from Verifier in addition to the claims. The message structure is specific to the Attesting Environment and is beyond the scope of this document.</t>
      <t>(B) Attesting Environment generates the Evidence. Attesting Environment <bcp14>MUST</bcp14> embed the Challenge value in Evidence when Challenge is present. Attesting Environment <bcp14>SHOULD</bcp14> sign the Evidence with a cryptographic key.</t>
    </section>
    <section anchor="ever">
      <name>Evidence Verification</name>
      <t>Verifier creates the Attestation Result based on the Evidence sent by the client. Verifier <bcp14>MAY</bcp14> test the integrity and the authenticity of the Evidence using Attesting Environment as shown below.</t>
      <artwork type="ascii-art"><![CDATA[
+---------------+               (A)   +---------------+
|               +-------------------->|               |
|    Client     |               (D)   |    Verifier   |
|               |<--------------------+               |
+---------------+                     +-----------+---+
                                          ^       |
                                          |       |
                                     (C)  |       | (B)
                                          |       v
                                      +---+-----------+
                                      |               |
                                      |  Attesting    |
                                      |  Environment  |
                                      |               |
                                      +---------------+
]]></artwork>
      <t>This flow includes the following steps:</t>
      <t>(A) Client sends Evidence to the Verifier. Evidence <bcp14>MUST</bcp14> include the Challenge value if Verifier has provided one during Evidence generation as described in <xref target="egen"/>. Regardless of whether a Challenge value is used, client <bcp14>MUST</bcp14> send the public key JWK of the Native Application.</t>
      <t>(B) If the Evidence is cryptographically signed, Verifier <bcp14>MUST</bcp14> validate the signature. The key establishment protocol for the cryptographic key between Verifier and Attesting Environment is beyond the scope of this document. Verifier calls the Attesting Environment for further checking the integrity and decoding the Evidence if necessary.</t>
      <t>(C) Attesting Environment <bcp14>MAY</bcp14> run integrity checks on the Evidence and return the Evidence with claims useful for the Verifier. Attesting Environment <bcp14>MUST</bcp14> extract the Challenge from Evidence and return its value explicitly if it was supplied by the Native Application.</t>
      <t>(D) Verifier processes the information returned from Attesting Environment. Verifier <bcp14>MUST</bcp14> test the Challenge value if it is returned from the Attesting Environment. Verifier <bcp14>MAY</bcp14> implement a lookup table to find the associated Challenge value via the public key JWK or to a stable identifier derived from that key, such as a JWK Thumbprint (<xref target="RFC7638"/>) which is received in the request (A). It's <bcp14>RECOMMENDED</bcp14> for Verifier to check the freshness of the Evidence when Challenge creation timestamp is known. Based on the validations, Verifier creates the Attestation Result. Verifier <bcp14>MUST</bcp14> include public JWK of the Native Application in the Attestation Result. Before binding a public key JWK to an Attestation Result, the Verifier <bcp14>MUST</bcp14> establish that the Native Application controls the corresponding private key and that the key is associated with the Evidence being appraised. The mechanism used to establish this association is outside the scope of this document.</t>
    </section>
    <section anchor="attestation-result-requirements">
      <name>Attestation Result Requirements</name>
      <t>Attestation Result <bcp14>MUST</bcp14> be signed by the Verifier with a cryptographic key.</t>
      <t>The structure of the Attestation Result is out of scope of this document. However, it is <bcp14>RECOMMENDED</bcp14> to include the elements defined by the <xref target="I-D.ietf-rats-ar4si"/>. Following information is <bcp14>REQUIRED</bcp14> for Attestation Result:</t>
      <ul spacing="normal">
        <li>
          <t>Public key of the Native Application.</t>
        </li>
        <li>
          <t>One or more Appraisal Assertions where each Appraisal Assertion corresponding to a distinct aspect of the device or Native Application. Each Appraisal Assertion <bcp14>MAY</bcp14> have its own status and associated claims. Those claims can be implemented as the Trustworthiness Claims defined in <xref target="I-D.ietf-rats-ar4si"/>.</t>
        </li>
        <li>
          <t>Identity of the Verifier issuing the Attestation Result. This identity can be implemented as the Verifier ID defined in <xref target="I-D.ietf-rats-ar4si"/>.</t>
        </li>
        <li>
          <t>Intended Authorization Server. This value <bcp14>SHOULD</bcp14> be the issuer URI used by the Authorization Server.</t>
        </li>
        <li>
          <t>A timestamp value indicating when the Attestation Result is created.</t>
        </li>
        <li>
          <t>A timestamp value indicating when the Attestation Result expires.</t>
        </li>
      </ul>
      <t>The encoding of the Attestation Result is beyond the scope of this document. However, the implementer <bcp14>MAY</bcp14> choose EAR Tokens as defined in EAT Attestation Results <xref target="I-D.ietf-rats-ear"/>.</t>
      <t>When DPoP <xref target="RFC9449"/> is used as the Proof of Possession mechanism, the Attestation Result <bcp14>MUST</bcp14> convey the Native Application public key as a JWK <xref target="RFC7517"/>. When an EAR Token <xref target="I-D.ietf-rats-ear"/> is used for the Attestation Result in such deployments, it <bcp14>MUST</bcp14> be encoded as a JWT. Profiles using another Proof of Possession mechanism <bcp14>MAY</bcp14> define an alternative representation of the Native Application public key.</t>
      <t>Verifier <bcp14>MUST</bcp14> use the Attestation Result format and encoding supported by the Authorization Server.</t>
    </section>
    <section anchor="authorization-server-processing">
      <name>Authorization Server Processing</name>
      <t>The Authorization Server <bcp14>MUST</bcp14> validate the Attestation Result's signature. Authorization Server <bcp14>MUST</bcp14> accept Attestation Result only from trusted Verifiers.</t>
      <t>Only successfully validated Attestation Result is used when evaluating an Authorization Policy. Authorization Server, depending on the Authorization Decisions, <bcp14>MUST</bcp14> decide which scopes should be issued in access token.</t>
      <t>Upon receiving the Attestation Result, Authorization Server <bcp14>MUST</bcp14> perform the following steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>Checks if the cryptographic signature of the Attestation Result is valid. The key establishment protocol for the cryptographic key between Verifier and Authorization Server is beyond the scope of this document.</t>
        </li>
        <li>
          <t>Checks if the Native Application still possesses the key pair bound to the Attestation Result (as detailed in <xref target="archeck"/>).</t>
        </li>
        <li>
          <t>Checks the freshness of the Attestation Result using the creation timestamp (as detailed in <xref target="fcheck"/>).</t>
        </li>
        <li>
          <t>Checks if Verifier ID is present and is trusted by the system.</t>
        </li>
        <li>
          <t>Checks if the intended Authorization Server points to the server itself.</t>
        </li>
        <li>
          <t>Checks if Attestation Result contains all necessary Appraisal Assertions required by the Trust Assessments.</t>
        </li>
        <li>
          <t>For each scope available to the client, Authorization Server evaluates the Authorization Policy, which is the specification of the Trust Assessments. How Authorization Policy is defined and associated to the scope is beyond the scope of this document.</t>
        </li>
        <li>
          <t>Based on the Authorization Decision for each scope, Authorization Server adds or removes the particular scope from the access token. Authorization Server <bcp14>MAY</bcp14> issue a token containing a reduced set of scopes, or <bcp14>MAY</bcp14> reject the request entirely. If no scopes are allowed, Authorization Server <bcp14>SHOULD</bcp14> return the <tt>invalid_scope</tt> error as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. If token is issued with a reduced set of scopes, the Authorization Server <bcp14>SHOULD</bcp14> return the <tt>scope</tt> parameter in the token response.</t>
        </li>
      </ol>
      <t>When access token issued successfully, Authorization Server <bcp14>MUST</bcp14> bind the Verifier ID to that access token and refresh token if requested by Client.</t>
      <section anchor="archeck">
        <name>Attestation Result Key-Binding Check</name>
        <t>The Authorization Server <bcp14>MUST</bcp14> verify that the public key whose possession is demonstrated by the Proof of Possession mechanism is the same public key that is bound to the Attestation Result.</t>
        <t>When DPoP <xref target="RFC9449"/> is used as described in <xref target="pub"/>, the Authorization Server <bcp14>MUST</bcp14> compute the SHA-256 JWK Thumbprint, as defined in <xref target="RFC7638"/>, of the public key JWK conveyed in the Attestation Result and compare it with the SHA-256 JWK Thumbprint of the public key conveyed in the DPoP proof. The Authorization Server <bcp14>MUST</bcp14> reject the request if the thumbprints do not match.</t>
        <t>When another Proof of Possession mechanism is used, the applicable profile <bcp14>MUST</bcp14> define how the public key whose possession is demonstrated is identified and how it is compared with the public key bound to the Attestation Result.</t>
      </section>
      <section anchor="fcheck">
        <name>Attestation Result Freshness Check</name>
        <t>Because clock skew can exist between the Verifier and Authorization Server, the Authorization Server <bcp14>MAY</bcp14> apply bounded clock-skew leeway when performing freshness validation. When such leeway is applied, the Authorization Server <bcp14>MUST</bcp14> use separate values for cases in which the Verifier's clock is ahead of or behind the Authorization Server's clock. The permitted offset when the Verifier's clock is ahead of the Authorization Server's clock <bcp14>SHOULD</bcp14> be kept as small as operationally practical because accepting future-dated Attestation Results can extend their effective freshness window.</t>
        <t>The Authorization Server <bcp14>SHOULD</bcp14> maintain a securely synchronized clock. The detailed validation procedure, including application of freshness thresholds and clock-skew leeway values, is specified in <xref target="appa"/>.</t>
        <t>The freshness check establishes that the Attestation Result satisfies the Authorization Server's freshness policy at the time it is appraised. It does not establish that the Native Application remains in the attested state throughout the lifetime of an access token issued based on that result.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>The Client <bcp14>MUST</bcp14> send an Attestation Result to the Authorization Server when using a refresh token grant according to the freshness window required by the Authorization Server. Because Attestation Results are snapshots of Native Application's runtime state at a single point in time, the Authorization Server <bcp14>MUST</bcp14> reject the request if Attestation Result is missing or stale.</t>
      </section>
    </section>
    <section anchor="ext">
      <name>Protocol Extensions</name>
      <t>This specification adds two parameters to the Token Endpoint request for <tt>authorization_code</tt> and <tt>refresh_token</tt> grant types:</t>
      <t><tt>attestation_result</tt></t>
      <ul empty="true">
        <li>
          <t><bcp14>REQUIRED</bcp14>. Contains the Attestation Result generated by the Verifier. The structure of the Attestation Result is beyond the scope of this document. However implementer <bcp14>MAY</bcp14> choose EAR Tokens as defined in EAT Attestation Results <xref target="I-D.ietf-rats-ear"/>.</t>
        </li>
      </ul>
      <t><tt>attestation_profile</tt></t>
      <ul empty="true">
        <li>
          <t><bcp14>OPTIONAL</bcp14>. References to the Authorization Policy which will evaluate the Attestation Result. The implementer <bcp14>MAY</bcp14> require this parameter when Authorization Server supports definition of multiple Authorization Policies.</t>
        </li>
      </ul>
      <t>The following example uses "\" line wrapping per <xref target="RFC8792"/> to show a token request. The compact DPoP proof and Attestation Result values are abbreviated for readability.</t>
      <artwork><![CDATA[
POST /token HTTP/1.1
     Host: server.example.com
     Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
     Content-Type: application/x-www-form-urlencoded
     DPoP: <DPoP-proof-JWT>
     grant_type=authorization_code\
     &client_id=s6BhdRkqt3 \
     &code=SplxlOBeZQQYbYS6WxSbIA \
     &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb \
     &attestation_profile=android \
     &attestation_result=<Attestation-Result>
]]></artwork>
      <t>These parameters are primarily intended for the Token Endpoint, unless the front-channel pre-flight optimizations described in <xref target="pub"/> are utilized.</t>
    </section>
    <section anchor="pub">
      <name>Public Client Considerations</name>
      <t>In this section client is a public client and is part of the Native Application.</t>
      <t>Native Application Client <bcp14>MUST</bcp14> use a suitable Proof of Possession mechanism. It is <bcp14>RECOMMENDED</bcp14> to use OAuth 2.0 Demonstrating Proof of Possession (DPoP) <xref target="RFC9449"/>. Proof of Possession is a dependency for restricting use of the Attestation Result only to the intended Native Application instance. This specification uses the public key JWK conveyed by a DPoP proof as a means of demonstrating possession of the key bound to an Attestation Result. This binding is distinct from the sender-constraining of access tokens defined by <xref target="RFC9449"/>. Whether an issued access token is DPoP-bound remains governed by <xref target="RFC9449"/>.</t>
      <section anchor="attestation-result-precheck">
        <name>Attestation Result Precheck</name>
        <t>Authorization Server <bcp14>MAY</bcp14> precheck an Attestation Result during an early stage of the authorization flow in order to avoid unnecessary steps in case Attestation Result is invalid or doesn't meet requirements of target Trust Assessments. In this case, the parameters defined in <xref target="ext"/> can be used in the authorization request.</t>
        <t>An Attestation Result could be conveyed through the front-channel authorization request. Because an Attestation Result can contain sensitive information, the Verifier would need to cryptographically encrypt it for the Authorization Server. Contents of the Attestation Result will remain hidden all the way through the Authorization Server, however, this option can lead to long URLs, which can be problematic due to size limitations that can be enforced from any intermediary hop.</t>
        <t>When DPoP is used, the <tt>dpop_jkt</tt> authorization request parameter defined in <xref target="RFC9449"/> can identify the DPoP public key by its SHA-256 JWK Thumbprint (<xref target="RFC7638"/>). The Authorization Server can compare this value with the public key bound to the Attestation Result. However, <tt>dpop_jkt</tt> does not by itself demonstrate possession of the corresponding private key and therefore is not sufficient to complete the Attestation Result Key-Binding Check defined in <xref target="archeck"/>.</t>
        <t>Consequently, a public client using DPoP that requests Attestation Result precheck <bcp14>MUST</bcp14> submit the Attestation Result using Pushed Authorization Requests <xref target="RFC9126"/> and <bcp14>MUST</bcp14> include a DPoP proof in the pushed authorization request as described in <xref section="10.1" sectionFormat="of" target="RFC9449"/>. The Authorization Server <bcp14>MUST</bcp14> validate the DPoP proof and <bcp14>MUST</bcp14> perform the Attestation Result Key-Binding Check defined in <xref target="archeck"/>. RFC 9449 further requires the subsequent token request to demonstrate possession of the same key.</t>
        <t>A Client that does not use Attestation Result precheck <bcp14>MAY</bcp14> instead submit the Attestation Result at the token endpoint. Such a Client <bcp14>MAY</bcp14> use <tt>dpop_jkt</tt> in the authorization request for authorization-code binding as defined in RFC 9449.</t>
        <t>When an Attestation Result is received at the pushed authorization request endpoint for precheck, the Authorization Server <bcp14>MUST</bcp14> perform the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Checks if the cryptographic signature of the Attestation Result is valid. The key establishment protocol for the cryptographic key between Verifier and Authorization Server is beyond the scope of this document.</t>
          </li>
          <li>
            <t>Checks if the Native Application still possesses the key pair bound to the Attestation Result (as detailed in <xref target="archeck"/>).</t>
          </li>
          <li>
            <t>Checks the freshness of the Attestation Result using the creation timestamp.</t>
          </li>
          <li>
            <t>Checks if Verifier ID is present and is trusted by the system.</t>
          </li>
          <li>
            <t>Checks if the intended Authorization Server points to the server itself.</t>
          </li>
          <li>
            <t>Checks if Attestation Result contains all necessary Appraisal Assertions required by the Trust Assessments.</t>
          </li>
          <li>
            <t>Stores the Attestation Result for the Authorization Policy evaluation during the upcoming token request. Authorization Server <bcp14>SHOULD</bcp14> store the Attestation Result with an expiry time not longer than the combination of authorization code and request URI lifetimes. Before using the stored Attestation Result for Authorization Policy evaluation, the Authorization Server <bcp14>MUST</bcp14> perform the decision-time freshness validation defined in <xref target="fcheck"/>.</t>
          </li>
        </ol>
        <t>If one of those steps fails, Authorization Server <bcp14>MUST</bcp14> respond with an error. The error <bcp14>SHOULD</bcp14> indicate <tt>access_denied</tt> as defined in <xref section="4.1.2.1" sectionFormat="of" target="RFC6749"/>.</t>
        <t>Authorization Server <bcp14>MUST</bcp14> respond with an error if it receives Attestation Result in both authorization request and token requests. The error <bcp14>SHOULD</bcp14> indicate <tt>invalid_request</tt> as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/></t>
      </section>
    </section>
    <section anchor="bff">
      <name>Backend-For-Frontend Pattern</name>
      <t>The proposed mechanism in this document can also be used for Native Applications connecting to a proxy backend acting as a confidential client. The Backend-For-Frontend pattern for OAuth 2.0 was introduced in OAuth 2.0 for Browser-Based Applications <xref target="I-D.ietf-oauth-browser-based-apps"/>. While the Backend-for-Frontend (BFF) pattern was originally designed to solve browser-based security vulnerabilities, it can be adapted to Native Applications.</t>
      <t>By placing a backend layer between Native Application and Authorization Server, responsibility of sending Attestation Result will be shifted to the new layer. From this point onwards this backend layer will be called the Attestation Server.</t>
      <t>Deployments using an Attestation Server <bcp14>MUST</bcp14> provide a mechanism by which the Authorization Server can independently validate possession of the key bound to the Attestation Result. The definition of this mechanism is outside the scope of this document. Profiles defining such deployments <bcp14>MUST</bcp14> specify how the proof is generated, conveyed through the Attestation Server and protected against replay attacks.</t>
      <t>Attestation Server <bcp14>MAY</bcp14> embed the Verifier functionality, or use a remote Verifier for receiving the Attestation Result.</t>
      <section anchor="communication-security">
        <name>Communication Security</name>
        <t>This document does not enforce any particular protocol for the messaging between Attestation Server and a remote Verifier. However, the implementer <bcp14>MUST</bcp14> use TLS for securing the underlying protocol.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.  The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs.  Please note that the listing of any individual implementation here does not imply endorsement by the IETF.  Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features.  Readers are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.  It is up to the individual working groups to use this information as they see fit".</t>
      <section anchor="mekarge-a3">
        <name>Mekarge A3</name>
        <t>The organization responsible for this implementation is Mekarge. <xref target="MekargeA3"/> is an Authorization Server designed to manage authentication, authorization, and access control for applications and services. By the time of writing this document, Mekarge A3 is available for beta access.</t>
        <t>Mekarge A3 implements the mechanism offered in this document with incorporating Backend-For-Frontend pattern described in <xref target="bff"/>. Mekarge A3 introduces the following concepts:</t>
        <ul spacing="normal">
          <li>
            <t>Permission as a unique combination of a Resource and one of its scopes. Each permission defines the specific actions and data access rights that can be granted to a client.</t>
          </li>
          <li>
            <t>An Attestation Profile defines a set of Appraisal criteria for evaluating device and Native Application trustworthiness. Attestation Profiles are associated with the permissions. During authorization, Mekarge A3 Authorization Server evaluates all the Appraisals defined for the Attestation Profile and filters the client's granted permissions that are associated with the particular Attestation Profile.</t>
          </li>
        </ul>
        <t>Latest API documentation can be accessed via <xref target="MekargeA3.API"/>. The developers can be contacted through <eref target="hello@mekarge.com">hello@mekarge.com</eref>.</t>
      </section>
    </section>
    <section anchor="interop">
      <name>Interoperability Considerations</name>
      <t>This specification defines the OAuth protocol parameters and processing rules used to convey and evaluate Attestation Results. It does not define a single Attestation Result format or attestation claim vocabulary.</t>
      <t>Deployments therefore need to agree on the semantics associated with an <tt>attestation_profile</tt>, including the applicable Attestation Result format and the claims that can be consumed by the Authorization Server. Where Authorization Policies depend on such claims, compatible policy semantics are also required between the entities participating in the deployment.</t>
      <t>Interoperability also depends on the Proof of Possession mechanism used to establish the key binding defined in <xref target="archeck"/>. DPoP provides the mechanism specified for public clients in <xref target="pub"/>. Deployments using another Proof of Possession mechanism, including deployments in which an Attestation Server relays a proof generated by the Native Application, require an applicable profile defining how the proof is generated and conveyed to the Authorization Server, how the public key whose possession is demonstrated is identified and compared with the public key bound to the Attestation Result, and how the proof is protected against replay.</t>
      <t>Consequently, support for the protocol extensions defined by this specification does not by itself imply interoperability at the attestation, authorization-policy, or deployment-specific key-binding layer.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="replay-attacks">
        <name>Replay Attacks</name>
        <t>Authorization Server <bcp14>MUST</bcp14> implement measures to detect replay attacks. Authorization Server <bcp14>MUST</bcp14> check the freshness of the Attestation Result using its creation timestamp. Authorization Server <bcp14>MUST</bcp14> check if the Attestation Result is generated for the intended Native Application.</t>
        <t>When receiving Attestation Result from public clients on token request, Authorization Server <bcp14>SHOULD</bcp14> use a short time window for checking freshness of the Attestation Result.</t>
      </section>
      <section anchor="challenge-freshness">
        <name>Challenge Freshness</name>
        <t>Verifier <bcp14>SHOULD</bcp14> offer a mechanism to provide a fresh Challenge value with sufficient entropy to Native Application. Verifier <bcp14>MUST</bcp14> check both freshness and the value of the Challenge in the Evidence before generating the Attestation Result if a Challenge was provided. In order to check the freshness, Verifier can store the timestamp when Challenge value is issued. Verifier <bcp14>SHOULD</bcp14> discard the Challenge value on its first occurrence in an Evidence.</t>
      </section>
      <section anchor="downgrade-attacks">
        <name>Downgrade Attacks</name>
        <t>Authorization Server <bcp14>MUST</bcp14> reject the token request if <tt>attestation_result</tt> parameter is not provided and system has an Authorization Policy defined for at least one scope requested by client.</t>
        <t>Authorization Server <bcp14>MUST</bcp14> reject the token request if there are multiple Authorization Policy defined for at least one scope requested by client and <tt>attestation_profile</tt> parameter is not provided.</t>
      </section>
      <section anchor="verifier-compromise">
        <name>Verifier Compromise</name>
        <t>As aforementioned, Authorization Server <bcp14>MUST</bcp14> check if Verifier ID is present and is trusted by the system when processing the Attestation Result. In case Verifier is known to be compromised, Authorization Server <bcp14>MUST</bcp14> reject all requests with Attestation Result that are created by the compromised Verifier. Authorization Server also <bcp14>MUST</bcp14> reject any token request using refresh token grant if the original token request issuing the refresh token has used the Attestation Result created by the compromised Verifier during Authorization Policy evaluation.</t>
      </section>
      <section anchor="device-key-extraction">
        <name>Device Key Extraction</name>
        <t>The security of this mechanism relies on the device's ability to prevent key extraction. It is therefore Verifier's responsibility to assess the risk accordingly if the device executing Native Application does not support a secure enclave or a similar hardware-based storage.</t>
      </section>
      <section anchor="attestation-result-temporal-limitations">
        <name>Attestation Result Temporal Limitations</name>
        <t>An Attestation Result represents a snapshot of the Native Application and its execution environment. The freshness checks defined in <xref target="fcheck"/> bound the age of that snapshot when the Authorization Server makes an authorization decision, but do not provide continuous assurance during subsequent use of the resulting access token. The state of the Native Application can change after token issuance, including becoming compromised while the access token remains valid. Deployments requiring a tighter bound on this risk can use shorter access token lifetimes, more frequent re-attestation, or other deployment-specific mechanisms.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="evidence-exposure">
        <name>Evidence Exposure</name>
        <t>Depending on the Attesting Environment implementation, Evidence might contain sensitive data without cryptographic encryption. In some cases, such Evidence might include Personally Identifying Information (PII) as well. Clients are therefore responsible for securely sending Evidence to the Verifier. Client <bcp14>MUST</bcp14> use TLS based protocol and ensure Verifier server certificate is valid and trustable.</t>
        <t>Native Application <bcp14>MUST</bcp14> avoid transmitting unnecessary device metadata to Attesting Environment. Similarly, Attesting Environment <bcp14>MUST</bcp14> only include claims required for the Verifier.</t>
      </section>
      <section anchor="attestation-result-exposure">
        <name>Attestation Result Exposure</name>
        <t>Attestation Result might contain information about the internal state of the device, Native Application software, and the Verifier software. Depending on the nature of the Native Application the Attestation Result can include Personally Identifying Information (PII) as well. Clients are therefore responsible for taking necessary measures for ensuring Attestation Result is safely stored if caching is implemented and it is sent to Authorization Server through back-channel. For public clients, if Native Application is intended to send Attestation Result before access token request as described in <xref target="pub"/>, it is <bcp14>RECOMMENDED</bcp14> to use Pushed Authorization Requests <xref target="RFC9126"/>.</t>
        <t>Authorization Server is responsible for how Attestation Result and associated decisions are logged for security and privacy audits. Authorization Server <bcp14>SHOULD NOT</bcp14> log Attestation Result if there is a risk of exposure of log data to unintended parties.</t>
        <t>Attestation Results can contain stable identifiers. By accessing logs including Attestation Results, users or devices can be correlated using those stable identifiers. It is therefore Authorization Server's responsibility to handle such identifiers, such as hashing, anonymizing, or omitting during logging.</t>
      </section>
      <section anchor="secondary-use">
        <name>Secondary Use</name>
        <t>Attestation Results collected for authorization <bcp14>SHOULD</bcp14> not automatically be reused for analytics, profiling, or marketing by the Authorization Server.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="oauth-parameters-registration">
        <name>OAuth Parameters Registration</name>
        <t>This specification requests registration of the following values in the IANA "OAuth Parameters" registry of <xref target="IANA.OAuth.Parameters"/> established by <xref target="RFC6749"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Name: <tt>attestation_result</tt></t>
          </li>
          <li>
            <t>Parameter Usage Location: authorization request, token request</t>
          </li>
          <li>
            <t>Reference: <xref target="ext"/> of this document</t>
          </li>
        </ul>
        <ul empty="true">
          <li>

</li>
        </ul>
        <ul spacing="normal">
          <li>
            <t>Name: <tt>attestation_profile</tt></t>
          </li>
          <li>
            <t>Parameter Usage Location: authorization request, token request</t>
          </li>
          <li>
            <t>Reference: <xref target="ext"/> of this document</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </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="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="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8252">
          <front>
            <title>OAuth 2.0 for Native Apps</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>OAuth 2.0 authorization requests from native apps should only be made through external user-agents, primarily the user's browser. This specification details the security and usability reasons why this is the case and how native apps and authorization servers can implement this best practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="212"/>
          <seriesInfo name="RFC" value="8252"/>
          <seriesInfo name="DOI" value="10.17487/RFC8252"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="ZTA" target="https://doi.org/10.6028/NIST.SP.800-207">
          <front>
            <title>Zero Trust Architecture</title>
            <author>
              <organization>NIST</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-ear">
          <front>
            <title>EAT Attestation Results</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco</organization>
            </author>
            <author fullname="Sergei Trofimov" initials="S." surname="Trofimov">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="26" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the EAT Attestation Result (EAR) message
   format.

   EAR is used by a verifier to encode the result of the appraisal over
   an attester's evidence.  It embeds an AR4SI's "trustworthiness
   vector" to present a normalized view of the evaluation results, thus
   easing the task of defining and computing authorization policies by
   relying parties.  Alongside the trustworthiness vector, EAR provides
   contextual information bound to the appraisal process.  This allows a
   relying party (or an auditor) to reconstruct the frame of reference
   in which the trustworthiness vector was originally computed.  EAR
   supports simple devices with one attester as well as composite
   devices that are made of multiple attesters, allowing the state of
   each attester to be separately examined.  EAR can also accommodate
   registered and unregistered extensions.  It can be serialized and
   protected using either CWT or JWT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ear-04"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-browser-based-apps">
          <front>
            <title>OAuth 2.0 for Browser-Based Applications</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Philippe De Ryck" initials="P." surname="De Ryck">
              <organization>Pragmatic Web Security</organization>
            </author>
            <author fullname="David Waite" initials="D." surname="Waite">
              <organization>Ping Identity</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This specification details the threats, attack consequences, security
   considerations and best practices that must be taken into account
   when developing browser-based applications that use OAuth 2.0.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-browser-based-apps.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-browser-based-apps-27"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-attestation-based-client-auth">
          <front>
            <title>OAuth 2.0 Attestation-Based Client Authentication</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This specification defines an extension to the OAuth 2.0 protocol
   (RFC 6749) that enables a client instance to include a key-bound
   attestation when interacting with an Authorization Server or Resource
   Server.  This mechanism allows a client instance to prove its
   authenticity verified by a client attester without revealing its
   target audience to that attester.  It may also serve as a mechanism
   for client authentication as per OAuth 2.0.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-attestation-based-client-auth-10"/>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="18" month="May" year="2026"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-10"/>
        </reference>
        <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>Internet Assigned Numbers Authority</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MekargeA3" target="https://a3.mekarge.com/site">
          <front>
            <title>Mekarge A3</title>
            <author initials="" surname="Mekarge">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="MekargeA3.API" target="https://a3.mekarge.com/site/docs/api/authorization/">
          <front>
            <title>Mekarge A3 Authorization API</title>
            <author initials="" surname="Mekarge">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 518?>

<section anchor="appa">
      <name>Detailed Attestation Result Time Validation</name>
      <t>In this procedure,</t>
      <ul spacing="normal">
        <li>
          <t><tt>leeway_verifier_ahead</tt> represents the permitted offset when the Verifier's clock is ahead of the Authorization Server's clock.</t>
        </li>
        <li>
          <t><tt>leeway_verifier_behind</tt> represents the permitted offset when the Authorization Server's clock is ahead of the Verifier's clock.</t>
        </li>
        <li>
          <t><tt>freshness_threshold</tt> represents the maximum acceptable age of an Attestation Result, as defined by the Authorization Server.</t>
        </li>
      </ul>
      <t>If the Authorization Server does not apply clock-skew leeway, both leeway values are zero.</t>
      <t>Following the event definitions in Appendix A of RFC 9334, let:</t>
      <ul spacing="normal">
        <li>
          <t><tt>RG_v</tt>: the Attestation Result generation time, according to the Verifier's clock.</t>
        </li>
        <li>
          <t><tt>RX_v</tt>: the Attestation Result expiry time, according to the Verifier's clock.</t>
        </li>
        <li>
          <t><tt>OP_r</tt>: the time at which the Authorization Server evaluates the Authorization Policy, according to the Authorization Server's clock.</t>
        </li>
      </ul>
      <t>The Authorization Server then validates the Attestation Result using the following checks:</t>
      <ol spacing="normal" type="1"><li>
          <t><tt>RG_v &lt; OP_r + leeway_verifier_ahead</tt>  </t>
          <t>
This checks that the Attestation Result was not generated unreasonably far in the future from the Authorization Server's perspective.  </t>
          <t>
Because a future-dated <tt>RG_v</tt> also reduces the apparent age calculated by Check 2, <tt>leeway_verifier_ahead</tt> <bcp14>SHOULD</bcp14> be kept small relative to <tt>freshness_threshold</tt> as operationally practical. Accepting an Attestation Result generated up to <tt>leeway_verifier_ahead</tt> in the future can extend its effective freshness window by the same amount.</t>
        </li>
        <li>
          <t><tt>OP_r - RG_v &lt; freshness_threshold + leeway_verifier_behind</tt>  </t>
          <t>
This verifies that the Attestation Result is recent enough to meet the Authorization Server's freshness policy.</t>
        </li>
        <li>
          <t><tt>OP_r &lt; RX_v + leeway_verifier_behind</tt>  </t>
          <t>
This checks that the Attestation Result has not expired according to the Verifier's declared validity interval.</t>
        </li>
        <li>
          <t><tt>RX_v &gt; RG_v</tt>  </t>
          <t>
This checks that the Verifier's declared expiry time is after the generation time.</t>
        </li>
      </ol>
      <t>If the Authorization Server defines a maximum acceptable Attestation Result lifetime (<tt>max_lifetime</tt>), it <bcp14>MUST</bcp14> also apply the following check:</t>
      <ol spacing="normal" type="1"><li>
          <t><tt>RX_v - RG_v &lt; max_lifetime</tt>  </t>
          <t>
This checks that the Verifier's declared validity interval is less than the maximum lifetime accepted by the Authorization Server.</t>
        </li>
      </ol>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Added Attestation Result temporal limitations to Security Considerations</t>
        </li>
        <li>
          <t>Added guidance on clock skew handling for freshness validation</t>
        </li>
        <li>
          <t>Added Attestation Result key binding</t>
        </li>
        <li>
          <t>Revised Related Work section</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963bb1pnofz4Fjrx6YjckbcmXJJokrWzJE7VOrErK+PQ2
FkhuiqhAgAVAyYzrPss8yzzZ+a77AmxQcpp2OmvVq6uhSGBfvv3db3s0Gg0G
TdbkZj/ZeX2wbhbJ3vhRctA0pm7SJiuL5Hlam1mCP5VV9gN/Ny+r5Dv4eG2S
g9Uqz6b0db0zSCeTylzDWDzCLS/CC/CmuSyrzX6SFfNyMJiV0yJdwmpmVTpv
RuYqXVTpMi1GZQoDjVK3sBF+8cOooNFG6Wo1erQ7qNeTZVbX8HOzWcEox0fn
LwfFejkx1f5gBnPtD6awUFPU63o/mad5bQaw3MeDtDIpLPvMTNdV1mx2Bjdl
dXVZlesVfPvGTFr7OKnKppyW+c7gymzg0dn+IBkltEb84C2T/vTfHVybYg3r
SJJlmuUwOr31y8w083FZXe7AD5dZs1hP4Kcl7L+6NA8/Hhg4TJ7i7zDMomlW
9f7DhzLcmMcfZ+WPGPhHvDJeNEuA1IDBgJCCxSXJfJ3nfNZHc5P8WsajnwAO
aSHw2k++5WXTL4aBZubml7qbabmkn+qmMga2u/vFo+T7Kk/pyykcJqDBD8us
4r/LGUz4+OmTp4/k73XRIPqdnw4GRVktadX79NvpyxfPPnvyxb5+0C+/ePz4
yb5+sF/u7j3b1w/2yyfyOn7QLz97uvvZvn6wXz57/Pm+fhgMkBjaa/nsiyd7
+/pBv/x87yl/iR/ctHu7+/rBPvnZF/IkfKAvf3d+wIPjP3s43j84BsCe747P
znfs98osfmeqMjmv1nWTHFTTRdaYabOujPcgHo6PfbMyQwR/uPto/OzR3ucP
cdzx2cn480ePRnuPPuM3j0eHYySFUZU29cik1X5i308Bv6p0emWqsVILDDoV
jAzeehgOxjg6qcqb2lSjCXI0RMz64wbvG+UeYjH8DS8XsxEc3GheAQPCPybz
eXQpPrnwQNM8M0VDtPNjVrV1wIcR0KbVkzr7EcCl92TAg+8OxiQ0xicpEK9p
TFXvdxBAp7i5uRlnaZHS0Ckw6ctiCSusH/IOVnaINq6xXDrp/t7F2RHj7DFA
vyoMoCZNA2LoO5IBtbLxZkMvCWc5eKxjKHbLD8nBY0XoDjqnj8ceB3pYAwXo
s+11jbwVZkUdcrQkIbmU7D0SvmEXNT44Oe5fWEsiwbMfs1Q82/phusoeBsLp
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

-->

</rfc>
