<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zehavi-oauth-authz-req-del-chain-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="OAuth Authz Request Delegation Chain">OAuth Authorization Request Delegation Chain</title>
    <seriesInfo name="Internet-Draft" value="draft-zehavi-oauth-authz-req-del-chain-00"/>
    <author fullname="Yaron Zehavi">
      <organization>Raiffeisen Bank International</organization>
      <address>
        <email>yaron.zehavi@rbinternational.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="07"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>RAR</keyword>
    <keyword>authorization request</keyword>
    <keyword>delegation</keyword>
    <keyword>brokering</keyword>
    <keyword>CIMD</keyword>
    <abstract>
      <?line 66?>

<t>Brokered OAuth redirect authorization requests involve intermediary authorization servers between a downstream client and the upstream authorization server that obtains user consent and issues tokens.
Such deployments have security risks because the upstream authorization server sees only the immediate OAuth client and is unaware of the downstream client or intermediary brokers obtaining its response.</t>
      <t>This document defines an informative OAuth 2.0 profile for carrying a verifiable, signed authorization request delegation chain as a RAR <tt>authorization_details</tt> object <xref target="RFC9396"/>. Each node in the chain is a JSON object signed by the attesting authorization server or broker using detached JWS <xref target="RFC7515"/>, attesting its validated client, hash-linked to the previous node, allowing the upstream authorization server to validate the exact delegation path before issuing tokens.</t>
      <t>This document does not define new OAuth endpoints, grant types, error codes, token formats, token response parameters, or token request parameters.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://yaron-zehavi.github.io/oauth-authorization-request-delegation-chain/draft-zehavi-oauth-authz-req-del-chain.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-zehavi-oauth-authz-req-del-chain/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol 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/yaron-zehavi/oauth-authorization-request-delegation-chain"/>.</t>
    </note>
  </front>
  <middle>
    <?line 75?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth redirect authorization requests increasingly pass through intermediary authorization servers before reaching the authorization server that obtains user consent and issues tokens.</t>
      <t>In a brokered redirect authorization flow, a downstream client may initiate an authorization request through one or more brokers. Each broker is both an authorization server for its downstream party, and an OAuth client of the next authorization server or broker in the path.</t>
      <t>The upstream authorization server that ultimately processes the redirect authorization request may only have a direct relationship with the immediate broker. Without additional information, it may be unable to determine which downstream client initiated the request or which broker path carried the request.</t>
      <t>The OAuth Security Topics update <xref target="I-D.ietf-oauth-security-topics-update"/> describes a shared consent problem in brokered OAuth deployments: an upstream authorization server can grant consent to a broker without being able to distinguish which downstream client is actually using that brokered access. This can result in consent granted for one downstream client being reused by another downstream client through the same broker.</t>
      <t>This document addresses that problem for redirect authorization request delegation. It defines a RAR <xref target="RFC9396"/> <tt>authorization_details</tt> object that carries a signed delegation chain in the authorization request. The chain allows each authorization server or broker in the redirect path to attest the client it directly recognizes and to preserve the prior delegation evidence.</t>
      <t>The resulting chain allows the upstream authorization server to make authorization, consent, and policy decisions based on:</t>
      <ul spacing="normal">
        <li>
          <t>The immediate broker client,</t>
        </li>
        <li>
          <t>The downstream client that initiated the request,</t>
        </li>
        <li>
          <t>The ordered broker path,</t>
        </li>
        <li>
          <t>The authorization servers or brokers that attested each hop,</t>
        </li>
        <li>
          <t>The protected resource requested, and</t>
        </li>
        <li>
          <t>The integrity of the delegation chain.</t>
        </li>
      </ul>
      <t>This document defines a <bcp14>RECOMMENDED</bcp14> <tt>authorization_details</tt> type for representing a verifiable signed delegation chain. Each chain node states:</t>
      <ul spacing="normal">
        <li>
          <t>Who is attesting the node,</t>
        </li>
        <li>
          <t>Who the node is intended for,</t>
        </li>
        <li>
          <t>Which client is being attested for this hop,</t>
        </li>
        <li>
          <t>Which resource is involved,</t>
        </li>
        <li>
          <t>Where the node appears in the chain, and</t>
        </li>
        <li>
          <t>A cryptographic proof over the node.</t>
        </li>
      </ul>
      <t>Each node is signed by the attesting entity using detached JWS and hash-linked to the previous node. The result is a JSON-structured, schema-validatable, tamper-resistant, verifiable signed delegation chain for use during redirect authorization request processing.</t>
      <t>This profile is intentionally narrow. It does not define a new grant type, token format, endpoint, token response parameter, or error code. It defines only a proposed RAR <xref target="RFC9396"/> <tt>authorization_details</tt> type and processing rules for redirect authorization requests.</t>
      <section anchor="relation-to-openid-federation">
        <name>Relation to OpenID Federation</name>
        <t>OpenID Federation <xref target="OpenID.Federation"/> defines mechanisms for establishing trust between entities using signed entity statements, trust chains, metadata, metadata policy, and federation authorities.</t>
        <t>The authorization request delegation chain defined by this document is similar to OpenID Federation in that both mechanisms can involve signed statements about entities and can support trust decisions across organizational or administrative boundaries.</t>
        <t>However, the two mechanisms address different layers of the problem.</t>
        <t>OpenID Federation primarily addresses entity trust and metadata establishment. It can answer questions such as:</t>
        <ul spacing="normal">
          <li>
            <t>Which entity controls this identifier?</t>
          </li>
          <li>
            <t>Which metadata applies to this entity?</t>
          </li>
          <li>
            <t>Which trust anchor or federation authority vouches for this entity?</t>
          </li>
          <li>
            <t>Which keys should be used to verify statements from this entity?</t>
          </li>
        </ul>
        <t>This document addresses transaction-specific authorization request delegation path preservation. It can answer questions such as:</t>
        <ul spacing="normal">
          <li>
            <t>Which downstream client initiated this redirect authorization request?</t>
          </li>
          <li>
            <t>Which brokers carried the request?</t>
          </li>
          <li>
            <t>Which entity attested each hop?</t>
          </li>
          <li>
            <t>Was the authorization request delegation chain reordered, truncated, or modified?</t>
          </li>
        </ul>
        <t>Deployments <bcp14>MAY</bcp14> use OpenID Federation to establish trust in the entities that appear in a delegation chain. For example, <tt>iss</tt> values in this profile can correspond to federated entity identifiers, and federation metadata can be used to discover keys or validate metadata policy.</t>
        <t>This document does not replace OpenID Federation. Instead, it can consume or complement federation trust metadata while providing a per-request signed delegation chain suitable for OAuth authorization request processing.</t>
      </section>
      <section anchor="relation-to-oauth-client-id-metadata-document">
        <name>Relation to OAuth Client ID Metadata Document</name>
        <t>The OAuth Client ID Metadata Document draft (aka: CIMD) defines a mechanism by which an OAuth client can use a URL as its <tt>client_id</tt>, where the URL references a client metadata document that can be fetched by an authorization server <xref target="I-D.ietf-oauth-client-id-metadata-document"/>.</t>
        <t>This document is complementary to that mechanism and points to CIMD client_id's when such were used.</t>
        <t>A delegation node can use a CIMD-style <tt>client_id</tt> by setting <tt>client_ns</tt> to <tt>cimd</tt> and <tt>client_id</tt> to the metadata document URL. For example:</t>
        <sourcecode type="json"><![CDATA[
{
  "client_ns": "cimd",
  "client_id": "https://client.example.com/oauth-client-metadata.json"
}
]]></sourcecode>
        <t>In such deployments, CIMD can provide retrievable client metadata, while this profile provides a signed per-request authorization request delegation chain showing how that client was carried through brokers.</t>
      </section>
      <section anchor="relation-to-rfc-8693-token-exchange-and-the-act-claim">
        <name>Relation to RFC 8693 Token Exchange and the <tt>act</tt> Claim</name>
        <t>OAuth 2.0 Token Exchange <xref target="RFC8693"/> defines a token exchange grant and includes the <tt>act</tt> claim for representing an actor in issued tokens. The <tt>act</tt> claim can indicate that one party is acting on behalf of another party. Nested <tt>act</tt> claims can represent prior actors.</t>
        <t>This document is related to the <tt>act</tt> claim because both mechanisms represent delegation. However, they apply at different phases of an OAuth deployment.</t>
        <t>The <tt>act</tt> claim is a token-time representation. It appears in issued tokens or token introspection responses and is consumed after token issuance, typically by resource servers or downstream authorization servers.</t>
        <t>This document defines an authorization-request-time representation. The delegation chain is carried in a RAR <tt>authorization_details</tt> object during the redirect authorization request, before the upstream authorization server has issued tokens.</t>
        <t>The distinction is important for brokered redirect authorization flows. The upstream authorization server needs to know the downstream client and broker path before it can make a correct consent or authorization decision. A token claim such as <tt>act</tt> can describe delegation after issuance, but it does not by itself provide a redirect authorization request mechanism for presenting signed per-hop delegation evidence to the authorization endpoint before consent and token issuance.</t>
        <t>This profile also differs from nested <tt>act</tt> claims in that:</t>
        <ul spacing="normal">
          <li>
            <t>Each delegation node is signed by the authorization server or broker that attests that hop,</t>
          </li>
          <li>
            <t>Each node is hash-linked to the previous node,</t>
          </li>
          <li>
            <t>The chain is carried as JSON in RAR <tt>authorization_details</tt>,</t>
          </li>
          <li>
            <t>The chain is intended for authorization endpoint processing, and</t>
          </li>
          <li>
            <t>The upstream authorization server can bind consent to the terminal client and broker path before issuing tokens.</t>
          </li>
        </ul>
        <t>An authorization server <bcp14>MAY</bcp14> translate a validated delegation chain into issued-token claims, including <tt>act</tt> claims, after authorization succeeds. Such token representation is outside the scope of this document.</t>
      </section>
      <section anchor="relation-to-the-oauth-actor-profile-for-delegation">
        <name>Relation to the OAuth Actor Profile for Delegation</name>
        <t>The OAuth Actor Profile for Delegation draft defines a common profile for representing delegated actor relationships using the <tt>act</tt> claim across JWT assertion grants, JWT access tokens, Transaction Tokens, and Token Exchange inputs. It also defines actor classification through <tt>sub_profile</tt> and discovery metadata for advertising support <xref target="I-D.mcguinness-oauth-actor-profile"/>.</t>
        <t>This document is complementary to the OAuth Actor Profile but has a different scope.</t>
        <t>The OAuth Actor Profile addresses token and assertion interoperability. It helps systems consistently express actor relationships in issued artifacts such as:</t>
        <ul spacing="normal">
          <li>
            <t>JWT assertion grants,</t>
          </li>
          <li>
            <t>JWT access tokens,</t>
          </li>
          <li>
            <t>Transaction Tokens, and</t>
          </li>
          <li>
            <t>Token Exchange inputs and outputs.</t>
          </li>
        </ul>
        <t>This document addresses redirect authorization request delegation. It helps an upstream authorization server evaluate a brokered authorization request before token issuance by carrying a signed delegation chain in RAR <tt>authorization_details</tt>.</t>
        <t>The two mechanisms can be used together. An authorization server can validate an <tt>oauth_request_delegation_chain</tt> authorization detail during the redirect authorization request and, after successful authorization, issue a token using the <tt>act</tt> claim profile defined by the OAuth Actor Profile.</t>
        <t>In that combined model:</t>
        <ul spacing="normal">
          <li>
            <t>This document provides pre-token authorization request evidence, and</t>
          </li>
          <li>
            <t>The OAuth Actor Profile provides post-authorization token representation.</t>
          </li>
        </ul>
      </section>
      <section anchor="relation-to-oauth-actor-signed-hop-proofs">
        <name>Relation to OAuth Actor-Signed Hop Proofs</name>
        <t>OAuth Actor-Signed Hop Proofs defines an optional companion profile for delegated OAuth tokens that conform to the OAuth Actor Profile for Delegation. It introduces an <tt>actor_proofs</tt> claim containing a signed per-hop proof chain, where each visible actor signs its own participation and target binding <xref target="I-D.mcguinness-oauth-actor-proofs"/>.</t>
        <t>This document is similar in that it also uses signed per-hop evidence and hash linking. However, the placement and processing model are different.</t>
        <t>OAuth Actor-Signed Hop Proofs is token-oriented. It defines claims and mechanisms for delegated tokens and associated token processing.</t>
        <t>This document is authorization-request-oriented. It carries the signed chain in RAR <tt>authorization_details</tt> so that the upstream authorization server can evaluate the delegation path during redirect authorization request processing, before consent and token issuance.</t>
        <t>A deployment could use both mechanisms:</t>
        <ul spacing="normal">
          <li>
            <t><tt>oauth_request_delegation_chain</tt> in the redirect authorization request to support upstream authorization server consent and policy decisions.</t>
          </li>
          <li>
            <t><tt>act</tt> and <tt>actor_proofs</tt> in issued tokens to support downstream resource server enforcement and audit.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt><strong>Authorization Request Delegation Chain</strong>:</dt>
        <dd>
          <t>An ordered JSON array of signed delegation nodes carried in an OAuth authorization request.</t>
        </dd>
        <dt><strong>Delegation Node</strong>:</dt>
        <dd>
          <t>A JSON object representing one attestation event in the authorization request delegation chain.</t>
        </dd>
        <dt><strong>Attester</strong>:</dt>
        <dd>
          <t>The entity identified by the node's <tt>iss</tt> value. The attester signs the node.</t>
        </dd>
        <dt><strong>Attested Client</strong>:</dt>
        <dd>
          <t>The client identified by the node's <tt>client_ns</tt> and <tt>client_id</tt> values.</t>
        </dd>
        <dt><strong>Terminal Client</strong>:</dt>
        <dd>
          <t>The original or downstream client ultimately represented through the chain.</t>
        </dd>
        <dt><strong>Broker</strong>:</dt>
        <dd>
          <t>An entity that acts as an authorization server in one relationship and as an OAuth client of another authorization server or broker in another relationship.</t>
        </dd>
        <dt><strong>Client Namespace</strong>:</dt>
        <dd>
          <t>The client identifier namespace or resolution mode. This document defines <tt>as</tt> for AS-local client identifiers and <tt>cimd</tt> for URL-shaped client identifiers resolved using the OAuth Client ID Metadata Document mechanism.</t>
        </dd>
      </dl>
    </section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>In a simple OAuth authorization request, the authorization server evaluates the authenticated client, requested resource, requested authorization details, and user consent.</t>
      <t>In a brokered redirect authorization request, the authorization server may see only the final broker as the OAuth client. For example:</t>
      <sourcecode type="text"><![CDATA[
client-123 -> broker-a -> broker-b -> broker-c -> as-domain-1
]]></sourcecode>
      <t>When <tt>as-domain-1</tt> receives the authorization request, it may only directly recognize <tt>broker-c</tt>. It may not know that the original downstream client was <tt>client-123</tt>, nor that the request passed through <tt>broker-a</tt> and <tt>broker-b</tt>.</t>
      <t>If the upstream authorization server binds consent only to the immediate broker, then consent granted for one downstream client can be reused for a different downstream client that reaches the upstream authorization server through the same broker. This is the shared consent problem described in <xref target="I-D.ietf-oauth-security-topics-update"/>.</t>
      <t>This document allows each broker or authorization server in the redirect path to add a signed delegation node:</t>
      <sourcecode type="text"><![CDATA[
Hop 1: broker-a -> broker-b
       broker-a attests client-123

Hop 2: broker-b -> broker-c
       broker-b attests broker-a-client

Hop 3: broker-c -> as-domain-1
       broker-c attests broker-b-client
]]></sourcecode>
      <t>The protected resource remains constant across the chain:</t>
      <sourcecode type="text"><![CDATA[
resource = https://api-domain-1.example.com
]]></sourcecode>
      <t>The <tt>aud</tt> value in the delegation chain identifies only the next authorization server.</t>
      <t>By validating the signed and hash-linked chain, the upstream authorization server can bind consent and policy to the full redirect delegation path rather than only to the immediate broker.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>A downstream client initiates an OAuth authorization request through one or more brokers. Each authorization server or broker can create or append a signed node to the delegation chain.</t>
      <artwork type="ascii-art"><![CDATA[
+------------+       +----------+       +----------+       +----------+       +-------------+
| client-123 |       | broker-a |       | broker-b |       | broker-c |       | as-domain-1 |
+------------+       +----------+       +----------+       +----------+       +-------------+
      |                    |                  |                  |                    |
      | Authorization      |                  |                  |                    |
      | Request Intent     |                  |                  |                    |
      |------------------->|                  |                  |                    |
      |                    | attests          |                  |                    |
      |                    | client-123       |                  |                    |
      |                    |----------------->|                  |                    |
      |                    |                  | attests          |                    |
      |                    |                  | broker-a-client  |                    |
      |                    |                  |----------------->|                    |
      |                    |                  |                  | attests            |
      |                    |                  |                  | broker-b-client    |
      |                    |                  |                  |------------------->|
      |                    |                  |                  |                    | Validate chain
      |                    |                  |                  |                    | Apply consent
      |                    |                  |                  |                    | and policy
]]></artwork>
      <t>Figure: Brokered authorization request using an OAuth Authorization Request Delegation Chain</t>
      <t>The upstream authorization server validates the final node from the broker it directly knows, then walks the prior signed nodes to identify the terminal client and the full broker path.</t>
    </section>
    <section anchor="authorization-details-type">
      <name>Authorization Details Type</name>
      <t>This profile defines the following proposed <tt>authorization_details</tt> type:</t>
      <sourcecode type="json"><![CDATA[
"oauth_request_delegation_chain"
]]></sourcecode>
      <t>A delegated authorization request <bcp14>MAY</bcp14> include an authorization detail object of this type:</t>
      <sourcecode type="json"><![CDATA[
{
  "type": "oauth_request_delegation_chain",
  "chain": [
    {
      "iss": "https://broker-c.example.com",
      "aud": "https://as-domain-1.example.com",
      "n": 2,
      "p_hash": "base64url-sha256-of-previous-node",
      "client_ns": "as",
      "client_id": "broker-b-client",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1jLWtleS0xIn0..base64url-signature"
      }
    }
  ]
}
]]></sourcecode>
      <t>The <tt>chain</tt> member is a JSON array. JSON arrays are ordered by definition <xref target="RFC8259"/>. The explicit <tt>n</tt> value is nevertheless included to make event order unambiguous across storage, transformation, validation, and partial processing.</t>
    </section>
    <section anchor="delegation-chain-object">
      <name>Delegation Chain Object</name>
      <t>The delegation chain authorization details object has the following members.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Member</th>
            <th align="right">Required</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>type</tt></td>
            <td align="right">Yes</td>
            <td align="left">Authorization details type. Value: <tt>oauth_request_delegation_chain</tt>.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>chain</tt></td>
            <td align="right">Yes</td>
            <td align="left">Ordered JSON array of delegation nodes.</td>
          </tr>
        </tbody>
      </table>
      <t>The <tt>chain</tt> array <bcp14>MUST</bcp14> contain one or more delegation nodes.</t>
    </section>
    <section anchor="delegation-node">
      <name>Delegation Node</name>
      <t>A delegation node is a JSON object with the following members.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Member</th>
            <th align="right">Required</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>iss</tt></td>
            <td align="right">Yes</td>
            <td align="left">Issuer identifier of the attesting entity.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>sub</tt></td>
            <td align="right">No</td>
            <td align="left">Subject being carried through the chain, such as a user.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>aud</tt></td>
            <td align="right">Yes</td>
            <td align="left">Intended authorization server or broker-AS audience of this node. This profile uses <tt>aud</tt> only for authorization servers and broker-AS entities, not protected resource APIs.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>n</tt></td>
            <td align="right">Yes</td>
            <td align="left">Zero-based chain position.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>p_hash</tt></td>
            <td align="right">Yes</td>
            <td align="left">Hash of the previous signed node. <tt>null</tt> for the first node.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>client_ns</tt></td>
            <td align="right">Yes</td>
            <td align="left">Client identifier namespace or resolution mode. This profile defines <tt>as</tt> and <tt>cimd</tt>.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>client_id</tt></td>
            <td align="right">Yes</td>
            <td align="left">Client attested by this node.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>client_name</tt></td>
            <td align="right">No</td>
            <td align="left">Human-readable display name. Not a security identifier.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>resource</tt></td>
            <td align="right">No</td>
            <td align="left">Resource indicators or protected resource identifiers relevant to the authorization request.</td>
          </tr>
          <tr>
            <td align="left">
              <tt>proof</tt></td>
            <td align="right">Yes</td>
            <td align="left">Cryptographic proof object.</td>
          </tr>
        </tbody>
      </table>
      <t>Additional members <bcp14>MAY</bcp14> be included by deployments or future specifications. Receivers <bcp14>MUST</bcp14> ignore unknown members unless local policy requires rejecting them.</t>
      <t>The stable security identifier for an attested client depends on the <tt>client_ns</tt> value.</t>
      <t>For <tt>client_ns</tt> value <tt>as</tt>, the stable identifier is:</t>
      <sourcecode type="text"><![CDATA[
AS issuer context + client_id
]]></sourcecode>
      <t>For <tt>client_ns</tt> value <tt>cimd</tt>, the stable identifier is:</t>
      <sourcecode type="text"><![CDATA[
client_id
]]></sourcecode>
      <t>The applicable AS issuer context is determined from the attesting node or from the prior node that originally introduced the AS-local client.</t>
      <t>The <tt>client_name</tt> value is display-only and <bcp14>MUST NOT</bcp14> be used as a security identifier.</t>
    </section>
    <section anchor="proof-object">
      <name>Proof Object</name>
      <t>The <tt>proof</tt> object contains a detached JWS compact serialization.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Member</th>
            <th align="right">Required</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <tt>jws</tt></td>
            <td align="right">Yes</td>
            <td align="left">Detached JWS compact serialization over the delegation node payload.</td>
          </tr>
        </tbody>
      </table>
      <t>Example:</t>
      <sourcecode type="json"><![CDATA[
{
  "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1jLWtleS0xIn0..MEUCIQD..."
}
]]></sourcecode>
      <t>The <tt>proof.jws</tt> value is a JWS Compact Serialization <xref target="RFC7515"/> with a detached payload. The payload segment is empty, resulting in the following form:</t>
      <sourcecode type="text"><![CDATA[
BASE64URL(UTF8(JWS Protected Header)) || "." || "" || "." || BASE64URL(JWS Signature)
]]></sourcecode>
      <t>The JWS Protected Header <bcp14>MUST</bcp14> contain an <tt>alg</tt> value and a <tt>kid</tt> value.</t>
      <t>For example, the protected header could be:</t>
      <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "broker-c-key-1"
}
]]></sourcecode>
      <t>The detached JWS payload is the deterministic serialization of the delegation node excluding the <tt>proof</tt> member.</t>
      <t>The key used to verify <tt>proof.jws</tt> is resolved from the attester identified by <tt>iss</tt>.</t>
      <t>A verifier obtains the attester's verification key by resolving:</t>
      <sourcecode type="text"><![CDATA[
iss -> authorization server metadata -> jwks_uri -> JWK selected by kid
]]></sourcecode>
      <t>Because brokers in this profile are also authorization servers, a broker is expected to publish authorization server metadata <xref target="RFC8414"/> and a <tt>jwks_uri</tt>.</t>
    </section>
    <section anchor="operation-attestclient">
      <name>Operation: <tt>attest_client</tt></name>
      <t>This profile defines one operation value:</t>
      <sourcecode type="json"><![CDATA[
"attest_client"
]]></sourcecode>
      <t>The operation means:</t>
      <sourcecode type="text"><![CDATA[
The entity identified by iss attests to the entity identified by aud
that the client identified by client_ns and client_id is the delegated
client for this authorization request hop.
]]></sourcecode>
      <t>For example:</t>
      <sourcecode type="json"><![CDATA[
{
  "iss": "https://broker-c.example.com",
  "aud": "https://as-domain-1.example.com",
  "client_ns": "as",
  "client_id": "broker-b-client"
}
]]></sourcecode>
      <t>means:</t>
      <sourcecode type="text"><![CDATA[
broker-c attests to as-domain-1 that broker-b-client is the delegated
client for this hop.
]]></sourcecode>
      <t>The upstream authorization server can then validate prior nodes to discover the terminal downstream client.</t>
    </section>
    <section anchor="signature-input">
      <name>Signature Input</name>
      <t>The wire format of a delegation node is JSON. The node is not a JWT and <bcp14>MUST NOT</bcp14> be processed as a JWT claims set.</t>
      <t>Each node is signed using JSON Web Signature (JWS) <xref target="RFC7515"/> with a detached payload. The detached payload is the deterministic serialization of the delegation node excluding the <tt>proof</tt> member. The resulting compact detached JWS is carried in the node's <tt>proof.jws</tt> member.</t>
      <t>The use of JWS provides standard JOSE header handling, including <tt>alg</tt> and <tt>kid</tt>, while preserving a JSON wire format that can be validated using typed schemas before cryptographic verification.</t>
      <section anchor="delegation-chain-signing-payload-version-1">
        <name>Delegation Chain Signing Payload Version 1</name>
        <t>The detached JWS payload is a UTF-8 string formed by joining name-value lines with line feed <tt>\n</tt>.</t>
        <t>The first line is:</t>
        <sourcecode type="text"><![CDATA[
oauth-authorization-request-delegation-chain-v1
]]></sourcecode>
        <t>Then each supported member is serialized in the following fixed order when present:</t>
        <sourcecode type="text"><![CDATA[
iss
sub
aud
n
p_hash
client_ns
client_id
client_name
resource
]]></sourcecode>
        <t>The <tt>proof</tt> member is excluded.</t>
        <t>Array values are serialized as comma-separated JSON string values in array order.</t>
        <t>For example:</t>
        <sourcecode type="text"><![CDATA[
oauth-authorization-request-delegation-chain-v1
iss=https://broker-c.example.com
aud=https://as-domain-1.example.com
n=2
p_hash=Vh6U...
client_ns=as
client_id=broker-b-client
resource=https://api-domain-1.example.com
]]></sourcecode>
        <t>This UTF-8 string is used as the detached JWS payload.</t>
        <t>The compact detached JWS is produced according to <xref target="RFC7515"/> by signing the payload with the algorithm identified by the JWS Protected Header <tt>alg</tt> value. The JWS Protected Header <bcp14>MUST</bcp14> contain <tt>alg</tt> and <tt>kid</tt>.</t>
        <t>The compact detached JWS serialization stored in <tt>proof.jws</tt> <bcp14>MUST</bcp14> contain an empty payload segment:</t>
        <sourcecode type="text"><![CDATA[
protected-header || "." || "" || "." || signature
]]></sourcecode>
        <t>Future specifications <bcp14>MAY</bcp14> define alternative signing-payload schemes. Such specifications <bcp14>MUST</bcp14> identify the scheme unambiguously.</t>
      </section>
    </section>
    <section anchor="hash-chain">
      <name>Hash Chain</name>
      <t>Each delegation node is hash-linked to the previous signed node.</t>
      <t>For node <tt>i</tt>, define:</t>
      <sourcecode type="text"><![CDATA[
signing_payload_i = deterministic detached JWS payload for node i
detached_jws_i = proof.jws value for node i
event_hash_i = BASE64URL(SHA-256(UTF8(signing_payload_i) || "." || ASCII(detached_jws_i)))
]]></sourcecode>
      <t>The following rules apply:</t>
      <sourcecode type="text"><![CDATA[
chain[0].p_hash = null
chain[i].p_hash = event_hash(chain[i - 1]) for i > 0
chain[i].n = chain[i - 1].n + 1
]]></sourcecode>
      <t>This construction binds both the delegation node payload and the JWS protected header and signature. It protects against:</t>
      <ul spacing="normal">
        <li>
          <t>reordering nodes,</t>
        </li>
        <li>
          <t>inserting nodes,</t>
        </li>
        <li>
          <t>deleting nodes,</t>
        </li>
        <li>
          <t>modifying a prior node,</t>
        </li>
        <li>
          <t>replacing a prior signed node with a different signed node, and</t>
        </li>
        <li>
          <t>substituting a different JWS protected header or signature for a prior node.</t>
        </li>
      </ul>
    </section>
    <section anchor="creating-or-adding-to-a-delegation-chain">
      <name>Creating or Adding to a Delegation Chain</name>
      <t>This section defines processing rules for an authorization server or broker creating a new delegation chain or adding a node to an existing chain.</t>
      <section anchor="step-1-determine-the-attester">
        <name>Step 1 - Determine the Attester</name>
        <t>The attester sets <tt>iss</tt> to its issuer identifier:</t>
        <sourcecode type="json"><![CDATA[
"iss": "https://attester.example.com"
]]></sourcecode>
        <t>The <tt>iss</tt> value <bcp14>MUST</bcp14> identify the entity signing the node.</t>
        <t>The <tt>iss</tt> value <bcp14>SHOULD</bcp14> resolve to authorization server metadata containing a <tt>jwks_uri</tt> <xref target="RFC8414"/>.</t>
      </section>
      <section anchor="step-2-determine-the-audience">
        <name>Step 2 - Determine the Audience</name>
        <t>The attester sets <tt>aud</tt> to the intended authorization server or broker-AS recipient of the node.</t>
        <t>For an intermediate broker:</t>
        <sourcecode type="json"><![CDATA[
"aud": "https://next-broker.example.com"
]]></sourcecode>
        <t>For the final upstream authorization server:</t>
        <sourcecode type="json"><![CDATA[
"aud": "https://as-domain-1.example.com"
]]></sourcecode>
        <t>The <tt>aud</tt> value <bcp14>MUST NOT</bcp14> be used to identify the protected resource API. Protected resources are identified using the <tt>resource</tt> member.</t>
      </section>
      <section anchor="step-3-determine-the-attested-client">
        <name>Step 3 - Determine the Attested Client</name>
        <t>The attester sets:</t>
        <sourcecode type="json"><![CDATA[
"client_ns": "as",
"client_id": "client-or-broker-identifier"
]]></sourcecode>
        <t>or:</t>
        <sourcecode type="json"><![CDATA[
"client_ns": "cimd",
"client_id": "https://client.example.com/oauth-client-metadata.json"
]]></sourcecode>
        <t>For an AS-local client known by the attesting broker or authorization server:</t>
        <sourcecode type="json"><![CDATA[
"client_ns": "as",
"client_id": "client-123"
]]></sourcecode>
        <t>For a client using the OAuth Client ID Metadata Document mechanism:</t>
        <sourcecode type="json"><![CDATA[
"client_ns": "cimd",
"client_id": "https://client.example.com/oauth-client-metadata.json"
]]></sourcecode>
        <t>The authorization server can use the client metadata document to obtain client metadata according to <xref target="I-D.ietf-oauth-client-id-metadata-document"/>, while using the delegation chain to validate the transaction-specific authorization request delegation path.</t>
        <t>The mechanism for resolving metadata from <tt>client_ns</tt> and <tt>client_id</tt> is determined by local policy, federation metadata, or client metadata mechanisms.</t>
      </section>
      <section anchor="step-4-set-the-position">
        <name>Step 4 - Set the Position</name>
        <t>If creating a new chain:</t>
        <sourcecode type="json"><![CDATA[
"n": 0,
"p_hash": null
]]></sourcecode>
        <t>If extending an existing chain, the attester sets <tt>n</tt> to the previous node's <tt>n</tt> plus one and sets <tt>p_hash</tt> to <tt>event_hash(previous_node)</tt>.</t>
      </section>
      <section anchor="step-5-add-optional-display-or-resource-information">
        <name>Step 5 - Add Optional Display or Resource Information</name>
        <t>The attester <bcp14>MAY</bcp14> include <tt>client_name</tt> for user interface purposes.</t>
        <t>The attester <bcp14>MAY</bcp14> include <tt>resource</tt> to identify intended protected resources.</t>
        <t>The <tt>client_name</tt> value <bcp14>MUST NOT</bcp14> be used as a security identifier.</t>
        <t>Additional claims <bcp14>MAY</bcp14> be added as parties see fit, subject to local policy or future specifications.</t>
      </section>
      <section anchor="step-6-sign-the-node">
        <name>Step 6 - Sign the Node</name>
        <t>The attester constructs the detached JWS payload as described in <xref target="signature-input"/>.</t>
        <t>The attester creates a JWS Protected Header containing at least:</t>
        <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "attester-key-1"
}
]]></sourcecode>
        <t>The attester signs the detached JWS payload using the private key corresponding to the public key published in its <tt>jwks_uri</tt>.</t>
        <t>The attester places the compact detached JWS in <tt>proof.jws</tt>:</t>
        <sourcecode type="json"><![CDATA[
"proof": {
  "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImF0dGVzdGVyLWtleS0xIn0..base64url-signature"
}
]]></sourcecode>
        <t>The JWS payload segment <bcp14>MUST</bcp14> be empty in the compact serialization, because the payload is detached and represented by the delegation node JSON object itself.</t>
      </section>
      <section anchor="step-7-forward-the-chain">
        <name>Step 7 - Forward the Chain</name>
        <t>The attester includes the updated chain in an <tt>authorization_details</tt> object with type <tt>oauth_request_delegation_chain</tt>.</t>
      </section>
    </section>
    <section anchor="validating-a-delegation-chain">
      <name>Validating a Delegation Chain</name>
      <t>An authorization server validating a delegation chain performs the following checks.</t>
      <section anchor="step-1-schema-validation">
        <name>Step 1 - Schema Validation</name>
        <t>The authorization server validates that the authorization detail object contains:</t>
        <sourcecode type="json"><![CDATA[
"type": "oauth_request_delegation_chain"
]]></sourcecode>
        <t>and that <tt>chain</tt> is a non-empty JSON array.</t>
        <t>Each node <bcp14>MUST</bcp14> contain:</t>
        <sourcecode type="text"><![CDATA[
iss
aud
n
p_hash
client_ns
client_id
proof.jws
]]></sourcecode>
        <t>A receiver <bcp14>MAY</bcp14> reject nodes containing unsupported values or unsupported extension members.</t>
      </section>
      <section anchor="step-2-client-namespace-validation">
        <name>Step 2 - Client Namespace Validation</name>
        <t>The authorization server verifies that each node contains a supported <tt>client_ns</tt> value.</t>
        <t>This profile defines:</t>
        <sourcecode type="text"><![CDATA[
as
cimd
]]></sourcecode>
        <t>If the authorization server does not support the <tt>client_ns</tt> value, it <bcp14>MUST</bcp14> reject the authorization detail object.</t>
      </section>
      <section anchor="step-3-ordering-validation">
        <name>Step 3 - Ordering Validation</name>
        <t>The authorization server verifies:</t>
        <sourcecode type="text"><![CDATA[
chain[0].n == 0
chain[0].p_hash == null
chain[i].n == chain[i - 1].n + 1
]]></sourcecode>
        <t>for every <tt>i &gt; 0</tt>.</t>
      </section>
      <section anchor="step-4-hash-chain-validation">
        <name>Step 4 - Hash-Chain Validation</name>
        <t>For every node after the first, the authorization server verifies:</t>
        <sourcecode type="text"><![CDATA[
chain[i].p_hash == event_hash(chain[i - 1])
]]></sourcecode>
        <t>where <tt>event_hash</tt> is computed over the previous node's deterministic detached JWS payload and its <tt>proof.jws</tt> value.</t>
        <t>If any hash comparison fails, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
      </section>
      <section anchor="step-5-signature-validation">
        <name>Step 5 - Signature Validation</name>
        <t>For each node, the authorization server:</t>
        <ol spacing="normal" type="1"><li>
            <t>Reads <tt>iss</tt>.</t>
          </li>
          <li>
            <t>Reads <tt>proof.jws</tt>.</t>
          </li>
          <li>
            <t>Parses <tt>proof.jws</tt> as a compact detached JWS.</t>
          </li>
          <li>
            <t>Verifies that the compact JWS contains an empty payload segment.</t>
          </li>
          <li>
            <t>Decodes the JWS Protected Header.</t>
          </li>
          <li>
            <t>Verifies that the JWS Protected Header contains <tt>alg</tt> and <tt>kid</tt>.</t>
          </li>
          <li>
            <t>Resolves the issuer metadata for <tt>iss</tt>.</t>
          </li>
          <li>
            <t>Obtains the issuer's <tt>jwks_uri</tt>.</t>
          </li>
          <li>
            <t>Fetches the issuer's JWK Set.</t>
          </li>
          <li>
            <t>Selects a key using the JWS Protected Header <tt>kid</tt>.</t>
          </li>
          <li>
            <t>Constructs the deterministic detached JWS payload for the node by serializing the node excluding the <tt>proof</tt> member.</t>
          </li>
          <li>
            <t>Verifies the detached JWS signature over that payload according to <xref target="RFC7515"/>.</t>
          </li>
        </ol>
        <t>If a signature cannot be verified, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
      </section>
      <section anchor="step-6-audience-validation">
        <name>Step 6 - Audience Validation</name>
        <t>The authorization server verifies that the final node is intended for it:</t>
        <sourcecode type="text"><![CDATA[
chain[last].aud == receiving_authorization_server_issuer
]]></sourcecode>
        <t>For intermediate nodes, the authorization server <bcp14>SHOULD</bcp14> verify:</t>
        <sourcecode type="text"><![CDATA[
chain[i].aud == chain[i + 1].iss
]]></sourcecode>
        <t>This ensures that the chain path matches the intended authorization server or broker-AS path.</t>
        <t>The <tt>aud</tt> value identifies an authorization server or broker-AS, not a protected resource API. Protected resource identifiers are represented using the <tt>resource</tt> member.</t>
      </section>
      <section anchor="step-7-resource-consistency-validation">
        <name>Step 7 - Resource Consistency Validation</name>
        <t>If multiple nodes contain <tt>resource</tt>, the authorization server <bcp14>SHOULD</bcp14> verify that the resource value is consistent across the chain, unless local policy explicitly permits resource transformation.</t>
        <t>A protected API endpoint <bcp14>MUST NOT</bcp14> appear in <tt>aud</tt>.</t>
      </section>
      <section anchor="step-8-relationship-validation">
        <name>Step 8 - Relationship Validation</name>
        <t>The authorization server <bcp14>SHOULD</bcp14> verify that adjacent nodes are consistent.</t>
        <t>For a chain:</t>
        <sourcecode type="text"><![CDATA[
node[0] -> node[1] -> node[2]
]]></sourcecode>
        <t>the following should hold:</t>
        <sourcecode type="text"><![CDATA[
node[0].aud == node[1].iss
node[1].aud == node[2].iss
]]></sourcecode>
        <t>The final node identifies the client that the immediate trusted broker is attesting. Prior nodes reveal what that client was itself carrying.</t>
        <t>For example, if the final node is:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://broker-c.example.com",
  "client_ns": "as",
  "client_id": "broker-b-client"
}
]]></sourcecode>
        <t>then the authorization server treats broker-c as attesting broker-b-client.</t>
        <t>The authorization server then validates the prior node signed by broker-b to determine which client broker-b was carrying.</t>
      </section>
      <section anchor="step-9-policy-validation">
        <name>Step 9 - Policy Validation</name>
        <t>After cryptographic validation, the authorization server applies local policy.</t>
        <t>Policy decisions can consider:</t>
        <ul spacing="normal">
          <li>
            <t>the immediate client authenticated to the authorization server,</t>
          </li>
          <li>
            <t>the final node's <tt>iss</tt>,</t>
          </li>
          <li>
            <t>the full set of brokers in the chain,</t>
          </li>
          <li>
            <t>the terminal client identified by the earliest client attestation,</t>
          </li>
          <li>
            <t>the resources identified by <tt>resource</tt>,</t>
          </li>
          <li>
            <t>the user subject identified by <tt>sub</tt>, if present, and</t>
          </li>
          <li>
            <t>the full delegation chain hash.</t>
          </li>
        </ul>
        <t>The authorization server <bcp14>MAY</bcp14> reject the request if any broker, client, namespace, resource, or path is not allowed.</t>
      </section>
    </section>
    <section anchor="consent-binding">
      <name>Consent Binding</name>
      <t>In brokered OAuth, an authorization server <bcp14>SHOULD NOT</bcp14> bind consent only to:</t>
      <sourcecode type="text"><![CDATA[
user + immediate broker + requested access
]]></sourcecode>
      <t>Instead, when a valid delegation chain is present, the authorization server <bcp14>SHOULD</bcp14> bind consent to:</t>
      <sourcecode type="text"><![CDATA[
user
+ authorization server issuer
+ immediate broker
+ terminal client identity
+ broker path
+ resource
+ delegation chain hash
]]></sourcecode>
      <t>For example:</t>
      <sourcecode type="text"><![CDATA[
user-456
+ https://as-domain-1.example.com
+ https://broker-c.example.com
+ client-123
+ broker-a -> broker-b -> broker-c
+ https://api-domain-1.example.com
+ hash(chain)
]]></sourcecode>
      <t>This prevents consent granted to one downstream client from being silently reused by another downstream client through the same broker.</t>
    </section>
    <section anchor="authorization-server-considerations">
      <name>Authorization Server Considerations</name>
      <t>An authorization server that receives an <tt>oauth_request_delegation_chain</tt> authorization detail object <bcp14>SHOULD</bcp14> evaluate whether the chain is required for the requested transaction.</t>
      <t>If the authorization server supports this profile but the chain is absent, incomplete, or invalid, the authorization server <bcp14>MAY</bcp14> reject the request according to normal RAR processing rules <xref target="RFC9396"/>.</t>
      <t>If the authorization server supports this profile and delegates the authorization request to another upstream authorization server, it <bcp14>SHOULD</bcp14> include the <tt>oauth_request_delegation_chain</tt> authorization detail object and extend the delegation chain with details about the current hop.</t>
      <t>An authorization server <bcp14>MAY</bcp14> include the approved <tt>authorization_details</tt> object in an access token or token introspection response when appropriate. However, this document does not define a token format or require the chain to be propagated to resource servers.</t>
      <t>Where token size or privacy considerations apply, an authorization server <bcp14>SHOULD</bcp14> consider storing the validated chain server-side and exposing only necessary authorization results to resource servers via token introspection <xref target="RFC7662"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="tampering">
        <name>Tampering</name>
        <t>The hash chain and per-node detached JWS signatures are intended to detect node modification, insertion, deletion, reordering, and signature substitution.</t>
        <t>A receiver <bcp14>MUST</bcp14> reject a chain if any hash-link or signature check fails.</t>
      </section>
      <section anchor="replay">
        <name>Replay</name>
        <t>This profile does not define expiration, nonce, or replay-cache claims in the base structure.</t>
        <t>Deployments that require replay protection <bcp14>MAY</bcp14> add additional claims, such as timestamps, nonces, transaction identifiers, or request references, as deployment-specific extensions.</t>
      </section>
      <section anchor="display-names">
        <name>Display Names</name>
        <t><tt>client_name</tt> is intended only for display.</t>
        <t>Authorization servers <bcp14>MUST NOT</bcp14> use <tt>client_name</tt> as a security identifier.</t>
        <t>The stable security identifier depends on <tt>client_ns</tt> and applicable issuer context as described in this document.</t>
      </section>
      <section anchor="trust-in-attesters">
        <name>Trust in Attesters</name>
        <t>A valid signature proves only that the attester signed the node. It does not imply that the attester is trusted for the requested delegation.</t>
        <t>Authorization servers <bcp14>MUST</bcp14> apply local trust policy before accepting any attester, broker, namespace, client, or delegation path.</t>
      </section>
      <section anchor="metadata-resolution">
        <name>Metadata Resolution</name>
        <t>This profile assumes that attesters publish verification keys through authorization server metadata and <tt>jwks_uri</tt>.</t>
        <t>If metadata cannot be resolved, or if the key identified by <tt>kid</tt> cannot be found, the receiver <bcp14>MUST</bcp14> reject the affected node.</t>
      </section>
      <section anchor="immediate-client-authentication">
        <name>Immediate Client Authentication</name>
        <t>The delegation chain does not replace OAuth client authentication.</t>
        <t>An authorization server <bcp14>MUST</bcp14> still authenticate the immediate OAuth client according to its normal OAuth processing rules.</t>
        <t>The authorization server <bcp14>SHOULD</bcp14> verify that the authenticated immediate client is consistent with the final delegation node.</t>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <t>A delegation chain can reveal intermediaries, downstream clients, resources, and possibly subjects.</t>
        <t>Deployments <bcp14>SHOULD</bcp14> minimize included data and avoid including unnecessary personally identifiable information.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
      <t>A future standards-track version of this document may request registration of the <tt>oauth_request_delegation_chain</tt> authorization details type.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="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="RFC7517">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </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="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </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="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="OpenID.Federation" target="https://openid.net/specs/openid-federation-1_0.html">
          <front>
            <title>OpenID Federation 1.0</title>
            <author>
              <organization>OpenID Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-oauth-security-topics-update" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-security-topics-update/">
          <front>
            <title>OAuth 2.0 Security Best Current Practice Update</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-client-id-metadata-document/">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.mcguinness-oauth-actor-profile" target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-actor-profile/">
          <front>
            <title>OAuth Actor Profile for Delegation</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.mcguinness-oauth-actor-proofs" target="https://datatracker.ietf.org/doc/draft-mcguinness-oauth-actor-proofs/">
          <front>
            <title>OAuth Actor-Signed Hop Proofs</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 949?>

