<?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.31 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nandakumar-moq-generic-dpop-proof-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="dpop-proof">Application-Agnostic Demonstration Proof of Possession (DPoP) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-nandakumar-moq-generic-dpop-proof-00"/>
    <author fullname="Suhas Nandakumar">
      <organization>Cisco Systems</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author fullname="Cullen Jennings">
      <organization>Cisco Systems</organization>
      <address>
        <email>fluffy@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="01"/>
    <area>Applications and Real-Time</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>DPoP</keyword>
    <keyword>Proof of Possession</keyword>
    <keyword>Authentication</keyword>
    <keyword>Authorization</keyword>
    <keyword>MOQ</keyword>
    <abstract>
      <?line 59?>

<t>This document describes a generic framework for Demonstrating Proof of
Possession (DPoP) that extends beyond HTTP-specific implementations. Building
upon RFC 9449, this framework provides a protocol-agnostic approach for
sender-constraining tokens through cryptographic proof of possession, enabling
secure token binding across various application protocols and contexts. The
framework supports both JWT-based proofs (for compatibility with existing OAuth
deployments) and CWT-based proofs (for compact binary encoding and
interoperability with Common Access Token systems).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://moq-wg.github.io/dpop-generic-proof/draft-nandakumar-moq-dpop-proof.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nandakumar-moq-dpop-proof/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/moq-wg/dpop-generic-proof"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC 9449 <xref target="RFC9449"/> defines a mechanism for sender-constraining OAuth 2.0
tokens via a proof-of-possession mechanism on the application level. DPoP as
defined in RFC 9449 has two separable parts: the first part (covered in
sections 4, 5, 6, and 8) describes how a client obtains a DPoP-bound token
from an authorization server, while the second part (covered in sections 7 and
9) describes how the client proves control of the private key associated with
a DPoP token when accessing protected resources.</t>
      <t>This specification defines bindings for Media Over QUIC Transport (MOQT) and
presents a generic framework that abstracts the core concepts of DPoP into a
protocol-agnostic approach. While keeping the first part unchanged, this
framework generalizes the second part to enable proof-of-possession token
binding for various application contexts beyond HTTP while maintaining the
security properties established in RFC 9449.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</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>The terms "access token", "refresh token", "authorization server", "resource
server", "client", and "public client" are defined by "The OAuth 2.0
Authorization Framework" <xref target="RFC6749"/>.</t>
        <t>The terms "JSON Web Token (JWT)", "JOSE Header", and "JWS" are defined in
<xref target="RFC7519"/> and <xref target="RFC7515"/>.</t>
        <t>The terms "CBOR Web Token (CWT)", "COSE", and "COSE Key" are defined in
<xref target="RFC8392"/>, <xref target="RFC9052"/>, and <xref target="RFC9053"/>.</t>
        <t>The term "CWT Confirmation" is defined in <xref target="RFC8747"/>.</t>
        <dl>
          <dt>Application protocol:</dt>
          <dd>
            <t>The protocol which uses DPoP tokens as proof of authorization. This may be
HTTP (as in RFC 9449) or any other application-layer protocol that requires
proof-of-possession token binding.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="protocol-overview-and-concept">
      <name>Protocol Overview and Concept</name>
      <t>The Generic DPoP Framework extends the DPoP mechanism to work across various
application protocols beyond HTTP. The basic flow involves a client obtaining
a DPoP-bound token from an authorization server, then using that token with
an application protocol by providing proof of possession of the associated
private key.</t>
      <figure anchor="fig-generic-dpop-flow">
        <name>Generic DPoP Flow</name>
        <artwork><![CDATA[
+--------+                                          +---------------+
|        |--(A)-- Token Request ------------------->|               |
| Client |        (Generic DPoP Proof)              | Authorization |
|        |                                          |     Server    |
|        |<-(B)-- DPoP-Bound Access Token ----------|               |
|        |        (token_type=DPoP)                 +---------------+
|        |
|        |
|        |                                          +---------------+
|        |--(C)-- Application Protocol Request --->|               |
| Client |        (DPoP-Bound Access Token +       | Application   |
|        |         Generic DPoP Proof with         |   Protocol    |
|        |         Binding Fields)                 |    Server     |
|        |<-(D)-- Application Protocol Response ---|               |
+--------+                                          +---------------+
]]></artwork>
      </figure>
      <t>The main data structure introduced by this specification is a generic DPoP
proof that can be used across various application protocols and contexts,
as described in detail below. This proof can be encoded as either a JWT
(JSON Web Token) or CWT (CBOR Web Token), depending on deployment requirements.
A client uses a generic DPoP proof to prove the possession of a private key
corresponding to a certain public key.</t>
      <t>Roughly speaking, a generic DPoP proof is a signature over:</t>
      <ul spacing="normal">
        <li>
          <t>protocol-specific authorization context data,</t>
        </li>
        <li>
          <t>a timestamp,</t>
        </li>
        <li>
          <t>a unique identifier,</t>
        </li>
        <li>
          <t>an optional server-provided nonce, and</t>
        </li>
        <li>
          <t>a hash of the associated access token when an access token is present
within the request.</t>
        </li>
      </ul>
      <t>The application protocol needs to define binding fields that make the proof
unique to a specific protocol interaction. These binding fields replace the
HTTP method (<tt>htm</tt>) and HTTP URI (<tt>htu</tt>) fields used in RFC 9449, providing
protocol-specific context that prevents replay attacks across different
protocol operations.</t>
      <t>Key aspects of the protocol:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Token Acquisition (Steps A-B)</strong>: Uses the same mechanism as RFC 9449
sections 4, 5, 6, and 8</t>
        </li>
        <li>
          <t><strong>Proof of Possession (Steps C-D)</strong>: Generalizes RFC 9449 sections 7 and 9
with protocol-specific binding fields</t>
        </li>
        <li>
          <t><strong>Binding Fields</strong>: Each application protocol must define how to bind the
proof to specific protocol operations to ensure uniqueness</t>
        </li>
      </ol>
      <t>The basic steps of a protocol flow with generic DPoP (without the optional
nonce) are shown in <xref target="fig-generic-dpop-flow"/>.</t>
      <t>A. In the token request, the client sends an authorization grant (e.g., an
authorization code, refresh token, etc.) to the authorization server in order
to obtain an access token (and potentially a refresh token). The client
attaches a generic DPoP proof to the request.</t>
      <t>B. The authorization server binds (sender-constrains) the access token to the
