<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-skokan-oauth-additional-hashes-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Additional Hashes for OAuth PoP and PKCE">Additional Hash Algorithms for OAuth 2.0 PKCE and Proof-of-Possession</title>
    <seriesInfo name="Internet-Draft" value="draft-skokan-oauth-additional-hashes-00"/>
    <author fullname="Filip Skokan">
      <organization>Okta</organization>
      <address>
        <email>panva.ip@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="26"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>pkce</keyword>
    <keyword>dpop</keyword>
    <keyword>mtls</keyword>
    <abstract>
      <?line 56?>

<t>This document defines SHA-384 as an additional hash algorithm option
for OAuth 2.0 Proof Key for Code Exchange (PKCE), Demonstrating Proof
of Possession (DPoP), and mutual-TLS certificate-bound access tokens.
These mechanisms currently mandate the use of SHA-256.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-skokan-oauth-additional-hashes/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/panva/draft-oauth-additional-hashes"/>.</t>
    </note>
  </front>
  <middle>
    <?line 64?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Several OAuth 2.0 mechanisms exclusively mandate the use of SHA-256:
Proof Key for Code Exchange (PKCE) <xref target="RFC7636"/>, Demonstrating Proof of
Possession (DPoP) <xref target="RFC9449"/>, and mutual-TLS certificate-bound access
tokens <xref target="RFC8705"/>.</t>
      <t>Security policies, such as the US Commercial National Security
Algorithm (CNSA 2.0) Suite <xref target="cnsafaq"/>, prohibit the use of SHA-256 and
mandate SHA-384 as the minimum acceptable hash algorithm. This
prevents the deployment of these OAuth 2.0 mechanisms in such
environments.</t>
      <t>This document addresses this gap by defining SHA-384 alternatives