<section anchor="brokered-oauth-example-without-cimd">
      <name>Brokered OAuth Example Without CIMD</name>
      <t>This example uses AS-local client identifiers.</t>
      <sourcecode type="text"><![CDATA[
client-123 -> broker-a -> broker-b -> broker-c -> as-domain-1
]]></sourcecode>
      <t>Each AS or broker attests the client it directly recognizes:</t>
      <ul spacing="normal">
        <li>
          <t>broker-a attests <tt>client-123</tt> to broker-b.</t>
        </li>
        <li>
          <t>broker-b attests <tt>broker-a-client</tt> to broker-c.</t>
        </li>
        <li>
          <t>broker-c attests <tt>broker-b-client</tt> to as-domain-1.</t>
        </li>
      </ul>
      <t>The <tt>aud</tt> value always identifies the next authorization server or broker-AS. The protected API is represented only by the <tt>resource</tt> member.</t>
      <section anchor="full-authorization-details-object">
        <name>Full Authorization Details Object</name>
        <sourcecode type="json"><![CDATA[
{
  "type": "oauth_request_delegation_chain",
  "chain": [
    {
      "iss": "https://broker-a.example.com",
      "aud": "https://broker-b.example.com",
      "n": 0,
      "p_hash": null,
      "client_ns": "as",
      "client_id": "client-123",
      "client_name": "Client 123",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1hLWtleS0xIn0..sig0"
      }
    },
    {
      "iss": "https://broker-b.example.com",
      "aud": "https://broker-c.example.com",
      "n": 1,
      "p_hash": "hash-of-node-0-event",
      "client_ns": "as",
      "client_id": "broker-a-client",
      "client_name": "Broker A",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1iLWtleS0xIn0..sig1"
      }
    },
    {
      "iss": "https://broker-c.example.com",
      "aud": "https://as-domain-1.example.com",
      "n": 2,
      "p_hash": "hash-of-node-1-event",
      "client_ns": "as",
      "client_id": "broker-b-client",
      "client_name": "Broker B",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1jLWtleS0xIn0..sig2"
      }
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="interpretation">
        <name>Interpretation</name>
        <t>Node 0 says:</t>
        <sourcecode type="text"><![CDATA[
broker-a attests to broker-b that client-123 is the delegated client.
]]></sourcecode>
        <t>Node 1 says:</t>
        <sourcecode type="text"><![CDATA[
broker-b attests to broker-c that broker-a-client is the delegated client
for this hop.
]]></sourcecode>
        <t>Node 2 says:</t>
        <sourcecode type="text"><![CDATA[
broker-c attests to as-domain-1 that broker-b-client is the delegated
client for this hop.
]]></sourcecode>
        <t>The upstream AS validates the final trusted hop first:</t>
        <sourcecode type="text"><![CDATA[
broker-c -> broker-b-client
]]></sourcecode>
        <t>Then walks the prior signed nodes:</t>
        <sourcecode type="text"><![CDATA[
broker-b -> broker-a-client
broker-a -> client-123
]]></sourcecode>
        <t>The terminal client is therefore:</t>
        <sourcecode type="json"><![CDATA[
{
  "client_ns": "as",
  "client_id": "client-123",
  "client_name": "Client 123",
  "attested_by": "https://broker-a.example.com"
}
]]></sourcecode>
        <t>The resource is constant across the chain:</t>
        <sourcecode type="json"><![CDATA[
["https://api-domain-1.example.com"]
]]></sourcecode>
      </section>
    </section>
    <section anchor="brokered-oauth-example-with-cimd">
      <name>Brokered OAuth Example With CIMD</name>
      <t>This example uses CIMD-style URL-shaped client identifiers.</t>
      <sourcecode type="text"><![CDATA[
client-123 -> broker-a -> broker-b -> broker-c -> as-domain-1
]]></sourcecode>
      <t>Each AS or broker attests the client it directly recognizes:</t>
      <ul spacing="normal">
        <li>
          <t>broker-a attests the CIMD-identified terminal client to broker-b.</t>
        </li>
        <li>
          <t>broker-b attests the CIMD-identified broker-a client to broker-c.</t>
        </li>
        <li>
          <t>broker-c attests the CIMD-identified broker-b client to as-domain-1.</t>
        </li>
      </ul>
      <t>The <tt>aud</tt> value always identifies the next authorization server or broker-AS. The protected API is represented only by the <tt>resource</tt> member.</t>
      <section anchor="full-authorization-details-object-1">
        <name>Full Authorization Details Object</name>
        <sourcecode type="json"><![CDATA[
{
  "type": "oauth_request_delegation_chain",
  "chain": [
    {
      "iss": "https://broker-a.example.com",
      "aud": "https://broker-b.example.com",
      "n": 0,
      "p_hash": null,
      "client_ns": "cimd",
      "client_id": "https://client-123.example.com/oauth-client-metadata.json",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1hLWtleS0xIn0..sig0"
      }
    },
    {
      "iss": "https://broker-b.example.com",
      "aud": "https://broker-c.example.com",
      "n": 1,
      "p_hash": "hash-of-node-0-event",
      "client_ns": "cimd",
      "client_id": "https://broker-a.example.com/client",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1iLWtleS0xIn0..sig1"
      }
    },
    {
      "iss": "https://broker-c.example.com",
      "aud": "https://as-domain-1.example.com",
      "n": 2,
      "p_hash": "hash-of-node-1-event",
      "client_ns": "cimd",
      "client_id": "https://broker-b.example.com/client",
      "resource": ["https://api-domain-1.example.com"],
      "proof": {
        "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1jLWtleS0xIn0..sig2"
      }
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="interpretation-1">
        <name>Interpretation</name>
        <t>Node 0 says:</t>
        <sourcecode type="text"><![CDATA[
broker-a attests to broker-b that the CIMD-identified client is the
delegated client.
]]></sourcecode>
        <t>Terminal client:</t>
        <sourcecode type="json"><![CDATA[
{
  "client_ns": "cimd",
  "client_id": "https://client-123.example.com/oauth-client-metadata.json",
  "attested_by": "https://broker-a.example.com"
}
]]></sourcecode>
        <t>Node 1 says:</t>
        <sourcecode type="text"><![CDATA[
broker-b attests to broker-c that broker-a is the delegated client for
this hop, identified by https://broker-a.example.com/client.
]]></sourcecode>
        <t>Node 2 says:</t>
        <sourcecode type="text"><![CDATA[
broker-c attests to as-domain-1 that broker-b is the delegated client for
this hop, identified by https://broker-b.example.com/client.
]]></sourcecode>
        <t>The upstream AS sees the immediate trusted path as:</t>
        <sourcecode type="text"><![CDATA[
broker-c -> broker-b -> broker-a -> client-123
]]></sourcecode>
        <t>And the resource remains:</t>
        <sourcecode type="json"><![CDATA[
["https://api-domain-1.example.com"]
]]></sourcecode>
      </section>
    </section>
    <section anchor="example-signing-payload">
      <name>Example Signing Payload</name>
      <t>For this node:</t>
      <sourcecode type="json"><![CDATA[
{
  "iss": "https://broker-c.example.com",
  "aud": "https://as-domain-1.example.com",
  "n": 2,
  "p_hash": "hash-of-node-1-event",
  "client_ns": "as",
  "client_id": "broker-b-client",
  "resource": ["https://api-domain-1.example.com"],
  "proof": {
    "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImJyb2tlci1jLWtleS0xIn0..sig2"
  }
}
]]></sourcecode>
      <t>the detached JWS payload is:</t>
      <sourcecode type="text"><![CDATA[
oauth-authorization-request-delegation-chain-v1
iss=https://broker-c.example.com
aud=https://as-domain-1.example.com
n=2
p_hash=hash-of-node-1-event
client_ns=as
client_id=broker-b-client
resource=https://api-domain-1.example.com
]]></sourcecode>
      <t>The JWS Protected Header is:</t>
      <sourcecode type="json"><![CDATA[
{
  "alg": "ES256",
  "kid": "broker-c-key-1"
}
]]></sourcecode>
      <t>The <tt>proof.jws</tt> value is the compact detached JWS over the UTF-8 bytes of the detached JWS payload.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version.</t>
        </li>
        <li>
          <t>Defined <tt>oauth_request_delegation_chain</tt> authorization details type.</t>
        </li>
        <li>
          <t>Defined signed authorization request delegation nodes using <tt>iss</tt>, <tt>aud</tt>, <tt>client_ns</tt>, and <tt>client_id</tt>.</t>
        </li>
        <li>
          <t>Defined <tt>client_ns</tt> values <tt>as</tt> and <tt>cimd</tt>.</t>
        </li>
        <li>
          <t>Defined detached JWS proof processing using <tt>proof.jws</tt>.</t>
        </li>
        <li>
          <t>Defined <tt>p_hash</tt> hash-chain processing.</t>
        </li>
        <li>
          <t>Added processing rules for creating, extending, and validating delegation chains.</t>
        </li>
        <li>
          <t>Added brokered OAuth examples with and without CIMD.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank the participants in the OAuth Working Group discussions on brokered OAuth, Rich Authorization Requests, client metadata, actor delegation, and authorization request security.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
EjEe/A/JXUgZKrEAAA==

-->

</rfc>