public key claimed by the client in the DPoP proof; that is, the access token
cannot be used without proving possession of the respective private key. If a
refresh token is issued to a public client, it is also bound to the public key
of the DPoP proof.</t>
      <t>C. To use the access token, the client has to prove possession of the private
key by, again, providing a generic DPoP proof for that request to the protocol
server. The protocol server needs to receive information about the public key
to which the access token is bound. This information may be encoded directly
into the access token (for JWT-structured access tokens) or provided via token
introspection endpoint (not shown). The protocol server verifies that the
public key to which the access token is bound matches the public key of the
DPoP proof. It also verifies that the access token hash in the DPoP proof
matches the access token presented in the request.</t>
      <t>D. The protocol server refuses to serve the request if the signature check
fails or if the data in the DPoP proof is wrong, e.g., the authorization
context does not match the expected context for the protocol operation. The
access token itself, of course, must also be valid in all other respects.</t>
      <t>The generic DPoP mechanism presented herein is not a client authentication
method. In fact, a primary use case of DPoP is for public clients (e.g.,
single-page applications and applications on a user's device) that do not use
client authentication. Nonetheless, generic DPoP is designed to be compatible
with private_key_jwt and all other client authentication methods.</t>
      <t>Generic DPoP does not directly ensure message integrity, but it relies on the
underlying transport security layer (such as TLS) for that purpose. See
<xref target="security-considerations"/> for details.</t>
    </section>
    <section anchor="application-protocol-requirements">
      <name>Application Protocol Requirements</name>
      <t>Application protocols that wish to use this generic DPoP framework <bcp14>MUST</bcp14> define
the following elements to ensure secure proof-of-possession token binding:</t>
      <section anchor="binding-fields-definition">
        <name>Binding Fields Definition</name>
        <t>Each application protocol <bcp14>MUST</bcp14> specify:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Required Binding Fields</strong>: The mandatory fields within the Authorization
Context (<tt>actx</tt>) object that uniquely identify and bind the proof to a
specific protocol operation</t>
          </li>
          <li>
            <t><strong>Field Semantics</strong>: Clear definitions of what each binding field represents
and how it relates to protocol messages and operations</t>
          </li>
          <li>
            <t><strong>Uniqueness Requirements</strong>: How the combination of binding fields ensures
that each proof is unique to a specific protocol interaction</t>
          </li>
        </ol>
      </section>
      <section anchor="nonce-support">
        <name>Nonce Support</name>
        <t>Application protocols <bcp14>SHOULD</bcp14> provide a mechanism for servers to supply nonces
to clients for replay protection, similar to Section 9 of RFC 9449. When
nonce support is provided, the protocol specification <bcp14>MUST</bcp14> define:</t>
        <ol spacing="normal" type="1"><li>
            <t>How nonces are communicated from server to client</t>
          </li>
          <li>
            <t>The lifetime and scope of nonces</t>
          </li>
          <li>
            <t>How clients incorporate nonces into DPoP proofs</t>
          </li>
        </ol>
      </section>
      <section anchor="security-requirements">
        <name>Security Requirements</name>
        <t>Application protocol specifications <bcp14>MUST</bcp14> include:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Replay Attack Prevention</strong>: How the binding fields prevent replay of
proofs across different protocol operations</t>
          </li>
          <li>
            <t><strong>Cross-Protocol Security</strong>: Measures to prevent proofs from being valid
across different application protocols</t>
          </li>
          <li>
            <t><strong>Protocol-Specific Threat Model</strong>: Analysis of security threats specific
to the application protocol context</t>
          </li>
        </ol>
      </section>
      <section anchor="example-binding-implementation">
        <name>Example Binding Implementation</name>
        <t>For illustration, an application protocol might define binding fields such as:</t>
        <ul spacing="normal">
          <li>
            <t><tt>operation</tt>: The specific protocol operation being authorized</t>
          </li>
          <li>
            <t><tt>resource_identifier</tt>: A unique identifier for the resource being accessed</t>
          </li>
          <li>
            <t><tt>timestamp_context</tt>: Protocol-specific temporal context information</t>
          </li>
        </ul>
        <t>The combination of these fields would ensure that a DPoP proof is valid only
for the specific operation, resource, and temporal context for which it was
generated.</t>
      </section>
    </section>
    <section anchor="application-agnostic-dpop-proof-structure">
      <name>Application-Agnostic DPoP Proof Structure</name>
      <t>This framework supports DPoP proofs in two formats:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>JWT-based DPoP Proofs</strong>: Using JSON Web Token structure as defined in
<xref target="RFC7519"/>, consistent with RFC 9449</t>
        </li>
        <li>
          <t><strong>CWT-based DPoP Proofs</strong>: Using CBOR Web Token structure as defined in
<xref target="RFC8392"/>, enabling compact binary encoding suitable for constrained
environments and interoperability with Common Access Token (CAT)
<xref target="CTA-5007-B"/></t>
        </li>
      </ol>
      <t>Both formats share the same core structure as a standard DPoP proof as defined
in RFC 9449, with the key difference being that the HTTP-specific claims (<tt>htm</tt>
for HTTP method and <tt>htu</tt> for HTTP URI) are replaced with the Authorization
Context (<tt>actx</tt>) object to provide application protocol-specific binding
information.</t>
      <section anchor="choosing-between-jwt-and-cwt-formats">
        <name>Choosing Between JWT and CWT Formats</name>
        <t>Implementations should choose between JWT and CWT formats based on their
deployment requirements:</t>
        <t><strong>Use JWT-based DPoP proofs when:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Integrating with existing OAuth 2.0 infrastructure that uses JWT</t>
          </li>
          <li>
            <t>Interoperating with systems that expect JSON-based tokens</t>
          </li>
          <li>
            <t>Human readability of tokens is beneficial for debugging</t>
          </li>
          <li>
            <t>The deployment does not have strict size constraints</t>
          </li>
        </ul>
        <t><strong>Use CWT-based DPoP proofs when:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Integrating with Common Access Token (CAT) <xref target="CTA-5007-B"/> systems</t>
          </li>
          <li>
            <t>Operating in bandwidth-constrained environments where compact encoding
matters</t>
          </li>
          <li>
            <t>The protocol already uses CBOR encoding for other data structures</t>
          </li>
          <li>
            <t>Interoperating with IoT or constrained device deployments</t>
          </li>
        </ul>
        <t>Servers <bcp14>MAY</bcp14> support both formats simultaneously. When doing so, they <bcp14>MUST</bcp14>
validate the format indicator in the proof header (<tt>dpop-proof+jwt</tt> or
<tt>dpop-proof+cwt</tt>) and process the proof according to the indicated format.</t>
      </section>
      <section anchor="authorization-context-object">
        <name>Authorization Context Object</name>
        <t>The core extension introduced by this framework is the Authorization Context
(<tt>actx</tt>) object, which replaces protocol-specific fields in the DPoP proof JWT
payload.</t>
        <t>A generic DPoP proof JWT <bcp14>MUST</bcp14> contain an Authorization Context object
(<tt>actx</tt>) that specifies the protocol or context for which the proof is being
generated.</t>
        <section anchor="authorization-context-object-structure">
          <name>Authorization Context Object Structure</name>
          <t>The Authorization Context (<tt>actx</tt>) object <bcp14>MUST</bcp14> contain:</t>
          <ul spacing="normal">
            <li>
              <t>type (string): A registered identifier specifying the protocol or context
type</t>
            </li>
            <li>
              <t>Additional fields as defined by the specific context type specification</t>
            </li>
          </ul>
          <sourcecode type="json"><![CDATA[
{
  "actx": {
    "type": "protocol-identifier"
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="jwt-dpop">
        <name>JWT-based DPoP Proof Structure</name>
        <t>This section defines the JWT-based DPoP proof format for use with JSON-based
systems and standard OAuth deployments.</t>
        <section anchor="jwt-header-requirements">
          <name>JWT Header Requirements</name>
          <t>The JWT header for a generic DPoP proof <bcp14>MUST</bcp14> contain the same elements as
specified in <xref target="RFC9449"/>:</t>
          <ul spacing="normal">
            <li>
              <t>typ: <bcp14>MUST</bcp14> be "dpop-proof+jwt"</t>
            </li>
            <li>
              <t>alg: An asymmetric signature algorithm identifier</t>
            </li>
            <li>
              <t>jwk: The public key used for verification</t>
            </li>
          </ul>
        </section>
        <section anchor="jwt-payload-requirements">
          <name>JWT Payload Requirements</name>
          <t>The JWT payload for a generic DPoP proof <bcp14>MUST</bcp14> contain:</t>
          <ul spacing="normal">
            <li>
              <t>jti: A unique identifier for the JWT</t>
            </li>
            <li>
              <t>iat: Issued-at time</t>
            </li>
            <li>
              <t>actx: Authorization Context object (if not using HTTP binding)</t>
            </li>
          </ul>
          <t>Additional claims:</t>
          <ul spacing="normal">
            <li>
              <t>ath: Access token hash. <bcp14>REQUIRED</bcp14> when the DPoP proof is sent together with
an access token to a resource server. Contains the base64url-encoded SHA-256
hash of the access token.</t>
            </li>
            <li>
              <t>nonce: Server-provided nonce for replay protection. <bcp14>OPTIONAL</bcp14>, included when
the server has provided a nonce value.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="cwt-dpop">
        <name>CWT-based DPoP Proof Structure</name>
        <t>This section defines the CWT-based DPoP proof format for use with CBOR-based
systems, constrained environments, and systems using Common Access Token (CAT)
<xref target="CTA-5007-B"/>.</t>
        <section anchor="cwt-protected-header-requirements">
          <name>CWT Protected Header Requirements</name>
          <t>The CWT protected header for a generic DPoP proof <bcp14>MUST</bcp14> contain the following
parameters defined in <xref target="RFC9052"/>:</t>
          <ul spacing="normal">
            <li>
              <t>alg (label 1): A COSE algorithm identifier for an asymmetric signature
algorithm (e.g., -7 for ES256, -35 for ES384, -36 for ES512)</t>
            </li>
            <li>
              <t>typ (label 16): <bcp14>MUST</bcp14> be "dpop-proof+cwt"</t>
            </li>
            <li>
              <t>COSE_Key (label 4): The public key used for verification, encoded as a
COSE_Key structure per <xref target="RFC9052"/></t>
            </li>
          </ul>
        </section>
        <section anchor="cwt-claims-requirements">
          <name>CWT Claims Requirements</name>
          <t>The CWT claims set for a generic DPoP proof <bcp14>MUST</bcp14> contain:</t>
          <ul spacing="normal">
            <li>
              <t>cti (label 7): A unique identifier for the CWT, encoded as a byte string</t>
            </li>
            <li>
              <t>iat (label 6): Issued-at time as a NumericDate</t>
            </li>
            <li>
              <t>actx (label TBD): Authorization Context object</t>
            </li>
          </ul>
          <t>Additional claims:</t>
          <ul spacing="normal">
            <li>
              <t>ath (label TBD): Access token hash. <bcp14>REQUIRED</bcp14> when the DPoP proof is sent
together with an access token to a resource server. Encoded as a byte string
containing the SHA-256 hash of the access token.</t>
            </li>
            <li>
              <t>nonce (label TBD): Server-provided nonce for replay protection. <bcp14>OPTIONAL</bcp14>,
included when the server has provided a nonce value. Encoded as a text
string.</t>
            </li>
          </ul>
        </section>
        <section anchor="cwt-authorization-context-structure">
          <name>CWT Authorization Context Structure</name>
          <t>The Authorization Context in CWT format uses CBOR encoding with integer keys
for compact representation:</t>
          <sourcecode type="cddl"><![CDATA[
actx = {
  type: tstr,           ; Protocol type identifier (key 0)
  * int => any          ; Protocol-specific fields
}
]]></sourcecode>
          <t>For MOQT contexts, the CWT Authorization Context uses:</t>
          <sourcecode type="cddl"><![CDATA[
moqt-actx = {
  0: "moqt",            ; type
  1: tstr,              ; action
  2: tstr,              ; tns (track namespace)
  ? 3: tstr,            ; tn (track name)
  ? 4: any              ; parameters
}
]]></sourcecode>
        </section>
        <section anchor="cddl-definition-for-cwt-dpop-proof">
          <name>CDDL Definition for CWT DPoP Proof</name>
          <t>The complete CDDL definition for a CWT-based DPoP proof is:</t>
          <sourcecode type="cddl"><![CDATA[
dpop-proof-cwt = COSE_Sign1

dpop-protected-header = {
  1 => int,                    ; alg
  16 => "dpop-proof+cwt",      ; typ
  4 => COSE_Key                ; COSE_Key
}

; Claims for DPoP proof at token endpoint (no access token yet)
dpop-cwt-claims-token-request = {
  7 => bstr,                   ; cti (unique identifier)
  6 => numericdate,            ; iat (issued at)
  actx-label => actx,          ; actx (authorization context)
  ? nonce-label => tstr,       ; nonce (optional)
}

; Claims for DPoP proof at resource server (with access token)
dpop-cwt-claims-resource-access = {
  7 => bstr,                   ; cti (unique identifier)
  6 => numericdate,            ; iat (issued at)
  actx-label => actx,          ; actx (authorization context)
  ath-label => bstr,           ; ath (REQUIRED, SHA-256 hash of access token)
  ? nonce-label => tstr,       ; nonce (optional)
}

actx-label = TBD              ; To be assigned by IANA
nonce-label = TBD             ; To be assigned by IANA
ath-label = TBD               ; To be assigned by IANA

numericdate = int / float
]]></sourcecode>
        </section>
        <section anchor="token-binding-with-cwt-access-tokens">
          <name>Token Binding with CWT Access Tokens</name>
          <t>When using CWT-based access tokens (such as Common Access Token), the DPoP
binding is established using the confirmation claim (<tt>cnf</tt>, label 8) as
defined in <xref target="RFC8747"/>. The <tt>cnf</tt> claim contains the key confirmation:</t>
          <ul spacing="normal">
            <li>
              <t>For JWT DPoP proofs: Use the <tt>jkt</tt> confirmation method containing the
JWK SHA-256 Thumbprint as defined in <xref target="RFC7638"/></t>
            </li>
            <li>
              <t>For CWT DPoP proofs: Use the <tt>ckt</tt> confirmation method containing the
COSE Key Thumbprint as defined in <xref target="RFC9679"/></t>
            </li>
          </ul>
          <t>Example CWT access token with DPoP binding:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  / iss / 1: "auth.example.com",
  / aud / 3: "resource.example.com",
  / exp / 4: 1705209856,
  / iat / 6: 1705123456,
  / cnf / 8: {
    / jkt / 323: h'fUHyO2r2Z3DZ53EsNrWBb1xWXM4VbCqpW5G-o9GqC7Y'
  }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="protocol-type-registry">
      <name>Protocol Type Registry</name>
      <t>This framework establishes a registry for protocol type identifiers used in
the <tt>actx.type</tt> field. Each registered type <bcp14>MUST</bcp14> specify:</t>
      <ol spacing="normal" type="1"><li>
          <t>The additional required and optional fields for the Authorization
Context</t>
        </li>
        <li>
          <t>The semantic meaning and validation rules for those fields</t>
        </li>
        <li>
          <t>Security considerations specific to the protocol context</t>
        </li>
        <li>
          <t>Examples of usage</t>
        </li>
      </ol>
      <section anchor="moq-context">
        <name>MOQT Context Type</name>
        <t>This section defines the normative authorization context for Media Over QUIC
Transport (MOQT) as specified in this framework.</t>
        <t>Type Identifier: "moqt"</t>
        <section anchor="required-fields">
          <name>Required Fields</name>
          <t>The MOQT authorization context <bcp14>MUST</bcp14> contain the following fields:</t>
          <t>action:</t>
          <t>A string specifying the MOQ operation (Section 9 of <xref target="MOQTransport"/>
being authorized.</t>
          <t>tns:</t>
          <t>Track Namespace tuple serialized using the canonical encoding format defined
in <xref target="moq-context"/>.</t>
        </section>
        <section anchor="optional-fields">
          <name>Optional Fields</name>
          <t>The MOQT authorization context <bcp14>MAY</bcp14> contain the following fields:</t>
          <t>tn:</t>
          <t>Track Name serialized using the canonical encoding format defined in
<xref target="moq-context"/>.</t>
          <t>parameters:</t>
          <t>An object containing additional MOQT-specific parameters relevant to the
operation. The structure and contents of this field are context-dependent.</t>
        </section>
        <section anchor="string-encoding-for-binary-data">
          <name>String Encoding for Binary Data</name>
          <t>As defined in Section 2.4.1 of <xref target="MOQTransport"/>, Track Namespace is an ordered
N-tuple of bytes and Track Name is a sequence of bytes.</t>
          <t>The <tt>tns</tt> and <tt>tn</tt> fields in the Authorization Context <bcp14>MUST</bcp14> use the canonical
serialization format defined in Section 1.5.1 of <xref target="MOQTransport"/>:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>tns</tt> field contains namespace tuple elements, each serialized per
Section 1.5.1, joined by hyphens (-)</t>
            </li>
            <li>
              <t>The <tt>tn</tt> field (when present) contains the track name serialized per
Section 1.5.1</t>
            </li>
          </ul>
          <section anchor="examples">
            <name>Examples</name>
            <ul spacing="normal">
              <li>
                <t>Namespace ("example.net", "team2", "project_x") with track name "report":
<tt>"tns": "example.2enet-team2-project_x"</tt>, <tt>"tn": "report"</tt></t>
              </li>
              <li>
                <t>Namespace ("conference", "room1") with track name "audio.opus":
<tt>"tns": "conference-room1"</tt>, <tt>"tn": "audio.2eopus"</tt></t>
              </li>
              <li>
                <t>Namespace with binary bytes [0xFF, 0x01] and [0x02]:
<tt>"tns": ".ff.01-.02"</tt></t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="validation-requirements">
          <name>Validation Requirements</name>
          <t>Servers processing MOQ authorization contexts <bcp14>MUST</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Verify that the <tt>action</tt> field contains a recognized MOQT operation</t>
            </li>
            <li>
              <t>Validate that the <tt>tns</tt> field represents a properly formatted track
namespace tuple encoding as specified above</t>
            </li>
            <li>
              <t>If present, validate that the <tt>tn</tt> field contains properly encoded track
name bytes</t>
            </li>
            <li>
              <t>Ensure the requested action is permitted for the specified track
namespace tuple</t>
            </li>
            <li>
              <t>If present, ensure the requested action is permitted for the specified
track name</t>
            </li>
            <li>
              <t>If present, validate any parameters according to usage context</t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="application-agnostic-dpop-proof-examples">
      <name>Application-Agnostic DPoP Proof Examples</name>
      <t>This section provides complete examples of application-agnostic DPoP proofs in
both JWT and CWT formats, illustrating the use of the Authorization Context
object in place of HTTP-specific claims.</t>
      <section anchor="jwt-format-examples">
        <name>JWT Format Examples</name>
        <section anchor="example-moqt-context-dpop-proof-jwt">
          <name>Example: MOQT Context DPoP Proof (JWT)</name>
          <t>The following example shows a complete DPoP proof JWT for a MOQT context:</t>
          <t>JWT Header:</t>
          <sourcecode type="json"><![CDATA[
{
  "typ": "dpop-proof+jwt",
  "alg": "ES256",
  "jwk": {
    "kty": "EC",
    "x": "l8tFrhx-34tV3hRICRDY9zCkDlpBhF42UQUfWVAWBFs",
    "y": "9VE4jf_Ok_o64zbTTlcuNJajHmt6v9TDVrU0CdvGRDA",
    "crv": "P-256"
  }
}
]]></sourcecode>
          <t>JWT Payload:</t>
          <sourcecode type="json"><![CDATA[
{
  "jti": "unique-request-id-789",
  "iat": 1705123456,
  "actx": {
    "type": "moqt",
    "action": "SUBSCRIBE",
    "tns": "example.2ecom-app-scope-video",
    "tn": "camera1"
  },
  "ath": "fUHyO2r2Z3DZ53EsNrWBb1xWXM4VbCqpW5G-o9GqC7Y"
}
]]></sourcecode>
        </section>
        <section anchor="comparing-with-http-dpop">
          <name>Comparing with HTTP DPoP</name>
          <t>For comparison, an equivalent HTTP DPoP proof would contain <tt>htm</tt> and <tt>htu</tt>
claims instead of the <tt>actx</tt> object:</t>
          <sourcecode type="json"><![CDATA[
{
  "jti": "unique-request-id-789",
  "iat": 1705123456,
  "htm": "POST",
  "htu": "https://media.example.com/subscribe",
  "ath": "fUHyO2r2Z3DZ53EsNrWBb1xWXM4VbCqpW5G-o9GqC7Y"
}
]]></sourcecode>
          <t>The key difference is that the application-agnostic framework uses the <tt>actx</tt> object to
provide protocol-specific authorization context, while HTTP DPoP uses <tt>htm</tt> and
<tt>htu</tt> for HTTP method and URI.</t>
        </section>
      </section>
      <section anchor="cwt-format-examples">
        <name>CWT Format Examples</name>
        <section anchor="example-moqt-context-dpop-proof-cwt">
          <name>Example: MOQT Context DPoP Proof (CWT)</name>
          <t>The following example shows a complete DPoP proof CWT for a MOQT context using
CBOR diagnostic notation. This is the proof that the client creates and sends
to demonstrate possession of the private key corresponding to the public key
bound to the access token:</t>
          <t>CWT Protected Header:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  / alg: ES256 / 1: -7,
  / typ / 16: "dpop-proof+cwt",
  / COSE_Key / 4: {
    / kty: EC2 / 1: 2,
    / crv: P-256 / -1: 1,
    / x / -2: h'97cb45ae1c7f37855d788810883698f730a40e5a4194
                 0e24502bbf915a56606b',
    / y / -3: h'f55138a5ff13ca4f7e06b4d2cbcd0c1697f3de37c6d4
                 a6eb5735ebd5fc01483f'
  }
}
]]></sourcecode>
          <t>CWT Claims Set:</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  / cti / 7: h'756e697175652d72657175657374',
  / iat / 6: 1705123456,
  / actx / TBD: {
    / type / 0: "moqt",
    / action / 1: "SUBSCRIBE",
    / tns / 2: "example.2ecom-app-scope-video",
    / tn / 3: "camera1"
  },
  / ath / TBD: h'7d41f23b6af667701de7712c36b5816f5c5619
                 cc555cca63ab099fa8f46a8ca6'
}
]]></sourcecode>
        </section>
        <section anchor="example-cwt-dpop-proof-with-common-access-token">
          <name>Example: CWT DPoP Proof with Common Access Token</name>
          <t>This example shows the structure of the access token issued by the authorization