for each of these mechanisms. For PKCE, a new <tt>S384</tt> code challenge
method is defined. For mutual-TLS certificate-bound access tokens,
a new <tt>x5t#S384</tt> confirmation method is defined. For DPoP, this
document defines SHA-384 alternatives for the JWK Thumbprint
confirmation method (<tt>jkt#S384</tt>) and the access token hash claim
(<tt>ath#S384</tt>), as well as an extensible framework for DPoP
authorization code binding and access token hash algorithm
negotiation.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>All references to "CNSA 2.0" in this document refer to CNSA 2.0
<xref target="cnsafaq"/>, unless stated otherwise.</t>
    </section>
    <section anchor="sha-384-pkce-code-challenge-method">
      <name>SHA-384 PKCE Code Challenge Method</name>
      <section anchor="S384">
        <name>S384 Code Challenge Method</name>
        <t>This document defines a new code challenge method for use with
PKCE <xref target="RFC7636"/>. The client creates a code challenge derived from
the code verifier by using the following transformation on the code
verifier:</t>
        <dl>
          <dt>S384:</dt>
          <dd>
            <t>code_challenge = BASE64URL(SHA-384(ASCII(code_verifier)))</t>
          </dd>
        </dl>
        <t>The server-side verification of the code verifier follows
<xref section="4.6" sectionFormat="of" target="RFC7636"/>, using SHA-384 as the hash algorithm.</t>
      </section>
      <section anchor="as-metadata">
        <name>Authorization Server Metadata</name>
        <t>An Authorization Server that supports the <tt>S384</tt> code challenge
method <bcp14>MUST</bcp14> advertise its support by including <tt>S384</tt> in the
<tt>code_challenge_methods_supported</tt> metadata parameter value, as
defined in OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/> or
OpenID Connect Discovery 1.0 <xref target="OpenID.Discovery"/>.</t>
        <t>A Client intending to use the <tt>S384</tt> code challenge method <bcp14>MUST</bcp14>
first confirm that the Authorization Server supports it by checking
the <tt>code_challenge_methods_supported</tt> metadata value. A Client <bcp14>MUST
NOT</bcp14> use the <tt>S384</tt> code challenge method if the Authorization Server
does not advertise support for it.</t>
      </section>
    </section>
    <section anchor="dpop-authorization-code-binding-methods">
      <name>DPoP Authorization Code Binding Methods</name>
      <section anchor="dpop-jkt-method">
        <name>dpop_jkt_method Authorization Request Parameter</name>
        <t>RFC 9449 <xref target="RFC9449"/> defines the <tt>dpop_jkt</tt> authorization request
parameter as the JWK Thumbprint <xref target="RFC7638"/> of the DPoP public key
using SHA-256.</t>
        <t>This document defines the <tt>dpop_jkt_method</tt> authorization request
parameter, sent alongside <tt>dpop_jkt</tt>, to indicate the hash algorithm
used to compute the JWK Thumbprint. The following method values are
defined:</t>
        <dl>
          <dt>S256:</dt>
          <dd>
            <t>JWK Thumbprint <xref target="RFC7638"/> using SHA-256, as originally
defined in <xref section="10" sectionFormat="of" target="RFC9449"/>.</t>
          </dd>
          <dt>S384:</dt>
          <dd>
            <t>JWK Thumbprint <xref target="RFC7638"/> using SHA-384.</t>
          </dd>
        </dl>
        <t>When <tt>dpop_jkt_method</tt> is absent from the authorization request, the
Authorization Server <bcp14>MUST</bcp14> assume the value <tt>S256</tt>.</t>
        <t>The value of <tt>dpop_jkt</tt> <bcp14>MUST</bcp14> be computed using the hash algorithm
indicated by <tt>dpop_jkt_method</tt>.</t>
      </section>
      <section anchor="dpop-as-metadata">
        <name>DPoP Authorization Server Metadata</name>
        <t>This document defines the <tt>dpop_jkt_methods_supported</tt> Authorization
Server metadata parameter. Its value is a JSON array containing the
<tt>dpop_jkt_method</tt> values that the Authorization Server supports.</t>
        <t>An Authorization Server that supports <tt>dpop_jkt_method</tt> values
beyond <tt>S256</tt> <bcp14>MUST</bcp14> advertise its support by including the supported
values in the <tt>dpop_jkt_methods_supported</tt> metadata parameter.</t>
        <t>A Client intending to use a <tt>dpop_jkt_method</tt> value other than
<tt>S256</tt> <bcp14>MUST</bcp14> first confirm that the Authorization Server supports it
by checking the <tt>dpop_jkt_methods_supported</tt> metadata value. A
Client <bcp14>MUST NOT</bcp14> use a <tt>dpop_jkt_method</tt> value that the Authorization
Server does not advertise support for.</t>
      </section>
    </section>
    <section anchor="sha-384-dpop-hash-algorithms">
      <name>SHA-384 DPoP Hash Algorithms</name>
      <section anchor="jkt-S384">
        <name>jkt#S384 Confirmation Method</name>
        <t>RFC 9449 <xref target="RFC9449"/> defines the <tt>jkt</tt> confirmation method member
for binding access tokens to a DPoP public key using a SHA-256
JWK Thumbprint <xref target="RFC7638"/>.</t>
        <t>This document defines an analogous confirmation method member
<tt>jkt#S384</tt> that uses SHA-384 as the hash algorithm:</t>
        <dl>
          <dt>jkt#S384:</dt>
          <dd>
            <t>The value is the base64url encoding of the JWK
Thumbprint <xref target="RFC7638"/> computed using SHA-384 of the DPoP
public key (in JWK format) to which the access token is bound.</t>
          </dd>
        </dl>
        <t>When using <tt>jkt#S384</tt>, the Authorization Server computes the
SHA-384 JWK Thumbprint of the DPoP public key and includes the
result as the <tt>jkt#S384</tt> member of the <tt>cnf</tt> claim in the access
token (for JWT access tokens) or associates it with the token
for later retrieval via token introspection.</t>
        <t>The Resource Server <bcp14>MUST</bcp14> compute the SHA-384 JWK Thumbprint of
the DPoP public key and compare it with the <tt>jkt#S384</tt> value in
the <tt>cnf</tt> claim. If the values do not match, the Resource Server
<bcp14>MUST</bcp14> reject the request.</t>
        <t>The choice of <tt>jkt#S384</tt> over <tt>jkt</tt> is a deployment decision
based on the Resource Server configuration at the Authorization
Server.</t>
      </section>
      <section anchor="dpop-ath">
        <name>ath#S384 Access Token Hash</name>
        <t>RFC 9449 <xref target="RFC9449"/> defines the <tt>ath</tt> claim in the DPoP proof JWT
as the base64url-encoded SHA-256 hash of the ASCII encoding of the
access token value.</t>
        <t>This document defines an analogous claim <tt>ath#S384</tt> that uses
SHA-384 as the hash algorithm:</t>
        <dl>
          <dt>ath#S384:</dt>
          <dd>
            <t>The value is the base64url encoding of the SHA-384 hash of
the ASCII encoding of the associated access token's value.</t>
          </dd>
        </dl>
        <t>When used, <tt>ath#S384</tt> is included in the DPoP proof JWT in place
of <tt>ath</tt>.</t>
        <t>A Client that used a <tt>dpop_jkt_method</tt> value of <tt>S384</tt> during the
authorization request <bcp14>MUST</bcp14> use <tt>ath#S384</tt> in DPoP proofs sent to
Resource Servers.</t>
        <t>A Resource Server <bcp14>MAY</bcp14> signal the required access token hash method
by including the <tt>ath_method</tt> parameter in the <tt>WWW-Authenticate:
DPoP</tt> challenge. The value of <tt>ath_method</tt> is the name of the claim
the Client <bcp14>MUST</bcp14> use: <tt>ath</tt> for SHA-256 or <tt>ath#S384</tt> for SHA-384.
When <tt>ath_method</tt> is absent, the Client <bcp14>MUST</bcp14> use <tt>ath</tt>.</t>
      </section>
      <section anchor="dpop-rs-metadata">
        <name>Resource Server Metadata</name>
        <t>This document defines the <tt>dpop_ath_methods_supported</tt> Resource
Server metadata parameter <xref target="RFC9728"/>. Its value is a JSON array
containing the access token hash claim names that the Resource
Server supports. Defined values are <tt>ath</tt> and <tt>ath#S384</tt>.</t>
        <t>When this metadata parameter is absent, the Client <bcp14>MUST</bcp14> assume
that the Resource Server supports only <tt>ath</tt>.</t>
      </section>
    </section>
    <section anchor="mtls">
      <name>SHA-384 Mutual-TLS Certificate Hash</name>
      <section anchor="x5t-S384">
        <name>x5t#S384 Confirmation Method</name>
        <t>RFC 8705 <xref target="RFC8705"/> defines the <tt>x5t#S256</tt> confirmation method
member for binding access tokens to a client certificate using a
SHA-256 hash of the DER-encoded X.509 certificate.</t>
        <t>This document defines an analogous confirmation method member
<tt>x5t#S384</tt> that uses SHA-384 as the hash algorithm:</t>
        <dl>
          <dt>x5t#S384:</dt>
          <dd>
            <t>The value is a base64url-encoded SHA-384 hash of the
DER encoding of the X.509 certificate.</t>
          </dd>
        </dl>
        <t>When using <tt>x5t#S384</tt>, the Authorization Server computes the
SHA-384 hash of the client certificate presented during mutual-TLS
and includes the result as the <tt>x5t#S384</tt> member of the <tt>cnf</tt>
claim in the access token (for JWT access tokens) or associates
it with the token for later retrieval via token introspection.</t>
        <t>The Resource Server <bcp14>MUST</bcp14> compute the SHA-384 hash of the client
certificate presented during mutual-TLS and compare it with the
<tt>x5t#S384</tt> value in the <tt>cnf</tt> claim. If the values do not match,
the Resource Server <bcp14>MUST</bcp14> reject the request.</t>
        <t>The choice of <tt>x5t#S384</tt> over <tt>x5t#S256</tt> is a deployment decision
based on the Resource Server configuration at the Authorization
Server.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The <tt>S384</tt> code challenge method provides the same structural
security properties as <tt>S256</tt>. It is a one-way transformation of
the code verifier that prevents an attacker who intercepts the
authorization code from computing the code verifier needed to exchange
it for tokens.</t>
      <t>The <tt>jkt#S384</tt> confirmation method, <tt>dpop_jkt_method</tt> parameter,
and <tt>ath#S384</tt> claim provide the same structural security properties
as their SHA-256 counterparts defined in DPoP <xref target="RFC9449"/>. The
authorization code binding via <tt>dpop_jkt</tt> and the access token
binding via <tt>ath</tt> remain intact regardless of the hash algorithm
used.</t>
      <t>SHA-384 provides a 192-bit collision resistance and 384-bit preimage
resistance, exceeding the 128-bit and 256-bit levels provided by
SHA-256. The use of SHA-384 is suitable for deployments with elevated
security requirements.</t>
      <t>Deployments that do not have specific requirements mandating SHA-384
do not need to migrate away from the established SHA-256 based
mechanisms.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="pkce-code-challenge-method-registration">
        <name>PKCE Code Challenge Method Registration</name>
        <t>This document requests registration of the following value in the
"PKCE Code Challenge Methods" registry established by <xref section="6.2" sectionFormat="of" target="RFC7636"/>:</t>
        <dl>
          <dt>Code Challenge Method Parameter Name:</dt>
          <dd>
            <t><tt>S384</tt></t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="S384"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="dpop-binding-registry">
        <name>DPoP Authorization Code Binding Methods Registry</name>
        <t>This document establishes the "DPoP Authorization Code Binding
Methods" registry for <tt>dpop_jkt_method</tt> values.</t>
        <t>New entries are registered using the Specification Required policy
<xref target="RFC5226"/>.</t>
        <t>The initial contents of the registry are:</t>
        <dl>
          <dt>Method Name:</dt>
          <dd>
            <t><tt>S256</tt></t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref section="10" sectionFormat="of" target="RFC9449"/></t>
          </dd>
          <dt>Method Name:</dt>
          <dd>
            <t><tt>S384</tt></t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="dpop-jkt-method"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-parameters-registrations">
        <name>OAuth Parameters Registrations</name>
        <t>This document requests registration of the following value in the
"OAuth Parameters" registry established by <xref target="RFC6749"/>:</t>
        <dl>
          <dt>Parameter Name:</dt>
          <dd>
            <t><tt>dpop_jkt_method</tt></t>
          </dd>
          <dt>Parameter Usage Location:</dt>
          <dd>
            <t>authorization request</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="dpop-jkt-method"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This document requests registration of the following value in the
"OAuth Authorization Server Metadata" registry established by
<xref target="RFC8414"/>:</t>
        <dl>
          <dt>Metadata Name:</dt>
          <dd>
            <t><tt>dpop_jkt_methods_supported</tt></t>
          </dd>
          <dt>Metadata Description:</dt>
          <dd>
            <t>JSON array containing a list of the <tt>dpop_jkt_method</tt>
values supported by the Authorization Server</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="dpop-as-metadata"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="jwt-claims-registration">
        <name>JWT Claims Registration</name>
        <t>This document requests registration of the following value in the
"JSON Web Token Claims" registry established by <xref target="RFC7519"/>:</t>
        <dl>
          <dt>Claim Name:</dt>
          <dd>
            <t><tt>ath#S384</tt></t>
          </dd>
          <dt>Claim Description:</dt>
          <dd>
            <t>The base64url-encoded SHA-384 hash of the ASCII encoding
of the associated access token's value</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="dpop-ath"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-protected-resource-metadata-registration">
        <name>OAuth Protected Resource Metadata Registration</name>
        <t>This document requests registration of the following value in the
"OAuth Protected Resource Metadata" registry established by
<xref target="RFC9728"/>:</t>
        <dl>
          <dt>Metadata Name:</dt>
          <dd>
            <t><tt>dpop_ath_methods_supported</tt></t>
          </dd>
          <dt>Metadata Description:</dt>
          <dd>
            <t>JSON array containing a list of the access token hash
claim names supported by the Resource Server</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="dpop-rs-metadata"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="jwt-confirmation-methods-registrations">
        <name>JWT Confirmation Methods Registrations</name>
        <t>This document requests registration of the following values in the
"JWT Confirmation Methods" registry established by <xref target="RFC7800"/>:</t>
        <dl>
          <dt>Confirmation Method Value:</dt>
          <dd>
            <t><tt>x5t#S384</tt></t>
          </dd>
          <dt>Confirmation Method Description:</dt>
          <dd>
            <t>X.509 Certificate SHA-384 Thumbprint</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="x5t-S384"/> of this document</t>
          </dd>
          <dt>Confirmation Method Value:</dt>
          <dd>
            <t><tt>jkt#S384</tt></t>
          </dd>
          <dt>Confirmation Method Description:</dt>
          <dd>
            <t>JWK SHA-384 Thumbprint</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document(s):</dt>
          <dd>
            <t><xref target="jkt-S384"/> of this document</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7636">
          <front>
            <title>Proof Key for Code Exchange by OAuth Public Clients</title>
            <author fullname="N. Sakimura" initials="N." role="editor" surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Agarwal" initials="N." surname="Agarwal"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>OAuth 2.0 public clients utilizing the Authorization Code Grant are susceptible to the authorization code interception attack. This specification describes the attack as well as a technique to mitigate against the threat through the use of Proof Key for Code Exchange (PKCE, pronounced "pixy").</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7636"/>
          <seriesInfo name="DOI" value="10.17487/RFC7636"/>
        </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="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="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="OpenID.Discovery" target="https://openid.net/specs/openid-connect-discovery-1_0-errata2.html">
          <front>
            <title>OpenID Connect Discovery 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="E." surname="Jay">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </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>
        <reference anchor="RFC5226">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>Many protocols make use of identifiers consisting of constants and other well-known values. Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t>
              <t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made. If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role. This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t>
              <t>This document obsoletes RFC 2434. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5226"/>
          <seriesInfo name="DOI" value="10.17487/RFC5226"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="cnsafaq" target="https://media.defense.gov/2022/Sep/07/2003071836/-1/-1/0/CSI_CNSA_2.0_FAQ_.PDF">
          <front>
            <title>The Commercial National Security Algorithm Suite 2.0 and Quantum Computing FAQ</title>
            <author>
              <organization>National Security Agency</organization>
            </author>
            <date year="2024" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 462?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
