<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nandakumar-oauth-dpop-proof-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <front>
    <title abbrev="dpop-proof">Application-Agnostic Demonstration Proof of Possession (DPoP) Framework</title>
    <seriesInfo name="Internet-Draft" value="draft-nandakumar-oauth-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="2025" month="September" day="16"/>
    <area>Security</area>
    <workgroup>OAuth Working Group</workgroup>
    <keyword>DPoP</keyword>
    <keyword>Proof of Possession</keyword>
    <keyword>Authentication</keyword>
    <keyword>Authorization</keyword>
    <abstract>
      <?line 46?>

<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.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://oauth-wg.github.io/oauth-dpop-generic/draft-generic-dpop-framework.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nandakumar-oauth-dpop-proof/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OAuth Working Group Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/oauth-dpop-generic"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<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>
        <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 JWT that can be used across various application protocols and contexts,
as described in detail below. A client uses a generic DPoP proof JWT 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 JWT
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 proof structure has the same general 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="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-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 <bcp14>MAY</bcp14> be included based on context requirements:</t>
        <ul spacing="normal">
          <li>
            <t>nonce: Server-provided nonce for replay protection</t>
          </li>
          <li>
            <t>ath: Access token hash (when presenting access tokens)</t>
          </li>
        </ul>
      </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>MOQ Context Type</name>
        <t>This section defines the normative authorization context for Media Over QUIC
(MOQ) as specified in this framework.</t>
        <t>Type Identifier: "moq"</t>
        <section anchor="required-fields">
          <name>Required Fields</name>
          <t>The MOQ 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 as defined in Section 2.4.1 of <xref target="MOQTransport"/>.</t>
        </section>
        <section anchor="optional-fields">
          <name>Optional Fields</name>
          <t>The MOQ authorization context <bcp14>MAY</bcp14> contain the following fields:</t>
          <t>tn:</t>
          <t>Track Name as defined in Section 2.4.1 of <xref target="MOQTransport"/>.</t>
          <t>parameters:</t>
          <t>An object containing additional MOQ-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 (where N can be between 1 and 32), and Track Name is a
sequence of bytes. Both are not constrained to specific encoding and carry
arbitrary byte sequences that are compared by exact byte matching.</t>
          <t>For representation in the JSON <tt>tns</tt> and <tt>tn</tt> fields of the Authorization
Context, the following encoding approach <bcp14>MUST</bcp14> be used:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Track Namespace Tuple Encoding</strong>: The Track Namespace tuple <bcp14>MUST</bcp14> be
encoded as a URL-safe string where:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Each tuple field is base64url-encoded (without padding)</t>
                </li>
                <li>
                  <t>Tuple fields are separated by forward slashes ("/")</t>
                </li>
                <li>
                  <t>The entire namespace is prefixed with "moq://"</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Track Name Encoding</strong>: The Track Name bytes <bcp14>MUST</bcp14> be base64url-encoded
(without padding) when containing non-printable bytes or when exact byte
preservation is required</t>
            </li>
          </ol>
          <t><strong>TODO:</strong> A better way to encode that promotes readability is
being thought about</t>
          <t>Example encodings:</t>
          <ul spacing="normal">
            <li>
              <t>Namespace tuple [0x01, 0x02], [0x03, 0x04]: <tt>"moq://AQ/Aw"</tt></t>
            </li>
            <li>
              <t>ASCII track name: <tt>"camera1"</tt></t>
            </li>
            <li>
              <t>Binary track name [0xFF, 0xFE]: <tt>"_v4"</tt></t>
            </li>
            <li>
              <t>UTF-8 track name with special chars: <tt>"música%20en%20vivo"</tt> (URL percent-encoded)</t>
            </li>
          </ul>
        </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 MOQ 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-jwt-examples">
      <name>Application-Agnostic DPoP Proof JWT Examples</name>
      <t>This section provides complete examples of application-agnostic DPoP proof JWTs,
illustrating the use of the Authorization Context object in place of
HTTP-specific claims.</t>
      <section anchor="example-moq-context-dpop-proof">
        <name>Example: MOQ Context DPoP Proof</name>
        <t>The following example shows a complete DPoP proof JWT for a MOQ 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": "moq",
    "action": "SUBSCRIBE",
    "tns": "moq://example.com/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="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>
    <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">moq</td>
                <td align="left">Media Over QUIC 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, Section 4.1</t>
      </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 Section 8 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
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: OAuth Working Group
<eref target="mailto:oauth@ietf.org">oauth@ietf.org</eref></t>
          <t>Intended Usage: COMMON</t>
          <t>Restrictions on Usage: none</t>
          <t>Author: OAuth 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="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="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="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="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="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="7" month="July" year="2025"/>
            <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-13"/>
        </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>
      </references>
    </references>
    <?line 675?>

<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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
6rLRcjYDAg1xbQ2mutzbF/8HYr5CD8ZaAAA=

-->

</rfc>