server, not the DPoP proof itself. When using CWT DPoP proofs with Common Access
Token (CAT) <xref target="CTA-5007-B"/>, the access token is a CWT with a <tt>cnf</tt> claim binding
to the DPoP proof key.</t>
          <t>Access Token (CWT):</t>
          <sourcecode type="cbor-diag"><![CDATA[
{
  / iss / 1: "auth.example.com",
  / aud / 3: "resource.example.com",
  / exp / 4: 1705209856,
  / iat / 6: 1705123456,
  / cti / 7: h'746f6b656e2d6964',
  / cnf / 8: {
    / jkt / 323: h'7d41f23b6af667701de7712c36b5816f5c5619
                   cc555cca63ab099fa8f46a8ca6'
  },
  / catdpop / 321: {
    / window / 0: 300,
    / jti / 1: 1
  }
}
]]></sourcecode>
          <t>The <tt>catdpop</tt> claim (label 321) provides DPoP-specific settings as defined in
<xref target="CTA-5007-B"/>:</t>
          <ul spacing="normal">
            <li>
              <t><tt>window</tt> (key 0): Acceptable time window for DPoP proofs in seconds</t>
            </li>
            <li>
              <t><tt>jti</tt> (key 1): JTI processing semantics (0=ignore, 1=may honor for replay
detection)</t>
            </li>
          </ul>
          <t>The corresponding DPoP proof binds to this access token through the <tt>ath</tt>
claim containing the SHA-256 hash of the access token.</t>
        </section>
        <section anchor="comparing-jwt-and-cwt-formats">
          <name>Comparing JWT and CWT Formats</name>
          <t>The following table summarizes the mapping between JWT and CWT DPoP proof
elements:</t>
          <table>
            <thead>
              <tr>
                <th align="left">JWT Element</th>
                <th align="left">CWT Element</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Header.typ</td>
                <td align="left">Protected.typ (16)</td>
                <td align="left">"dpop-proof+jwt" or "dpop-proof+cwt"</td>
              </tr>
              <tr>
                <td align="left">Header.alg</td>
                <td align="left">Protected.alg (1)</td>
                <td align="left">Signature algorithm</td>
              </tr>
              <tr>
                <td align="left">Header.jwk</td>
                <td align="left">Protected.COSE_Key (4)</td>
                <td align="left">Public key for verification</td>
              </tr>
              <tr>
                <td align="left">Payload.jti</td>
                <td align="left">Claims.cti (7)</td>
                <td align="left">Unique identifier</td>
              </tr>
              <tr>
                <td align="left">Payload.iat</td>
                <td align="left">Claims.iat (6)</td>
                <td align="left">Issued-at timestamp</td>
              </tr>
              <tr>
                <td align="left">Payload.actx</td>
                <td align="left">Claims.actx (TBD)</td>
                <td align="left">Authorization context</td>
              </tr>
              <tr>
                <td align="left">Payload.nonce</td>
                <td align="left">Claims.nonce (TBD)</td>
                <td align="left">Server-provided nonce</td>
              </tr>
              <tr>
                <td align="left">Payload.ath</td>
                <td align="left">Claims.ath (TBD)</td>
                <td align="left">Access token hash</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="relationship-to-rfc-9449">
      <name>Relationship to RFC 9449</name>
      <t>This framework extends and generalizes the concepts defined in RFC 9449
<xref target="RFC9449"/> while maintaining full backward compatibility with HTTP-based DPoP
implementations.</t>
      <section anchor="extensions-to-section-7-protected-resource-access">
        <name>Extensions to Section 7 (Protected Resource Access)</name>
        <t>RFC 9449 Section 7 defines protected resource access specifically for HTTP
contexts. This framework extends those concepts to support non-HTTP protocols
while preserving the core security model.</t>
        <section anchor="key-differences-from-rfc-9449-section-7">
          <name>Key Differences from RFC 9449 Section 7</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Authorization Context vs HTTP Parameters</strong>: Instead of requiring <tt>htm</tt>
(HTTP method) and <tt>htu</tt> (HTTP URI) claims, this framework uses the
Authorization Context (<tt>actx</tt>) object to specify protocol-specific request
context.</t>
            </li>
            <li>
              <t><strong>Protocol-Agnostic Token Binding</strong>: While RFC 9449 Section 7.1 defines
the DPoP authentication scheme for HTTP Authorization headers, this framework
enables token binding for protocols that may not use HTTP-style headers.</t>
            </li>
            <li>
              <t><strong>Flexible Proof Validation</strong>: The validation rules in RFC 9449 Section
4.3 are adapted to work with the <tt>actx</tt> object rather than HTTP-specific
claims, allowing servers to validate proofs according to their protocol
requirements.</t>
            </li>
          </ol>
        </section>
        <section anchor="compatibility-with-rfc-9449">
          <name>Compatibility with RFC 9449</name>
          <t>This framework is designed to coexist with RFC 9449 implementations:</t>
          <ul spacing="normal">
            <li>
              <t>HTTP-based DPoP proofs continue to work unchanged using <tt>htm</tt> and <tt>htu</tt>
claims</t>
            </li>
            <li>
              <t>Generic DPoP proofs use the <tt>actx</tt> object for non-HTTP contexts</t>
            </li>
            <li>
              <t>The same key pairs and token binding mechanisms apply to both approaches</t>
            </li>
            <li>
              <t>Authorization servers <bcp14>MAY</bcp14> support both HTTP and generic DPoP proof formats
simultaneously</t>
            </li>
          </ul>
        </section>
        <section anchor="migration-path">
          <name>Migration Path</name>
          <t>Existing RFC 9449 implementations can adopt this framework incrementally:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>HTTP-Only Phase</strong>: Continue using standard RFC 9449 DPoP for HTTP
resources</t>
            </li>
            <li>
              <t><strong>Hybrid Phase</strong>: Support both HTTP DPoP (with <tt>htm</tt>/<tt>htu</tt>) and generic
DPoP (with <tt>actx</tt>)</t>
            </li>
            <li>
              <t><strong>Generic Phase</strong>: Migrate to using Authorization Context objects for all
protocols, including HTTP</t>
            </li>
          </ol>
          <t>The <tt>typ</tt> header value <tt>dpop-proof+jwt</tt> (instead of <tt>dpop+jwt</tt>) signals
support for the generic framework while maintaining the same cryptographic
properties and security model.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This framework inherits all security considerations from <xref target="RFC9449"/>.
Additional considerations specific to the generic framework include:</t>
      <section anchor="context-type-validation">
        <name>Context Type Validation</name>
        <t>Servers <bcp14>MUST</bcp14> validate that the <tt>actx.type</tt> field corresponds to a registered
and supported context type. Unknown or unsupported context types <bcp14>MUST</bcp14> be
rejected.</t>
      </section>
      <section anchor="protocol-specific-security-requirements">
        <name>Protocol-Specific Security Requirements</name>
        <t>Each registered context type <bcp14>MUST</bcp14> specify its own security requirements and
threat model. The generic framework does not impose additional security
properties beyond those provided by the underlying JWT signature.</t>
      </section>
      <section anchor="cross-context-token-binding">
        <name>Cross-Context Token Binding</name>
        <t>DPoP tokens bound using this framework <bcp14>SHOULD</bcp14> be validated only within their
intended context type. Servers <bcp14>MUST NOT</bcp14> accept a DPoP proof with one context
type as valid for a different context type.</t>
      </section>
      <section anchor="application-separation-requirements">
        <name>Application Separation Requirements</name>
        <t>Clients <bcp14>MUST</bcp14> use different DPoP proofs for different applications. This
separation ensures that a DPoP proof generated for one application protocol
cannot be reused or replayed in the context of another application protocol.
Implementations <bcp14>SHOULD</bcp14> enforce this by:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Distinct Key Pairs</strong>: Using separate key pairs for different application
protocols where feasible</t>
          </li>
          <li>
            <t><strong>Context-Specific Binding</strong>: Ensuring that Authorization Context (<tt>actx</tt>)
objects contain fields that uniquely identify the application protocol</t>
          </li>
          <li>
            <t><strong>Proof Validation</strong>: Rejecting proofs that contain context information
from other application protocols</t>
          </li>
        </ol>
        <t>This requirement prevents cross-application attacks where an attacker might
attempt to use a valid DPoP proof from one application context in a different
application context.</t>
      </section>
      <section anchor="cwt-specific-security-considerations">
        <name>CWT-Specific Security Considerations</name>
        <t>When using CWT-based DPoP proofs, the following additional considerations
apply:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Algorithm Selection</strong>: CWT DPoP proofs <bcp14>MUST</bcp14> use COSE algorithms
registered for use with COSE_Sign1 as defined in <xref target="RFC9053"/>. The same
algorithm restrictions from <xref target="RFC9449"/> apply: symmetric algorithms <bcp14>MUST
NOT</bcp14> be used.</t>
          </li>
          <li>
            <t><strong>Key Confirmation Methods</strong>: When binding CWT access tokens to DPoP
proofs, implementations <bcp14>SHOULD</bcp14> prefer the <tt>jkt</tt> confirmation method for
interoperability with JWT-based DPoP proofs, or <tt>ckt</tt> (COSE Key Thumbprint)
when both token and proof are CWT-based.</t>
          </li>
          <li>
            <t><strong>Binary Encoding</strong>: While CWT provides compact encoding, implementations
<bcp14>MUST</bcp14> ensure that the encoded proof does not exceed transport-specific size
limits.</t>
          </li>
          <li>
            <t><strong>Cross-Format Attacks</strong>: Servers that accept both JWT and CWT DPoP proofs
<bcp14>MUST</bcp14> validate the format indicator (<tt>dpop-proof+jwt</tt> vs <tt>dpop-proof+cwt</tt>)
and reject proofs where the format indicator does not match the actual
encoding.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="dpop-authorization-context-types-registry">
        <name>DPoP Authorization Context Types Registry</name>
        <t>This document establishes the "DPoP Authorization Context Types" registry
within the "JSON Web Token (JWT)" registry group.</t>
        <t>Registry Name: DPoP Authorization Context Types</t>
        <t>Registration Policy: Specification Required</t>
        <t>Expert Review Guidelines:</t>
        <t>Specifications submitted for registration <bcp14>MUST</bcp14> include:</t>
        <ol spacing="normal" type="1"><li>
            <t>A complete specification of required and optional fields</t>
          </li>
          <li>
            <t>Semantic definitions and validation rules for all fields</t>
          </li>
          <li>
            <t>Security considerations specific to the context type</t>
          </li>
          <li>
            <t>At least one complete example of usage</t>
          </li>
          <li>
            <t>Considerations for interoperability with existing DPoP implementations</t>
          </li>
        </ol>
        <t>Reference Format: The reference <bcp14>MUST</bcp14> be to a published RFC or an
Internet-Draft that has been adopted by a working group.</t>
        <section anchor="registration-template">
          <name>Registration Template</name>
          <t>To register a new DPoP Authorization Context Type, the following template
<bcp14>MUST</bcp14> be completed:</t>
          <dl>
            <dt>Type Identifier:</dt>
            <dd>
              <t>The string identifier used in the <tt>actx.type</tt> field</t>
            </dd>
            <dt>Description:</dt>
            <dd>
              <t>A brief description of the context type and its intended use</t>
            </dd>
            <dt>Required Fields:</dt>
            <dd>
              <t>List of mandatory fields in the authorization context object</t>
            </dd>
            <dt>Optional Fields:</dt>
            <dd>
              <t>List of optional fields in the authorization context object</t>
            </dd>
            <dt>Validation Rules:</dt>
            <dd>
              <t>Specific validation requirements for the context type</t>
            </dd>
            <dt>Security Considerations:</dt>
            <dd>
              <t>Context-specific security requirements and threat model</t>
            </dd>
          </dl>
        </section>
        <section anchor="initial-registry-contents">
          <name>Initial Registry Contents</name>
          <table>
            <thead>
              <tr>
                <th align="left">Type</th>
                <th align="left">Description</th>
                <th align="left">Required Fields</th>
                <th align="left">Optional Fields</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">moqt</td>
                <td align="left">Media Over QUIC Transport authorization context</td>
                <td align="left">action, tns</td>
                <td align="left">tn, parameters</td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">RFCXXXX</td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="jwt-claims-registration">
        <name>JWT Claims Registration</name>
        <t>This document registers the following JWT claim in the "JSON Web Token
Claims" registry:</t>
        <t>Claim Name: actx</t>
        <t>Claim Description: Authorization Context Object</t>
        <t>Claim Value Type: Object</t>
        <t>Change Controller: IETF</t>
        <t>Specification Document: This document, <xref target="jwt-dpop"/></t>
      </section>
      <section anchor="cwt-claims-registration">
        <name>CWT Claims Registration</name>
        <t>This document registers the following claims in the "CBOR Web Token (CWT)
Claims" registry defined in <xref target="RFC8392"/>:</t>
        <section anchor="actx-claim">
          <name>actx Claim</name>
          <t>Claim Name: actx</t>
          <t>Claim Description: Authorization Context Object for DPoP proofs</t>
          <t>JWT Claim Name: actx</t>
          <t>Claim Key: TBD (requested: 400)</t>
          <t>Claim Value Type: map</t>
          <t>Change Controller: IETF</t>
          <t>Specification Document: This document, <xref target="cwt-dpop"/></t>
        </section>
        <section anchor="nonce-claim-dpop">
          <name>nonce Claim (DPoP)</name>
          <t>Claim Name: dpop_nonce</t>
          <t>Claim Description: Server-provided nonce for DPoP replay protection</t>
          <t>JWT Claim Name: nonce</t>
          <t>Claim Key: TBD (requested: 401)</t>
          <t>Claim Value Type: text string</t>
          <t>Change Controller: IETF</t>
          <t>Specification Document: This document, <xref target="cwt-dpop"/></t>
        </section>
        <section anchor="ath-claim">
          <name>ath Claim</name>
          <t>Claim Name: ath</t>
          <t>Claim Description: Access Token Hash for DPoP proof binding</t>
          <t>JWT Claim Name: ath</t>
          <t>Claim Key: TBD (requested: 402)</t>
          <t>Claim Value Type: byte string</t>
          <t>Change Controller: IETF</t>
          <t>Specification Document: This document, <xref target="cwt-dpop"/></t>
        </section>
      </section>
      <section anchor="media-types-registration">
        <name>Media Types Registration</name>
        <section anchor="applicationdpop-proofjwt">
          <name>application/dpop-proof+jwt</name>
          <t>This document registers the "application/dpop-proof+jwt" media type for
generic DPoP proof JWTs in the "Media Types" registry.</t>
          <t>Type Name: application</t>
          <t>Subtype Name: dpop-proof+jwt</t>
          <t>Required Parameters: none</t>
          <t>Optional Parameters: none</t>
          <t>Encoding Considerations: Binary; base64url encoding of JWT</t>
          <t>Security Considerations: See <xref target="security-considerations"/> of this document</t>
          <t>Interoperability Considerations: Multi-Protocol DPoP proofs extend
HTTP-specific DPoP while maintaining backward compatibility</t>
          <t>Published Specification: This document</t>
          <t>Applications that use this media type: Applications implementing generic DPoP
authorization</t>
          <t>Fragment Identifier Considerations: none</t>
          <t>Additional Information: none</t>
          <t>Person and email address to contact: Media Over QUIC Working Group
<eref target="mailto:moq@ietf.org">moq@ietf.org</eref></t>
          <t>Intended Usage: COMMON</t>
          <t>Restrictions on Usage: none</t>
          <t>Author: Media Over QUIC Working Group</t>
          <t>Change Controller: IETF</t>
        </section>
        <section anchor="applicationdpop-proofcwt">
          <name>application/dpop-proof+cwt</name>
          <t>This document registers the "application/dpop-proof+cwt" media type for
generic DPoP proof CWTs in the "Media Types" registry.</t>
          <t>Type Name: application</t>
          <t>Subtype Name: dpop-proof+cwt</t>
          <t>Required Parameters: none</t>
          <t>Optional Parameters: none</t>
          <t>Encoding Considerations: Binary; CBOR encoding as defined in <xref target="RFC8949"/></t>
          <t>Security Considerations: See <xref target="security-considerations"/> of this document</t>
          <t>Interoperability Considerations: CWT-based DPoP proofs provide compact binary
encoding suitable for constrained environments and interoperability with
Common Access Token (CAT) systems</t>
          <t>Published Specification: This document</t>
          <t>Applications that use this media type: Applications implementing generic DPoP
authorization with CBOR/CWT-based tokens</t>
          <t>Fragment Identifier Considerations: none</t>
          <t>Additional Information: none</t>
          <t>Person and email address to contact: Media Over QUIC Working Group
<eref target="mailto:moq@ietf.org">moq@ietf.org</eref></t>
          <t>Intended Usage: COMMON</t>
          <t>Restrictions on Usage: none</t>
          <t>Author: Media Over QUIC Working Group</t>
          <t>Change Controller: IETF</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</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 Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </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="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="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
        <reference anchor="RFC8747">
          <front>
            <title>Proof-of-Possession Key Semantics for CBOR Web Tokens (CWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>This specification describes how to declare in a CBOR Web Token (CWT) (which is defined by RFC 8392) that the presenter of the CWT possesses a particular proof-of-possession key. Being able to prove possession of a key is also sometimes described as being the holder-of-key. This specification provides equivalent functionality to "Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)" (RFC 7800) but using Concise Binary Object Representation (CBOR) and CWTs rather than JavaScript Object Notation (JSON) and JSON Web Tokens (JWTs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8747"/>
          <seriesInfo name="DOI" value="10.17487/RFC8747"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9053">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </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="RFC9679">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
            <author fullname="K. Isobe" initials="K." surname="Isobe"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a CBOR Object Signing and Encryption (COSE) Key. It specifies which fields within the COSE Key structure are included in the cryptographic hash computation, the process for creating a canonical representation of these fields, and how to hash the resulting byte sequence. The resulting hash value, referred to as a "thumbprint", can be used to identify or select the corresponding key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9679"/>
          <seriesInfo name="DOI" value="10.17487/RFC9679"/>
        </reference>
        <reference anchor="MOQTransport">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="13" month="January" year="2026"/>
            <abstract>
              <t>   This document defines the core behavior for Media over QUIC Transport
   (MOQT), a media transport protocol designed to operate over QUIC and
   WebTransport, which have similar functionality.  MOQT allows a
   producer of media to publish data and have it consumed via
   subscription by a multiplicity of endpoints.  It supports
   intermediate content distribution networks and is designed for high
   scale and low latency distribution.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-16"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="CTA-5007-B" target="https://shop.cta.tech/products/common-access-token">
          <front>
            <title>Common Access Token</title>
            <author>
              <organization>Consumer Technology Association</organization>
            </author>
            <date year="2025" month="April"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1070?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks for Richard Barnes for the reviews and suggestions on the protocol context design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
2LJ1IvVsqcnvYu7e1D34NVc24lgqbDXxy35Xp+App7/GCpuA4g9kSGpDkY7h
83fYG0WNvCvqYFq7bLlGUnPtP6he+zfQ69JM9+ix5BBhOjcHq21VlqKmoIoL
qdi+oy3Vg7Q9dqCwPCIVwxLqWPki5QAxzO/UDjS94pvPn92uM8Dz5dIC2BHY
xTD7NVm6L7VhLIo1SgawJGK62OBJ5hD0F3j0iZfbQZfGybJ+/uwem47AXGga
fSiCjn+5Dz/F0oP+G0Hmi85lkK1hj/hf6kCkI3cdZsRtWB/Jif1kMpE34VLX
eQd+PaybwNY3zZb6zgsSH9WscZETQdbhC2HwkkLqFZPFYzfRdsJp+7OwCAFy
TwVoAtnr9ru9OiJpizIxxHTHgm4/wOm+7DBxYDnbplClcc4J8H0vNMjRYNJv
qXLd90Bu7zlNXizflxJI9f4icYku1TcnGeiDDrWz5B+n2WevO6jfJ2l9CxMj
2tgJyxIr6Oh+m4v0HDKD4wyEv1xbfEh1Dma+Wc3JMuq07Hp6uSbFJ5Rf3/Kt
FOt83rMakYGpaspxW/bsmg2tcpcS/bZGIcPFHv4CYhnJ+d2nRkuVJNgFQWEj
khrYNOp9A/CDCSA90Z6EqTo0T8dOAoYZvtkYmcHvS4CgDcMlFtR8IU0Xvbql
wWqI0266Wuf+8nZ4h8c6K/KYPUmj/HVpflXGwvT6X7ufnjxpi91Pu72/EynC
g929v3uLdafT7m6v093dg+mIzd5YlejHIHUGWqV4kQVRJtdKNK74Y2X+BiOj
G1tn8p5FfYUS0caI0tmSjp+EpVcQ+8amrfVEDj3bYle+uLXCemvFLRjeJsSj
VVChd9OhyVWJ4Ti9kaj7z6eaatvipg6CyjbM4jqM6i3NR0OWgS4ZM9cbyMnQ
N3tX2CimUFlyN8F5x2aCgQ+w/OYlqMrQ0Gow3IIIDBI5GsBL9ZO1Y8sRH1Cj
ZhnbM35Wuh2ZiSBJx6hyW1mE3qSmlC3Qjb/KBT1tp/pRadA133/YXjygdCPe
EabbpvByXeFUV+eJVd2RszlHho18Q9DBBfVIYVXilNQrRwavDFEzC42QUrkB
R9TcYCVwos0Gj8p5cLDCG6NKhrZNKfJkhh9RboWffLj9aHPmH4sNfXxKn8ED
zKc3ksPiSTb/1NnvF2/255fnp5dnvxz9dvrxLFmdzJ/0917/9fX07ZvjtydP
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

-->

</rfc>
