<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-zehavi-oauth-authz-req-del-chain-01" 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-01"/>
    <author fullname="Yaron Zehavi">
      <organization>Raiffeisen Bank International</organization>
      <address>
        <email>yaron.zehavi@rbinternational.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="10"/>
    <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 67?>

<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 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 an attesting authorization server using detached JWS <xref target="RFC7515"/>, attesting its validated client, hash-linked to the previous node, allowing the upstream authorization server to validate the integrity of the visible delegation path and apply policy before issuing tokens.</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 74?>

<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's authorization request is forwarded 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 in the path.</t>
      <t>The terminal upstream authorization server that ultimately processes the authorization request may only have a direct relationship with the immediate broker. Without additional information, it cannot determine which downstream client initiated the request and which broker path carried the request.</t>
      <t>Such brokered consent flows are discussed as a risk in OAuth Security Topics update <xref target="I-D.ietf-oauth-security-topics-update"/>.</t>
      <t>This document addresses this risk 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 in the redirect path to attest the client it directly recognizes and to preserve the prior delegation evidence.</t>
      <t>The resulting chain allows any upstream authorization server to evaluate its integrity and perform authorization, consent, and policy decisions based on:</t>
      <ul spacing="normal">
        <li>
          <t>The integrity of the delegation chain.</t>
        </li>
        <li>
          <t>The immediate broker client,</t>
        </li>
        <li>
          <t>The downstream client that initiated the request,</t>
        </li>
        <li>
          <t>The ordered request delegation 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>
      </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>Access to which resource is requested,</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, tamper-resistant, verifiable signed delegation chain for 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 the authrization request's specific delegation path. 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 it?</t>
          </li>
          <li>
            <t>Which entity attested each hop?</t>
          </li>
          <li>
            <t>Was the visible authorization request delegation chain reordered, shortened at the tail, altered in the middle, or modified?</t>
          </li>
          <li>
            <t>Is the visible first node acceptable under local policy?</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 can reference CIMD-style <tt>client_id</tt> values when 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 intermediate 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 requested 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, any upstream authorization server can bind consent and policy to the entire redirect delegation path up to itself, rather than only to the immediate client which might not be the terminal client.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>A downstream client initiates an OAuth authorization request which is forwarded to other authorization servers. 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 validate the full delegation path and identify the terminal client.</t>
    </section>
    <section anchor="oauth-broker-client-metadata">
      <name>OAuth Broker Client Metadata</name>
      <t>This document defines client metadata that allows an authorization server, when acting as a client, to identify itself as an OAuth broker.</t>
      <t>The following client metadata attribute is defined:</t>
      <sourcecode type="json"><![CDATA[
{
  "client_roles": ["oauth_broker"]
}
]]></sourcecode>
      <dl>
        <dt><tt>client_roles</tt></dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array of strings identifying roles the OAuth client is expected to perform when interacting with the authorization server. The value <tt>oauth_broker</tt> indicates that the client may act as an intermediary between the authorization server and one or more downstream clients.</t>
        </dd>
      </dl>
      <t>A client metadata value of <tt>oauth_broker</tt> is a statement a client makes about its expected role. It does not by itself establish trust in the client, any downstream client, or any brokered delegation path.</t>
      <t>An authorization server <bcp14>MAY</bcp14> also classify a client as an OAuth broker using local policy, even when the <tt>client_roles</tt> metadata member is absent.</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 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>omit_chain</tt></td>
              <td align="right">No</td>
              <td align="left">Whether a broker is allowed to omit the delegation chain when forwarding to an upstream authorization server that does not support this profile. Values are <tt>forbidden</tt> and <tt>allowed</tt>; default is <tt>forbidden</tt>.</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 only if their signing-payload representation is defined by this document, a future specification, or a mutually understood extension. A receiver <bcp14>MUST</bcp14> reject unsupported extension members unless local policy explicitly allows them to be ignored.</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>For <tt>client_ns</tt> value <tt>as</tt>, the applicable AS issuer context is the <tt>iss</tt> value of the node that attests the 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>
    <section anchor="attesting-a-client">
      <name>Attesting a Client</name>
      <t>Attesting a client 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 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>
      <section anchor="delegation-chain-signing-payload">
        <name>Delegation Chain Signing Payload</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
omit_chain
]]></sourcecode>
        <t>The <tt>proof</tt> member is excluded.</t>
        <t>Members not included in this signing-payload definition are not protected by the node signature. Security-relevant extensions therefore <bcp14>MUST</bcp14> define how they are included in the signing payload, or receivers <bcp14>MUST</bcp14> reject them.</t>
        <t>Array values are serialized by joining each array element's JSON string serialization, in array order, with a comma character. No extra whitespace is inserted.</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 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 cryptographically binds each node to the signed event that
precedes it. Validation of the hash chain, sequence numbers, and audience
continuity detects modification, insertion, deletion, reordering, and signature
substitution within the visible chain.</t>
      </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.
The attester <bcp14>MAY</bcp14> include <tt>resource</tt> to identify intended protected resources.
The <tt>client_name</tt> value <bcp14>MUST NOT</bcp14> be used as a security identifier.
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"/>.
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>
    <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>
      <t>Validation is anchored at the receiving authorization server and proceeds from
the final node of the chain toward the first node.  This reflects the trust
model: the final node is the node addressed to the receiving authorization
server, and each valid signed node commits to the previous node through
<tt>p_hash</tt>.</t>
      <t>A node's signature is over the node's deterministic detached JWS payload,
including its <tt>p_hash</tt> value and excluding the <tt>proof</tt> member.  Therefore, a
valid signature on node <tt>i</tt> commits to node <tt>i - 1</tt> when <tt>p_hash</tt> is valid.</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="delegation-chain-terminal-node-checks">
        <name>Step 3 - Terminal Node Checks</name>
        <t>Let <tt>last</tt> be the index of the final node in the chain.</t>
        <t>The authorization server performs the following checks on the final node before
performing signature validation. These checks are fail-fast checks over
unauthenticated input: failure is sufficient to reject the request, but success
does not authenticate the node or the chain.</t>
        <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>If the final node's <tt>aud</tt> value does not identify the receiving authorization
server, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
        <t>The authorization server also verifies that the final node is plausibly bound
to the OAuth client submitting the authorization request.</t>
        <t>The exact binding is deployment-specific, but the receiving authorization server
<bcp14>MUST</bcp14> be able to establish that:</t>
        <sourcecode type="text"><![CDATA[
chain[last].iss
]]></sourcecode>
        <t>identifies, or is authorized to speak for, the authenticated OAuth client submitting the request.</t>
        <t>For example, if the request is submitted by an authenticated broker client, the
authorization server can verify that the registered metadata for that OAuth
client identifies:</t>
        <sourcecode type="text"><![CDATA[
chain[last].iss
]]></sourcecode>
        <t>as the broker authorization server or broker issuer for that client.</t>
        <t>If the authorization server cannot bind the final node's <tt>iss</tt> to the OAuth
client submitting the request, it <bcp14>MUST</bcp14> reject the chain.</t>
        <t>The checks in this step are fail-fast checks.  Until the final node's signature
has been verified, the authorization server <bcp14>MUST</bcp14> treat the final node's <tt>iss</tt>,
<tt>aud</tt>, and other members as unauthenticated input.  A successful preflight check
does not by itself authenticate the node or the chain.</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>
        <t>A protected API endpoint <bcp14>MUST NOT</bcp14> appear in <tt>aud</tt>.</t>
      </section>
      <section anchor="step-4-signature-validation">
        <name>Step 4 - Signature Validation</name>
        <t>For each node, the authorization server:</t>
        <ol spacing="normal" type="1"><li>
            <t>Reads <tt>iss</tt>. The <tt>iss</tt> value is untrusted until the node signature is verified. Before using
<tt>iss</tt> for metadata retrieval, the authorization server <bcp14>MUST</bcp14> apply its normal
issuer validation, discovery, allow-list, federation, or local trust policy.</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>. The resolved authorization server metadata issuer value <bcp14>MUST</bcp14> match <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>
        <t>After signature validation succeeds, the authorization server treats the signed
members of each node as authenticated statements by that node's <tt>iss</tt>.</t>
        <t>In particular, the terminal preflight checks in <xref target="delegation-chain-terminal-node-checks"/>
are then authenticated because the final node's signature covers the same
<tt>iss</tt>, <tt>aud</tt>, <tt>client_ns</tt>, <tt>client_id</tt>, <tt>p_hash</tt>, and other signed members.</t>
      </section>
      <section anchor="step-5-backward-chain-validation">
        <name>Step 5 - Backward Chain Validation</name>
        <t>The authorization server validates the chain from the final node toward the first node.
For every <tt>i</tt> from <tt>last</tt> down to <tt>1</tt>, the authorization server verifies:</t>
        <sourcecode type="text"><![CDATA[
chain[i].p_hash == event_hash(chain[i - 1])
chain[i - 1].aud == chain[i].iss
chain[i].n == chain[i - 1].n + 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>
        <t>If any audience-continuity check fails, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
        <t>If any sequence-number check fails, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
        <t>The authorization server then verifies the first node:</t>
        <sourcecode type="text"><![CDATA[
chain[0].n == 0
chain[0].p_hash == null
]]></sourcecode>
        <t>If either check fails, the authorization server <bcp14>MUST</bcp14> reject the chain.</t>
        <t>The audience-continuity check ensures that every hop intentionally delegated to the next hop in the chain:</t>
        <sourcecode type="text"><![CDATA[
chain[i - 1].aud == chain[i].iss
]]></sourcecode>
        <t>Thus, for a chain:</t>
        <sourcecode type="text"><![CDATA[
node[0] -> node[1] -> node[2]
]]></sourcecode>
        <t>the following <bcp14>MUST</bcp14> hold:</t>
        <sourcecode type="text"><![CDATA[
node[0].aud == node[1].iss
node[1].aud == node[2].iss
]]></sourcecode>
      </section>
      <section anchor="step-6-resource-consistency-validation">
        <name>Step 6 - 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>If local policy permits resource transformation, the authorization server
<bcp14>SHOULD</bcp14> verify that each transformation is allowed for the issuer performing the
transformation.</t>
      </section>
      <section anchor="step-7-delegation-relationship-validation">
        <name>Step 7 - Delegation Relationship Validation</name>
        <t>The authorization server <bcp14>SHOULD</bcp14> verify that adjacent nodes are semantically
consistent.</t>
        <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 <tt>https://broker-c.example.com</tt> as
attesting <tt>broker-b-client</tt>.</t>
        <t>The authorization server then validates the prior node signed by broker-b to
determine which client broker-b was carrying.</t>
        <t>The authorization server <bcp14>MAY</bcp14> reject the chain if the attested client
relationship is inconsistent with registration metadata, federation metadata, or
local policy.</t>
      </section>
      <section anchor="step-8-policy-validation">
        <name>Step 8 - Policy Validation</name>
        <t>After cryptographic validation, the authorization server applies local policy.</t>
        <t>Cryptographic validation proves the integrity of the visible chain.  It does not
prove that no upstream delegation context existed before <tt>chain[0]</tt>.</t>
        <t>In particular, a broker can originate a new chain beginning with itself as
<tt>chain[0]</tt>.  Such re-origination can produce a cryptographically valid chain.
Whether that chain is acceptable is a local policy decision for the receiving
authorization server.</t>
        <t>Policy decisions can consider:</t>
        <ul spacing="normal">
          <li>
            <t>the OAuth client authenticated to the authorization server,</t>
          </li>
          <li>
            <t>the final node's <tt>iss</tt>, whether it is allowed for the authenticated OAuth client,</t>
          </li>
          <li>
            <t>the first node's <tt>iss</tt>, whether it is allowed to appear as a first-node issuer,</t>
          </li>
          <li>
            <t>the full set of brokers in the chain,</t>
          </li>
          <li>
            <t>whether each broker is allowed to appear in its position in the chain,</t>
          </li>
          <li>
            <t>the client identified by the first visible 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,</t>
          </li>
          <li>
            <t>the full delegation chain hash, and</t>
          </li>
          <li>
            <t>deployment-specific expectations about allowed direct and indirect paths.</t>
          </li>
        </ul>
        <t>The final node's <tt>iss</tt> is used to validate the relationship between the
authenticated OAuth client and the broker-AS or AS that produced the final
delegation-chain node.</t>
        <t>The first node's <tt>iss</tt> is used to evaluate whether the visible chain is allowed
to begin with that issuer.  This is the policy check that addresses
head-truncation or re-origination.  Cryptographic validation cannot prove that
no upstream nodes existed before <tt>chain[0]</tt>.</t>
        <t>The authorization server <bcp14>MAY</bcp14> reject the request if any broker, client,
namespace, resource, subject, first-node issuer, 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
+ client identity accepted as the terminal client
+ 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 supports this profile <bcp14>SHOULD</bcp14> advertise support for the <tt>oauth_request_delegation_chain</tt> authorization details type using the <tt>authorization_details_types_supported</tt> authorization server metadata attribute defined by <xref target="RFC9396"/>.</t>
      <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>An authorization server <bcp14>MAY</bcp14> require an <tt>oauth_request_delegation_chain</tt> authorization detail object when the immediate OAuth client is known or determined to be an OAuth broker.</t>
      <t>For this purpose, an authorization server <bcp14>MAY</bcp14> determine that the immediate client is an OAuth broker based on:</t>
      <ul spacing="normal">
        <li>
          <t>The client's registered <tt>client_roles</tt> metadata containing <tt>oauth_broker</tt>;</t>
        </li>
        <li>
          <t>Local client configuration;</t>
        </li>
        <li>
          <t>A trusted software statement;</t>
        </li>
        <li>
          <t>Federation metadata or metadata policy;</t>
        </li>
        <li>
          <t>Contractual onboarding;</t>
        </li>
        <li>
          <t>Transaction context; or</t>
        </li>
        <li>
          <t>Any other trusted local policy input.</t>
        </li>
      </ul>
      <t>If the authorization server determines that the immediate client is acting as an OAuth broker, and local policy requires this profile for the request, then the authorization request <bcp14>MUST</bcp14> contain an <tt>authorization_details</tt> object of type <tt>oauth_request_delegation_chain</tt>.</t>
      <t>If the required <tt>oauth_request_delegation_chain</tt> authorization detail object is absent, the authorization server <bcp14>MUST</bcp14> reject the authorization request using normal OAuth 2.0 authorization endpoint error signaling <xref target="RFC6749"/>.</t>
      <t>If the authorization server can safely redirect to a valid registered redirection URI for the client, the authorization server <bcp14>SHOULD</bcp14> return:</t>
      <sourcecode type="text"><![CDATA[
error=invalid_request
error_description=authorization_details must contain an object with type "oauth_request_delegation_chain"
]]></sourcecode>
      <t>For example:</t>
      <sourcecode type="http"><![CDATA[
HTTP/1.1 302 Found
Location: https://client.example/callback?
  error=invalid_request&
  error_description=authorization_details%20must%20contain%20an%20object%20with%20type%20%22oauth_request_delegation_chain%22&
  state=af0ifjsldkj
]]></sourcecode>
      <t>If the <tt>oauth_request_delegation_chain</tt> authorization detail object is present but malformed, semantically invalid, contains an unsupported value, or fails validation, the authorization server <bcp14>SHOULD</bcp14> reject the request according to RAR error 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 anchor="discovering-upstream-support">
        <name>Discovering Upstream Support</name>
        <t>An authorization server acting as broker that intends to forward an authorization request to an upstream authorization server <bcp14>SHOULD</bcp14> determine whether the upstream authorization server supports the <tt>oauth_request_delegation_chain</tt> authorization details type before sending the authorization request.</t>
        <t>The broker <bcp14>SHOULD</bcp14> retrieve the upstream authorization server metadata according to <xref target="RFC8414"/>.</t>
        <t>If the upstream authorization server metadata publishes in <tt>authorization_details_types_supported</tt> support for the <tt>oauth_request_delegation_chain</tt> RAR type, the broker <bcp14>SHOULD</bcp14> opt into this mechanism by including an <tt>authorization_details</tt> object of type <tt>oauth_request_delegation_chain</tt> in the authorization request.</t>
        <t>For example, an upstream authorization server can advertise support as follows:</t>
        <sourcecode type="json"><![CDATA[
{
  "issuer": "https://as-domain-1.example.com",
  "authorization_endpoint": "https://as-domain-1.example.com/authorize",
  "token_endpoint": "https://as-domain-1.example.com/token",
  "jwks_uri": "https://as-domain-1.example.com/jwks.json",
  "authorization_details_types_supported": [
    "oauth_request_delegation_chain"
  ]
}
]]></sourcecode>
        <t>A broker that discovers upstream support <bcp14>SHOULD</bcp14> either:</t>
        <ul spacing="normal">
          <li>
            <t>create a new <tt>oauth_request_delegation_chain</tt> authorization detail object, if no chain is already present; or</t>
          </li>
          <li>
            <t>validate and extend the existing chain, if a chain is already present.</t>
          </li>
        </ul>
        <t>A broker <bcp14>MAY</bcp14> still use this profile with an upstream authorization server when support is established by other means, such as bilateral configuration, federation metadata, contractual onboarding, or local policy.</t>
        <t>If a broker is unable to determine whether the upstream authorization server supports this profile, the broker <bcp14>SHOULD</bcp14> apply local policy. Local policy can include forwarding the request without this authorization detail, aborting the transaction, or using an alternative delegation mechanism.</t>
      </section>
      <section anchor="upstream-support-failure">
        <name>Upstream Support Failure</name>
        <t>If a broker receives an authorization request containing an <tt>oauth_request_delegation_chain</tt> authorization detail object and determines that the next upstream authorization server does not support this profile, the broker <bcp14>MUST NOT</bcp14> silently discard the delegation chain.</t>
        <t>The broker <bcp14>MUST</bcp14> either reject the transaction, use another trusted mechanism to preserve the delegation context, or forward the request without the chain only when doing so is permitted by local policy and by the signed chain requirement.</t>
        <t>A delegation node <bcp14>MAY</bcp14> contain the following member:</t>
        <dl>
          <dt><tt>omit_chain</tt></dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. String indicating whether a broker is allowed to forward the
authorization request without the delegation chain if the next upstream
authorization server does not support this profile. Defined values are
<tt>forbidden</tt> and <tt>allowed</tt>. If omitted, the default value is <tt>forbidden</tt>.</t>
          </dd>
        </dl>
        <t>If any validated node contains:</t>
        <sourcecode type="json"><![CDATA[
"omit_chain": "forbidden"
]]></sourcecode>
        <t>or omits <tt>omit_chain</tt>, then a broker that cannot forward the delegation chain to the next upstream authorization server, and cannot preserve equivalent delegation context by another trusted mechanism, <bcp14>MUST</bcp14> reject the transaction.</t>
        <t>If every validated node contains:</t>
        <sourcecode type="json"><![CDATA[
"omit_chain": "allowed"
]]></sourcecode>
        <t>then the broker <bcp14>MAY</bcp14> forward the authorization request without the delegation chain, subject to local policy.</t>
        <t>A broker <bcp14>MUST NOT</bcp14> silently discard a delegation chain. Forwarding without the chain is an explicit degradation of delegation evidence and is permitted only when allowed by the validated chain and by local policy.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="chain-integrity">
        <name>Chain Integrity</name>
        <t>The hash chain, per-node detached JWS signatures, sequence numbers, and audience
continuity checks are intended to detect modification, insertion, deletion,
reordering, and signature substitution within the visible delegation chain.</t>
        <t>A receiver <bcp14>MUST</bcp14> reject a chain if any required validation check described in
<xref target="validating-a-delegation-chain"/> fails.</t>
        <t>A valid signature proves only that the identified issuer signed the node. It
does not imply that the issuer is trusted for the requested delegation.</t>
      </section>
      <section anchor="truncation-and-re-origination">
        <name>Truncation and Re-origination</name>
        <t>Truncation has three relevant cases.</t>
        <t>Tail truncation is detected by the terminal audience check: a shortened chain
will not end in a node whose <tt>aud</tt> identifies the receiving authorization
server.</t>
        <t>Middle removal is detected by the hash-chain and audience-continuity checks:
removing an intermediate node breaks the successor's <tt>p_hash</tt> and the adjacent
issuer/audience relationship.</t>
        <t>Head truncation, or re-origination, is different. A broker can create a fresh
chain beginning with itself as <tt>chain[0]</tt>. Cryptographic validation proves the
integrity of the visible chain, but cannot prove that no upstream context
existed before <tt>chain[0]</tt>.</t>
        <t>Authorization servers <bcp14>MUST</bcp14> handle re-origination through local policy,
including whether <tt>chain[0].iss</tt> is allowed to appear as the first visible
issuer for the requested client, resource, and deployment context.</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 such claims as
deployment-specific extensions and validate them according to local policy.</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>, <tt>client_id</tt>, and the applicable issuer or namespace context.</t>
      </section>
      <section anchor="trust-in-attesters">
        <name>Trust in Attesters</name>
        <t>A valid chain establishes integrity and provenance of the visible attestations.
It does not establish that the attesters, clients, resources, subjects, or path
are acceptable.</t>
        <t>Authorization servers <bcp14>MUST</bcp14> apply local trust policy before accepting a
delegation chain.</t>
      </section>
      <section anchor="trust-in-broker-client-metadata">
        <name>Trust in Broker Client Metadata</name>
        <t>The <tt>client_roles</tt> client metadata member can indicate that a client is expected
to act as an OAuth broker.</t>
        <t>An authorization server <bcp14>MUST NOT</bcp14> treat self-asserted <tt>client_roles</tt> metadata as
proof that the client is trustworthy, authorized to broker authorization
requests, or authorized to represent downstream clients.</t>
        <t>An authorization server <bcp14>MUST</bcp14> rely on <tt>client_roles</tt> for security decisions only
when the metadata was established through a trusted mechanism, such as
administrative registration, trusted dynamic client registration, a trusted
software statement, federation metadata, or local trust policy.</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, is not trusted, or does not contain the key
identified by <tt>kid</tt>, 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>MUST</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>
      <section anchor="oauth-dynamic-client-registration-metadata-registration">
        <name>OAuth Dynamic Client Registration Metadata Registration</name>
        <t>This document requests registration of the following value in the IANA "OAuth Dynamic Client Registration Metadata" registry established by <xref target="RFC7591"/>.</t>
        <dl>
          <dt>Client Metadata Name:</dt>
          <dd>
            <t><tt>client_roles</tt></t>
          </dd>
          <dt>Client Metadata Description:</dt>
          <dd>
            <t>JSON array of strings identifying roles the OAuth client is expected to perform when interacting with the authorization server. The value <tt>oauth_broker</tt> indicates that the client may act as an intermediary between the authorization server and one or more downstream clients, applications, agents, relying parties, resource servers, or trust domains.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Specification Document:</dt>
          <dd>
            <t>This document.</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-authorization-details-type">
        <name>OAuth Authorization Details Type</name>
        <t>This document defines the <tt>oauth_request_delegation_chain</tt> authorization details type.</t>
        <t>A future standards-track version of this document may request registration of the <tt>oauth_request_delegation_chain</tt> authorization details type in the applicable IANA registry.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="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="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </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 1228?>

<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>-01</t>
      <ul spacing="normal">
        <li>
          <t>Added <tt>client_roles</tt> OAuth Dynamic Client Registration metadata with <tt>oauth_broker</tt> as a client role value.</t>
        </li>
        <li>
          <t>Added IANA request for the <tt>client_roles</tt> client metadata name.</t>
        </li>
        <li>
          <t>Added broker processing rules for discovering upstream support for the <tt>oauth_request_delegation_chain</tt> authorization details type.</t>
        </li>
        <li>
          <t>Added authorization server processing rules for rejecting brokered authorization requests that omit a required <tt>oauth_request_delegation_chain</tt> authorization detail.</t>
        </li>
        <li>
          <t>Added mitigation of chain truncation and tampering.</t>
        </li>
      </ul>
      <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:
H4sIAAAAAAAAA+19a3fb1rXgd/wKjLLupGlI2nIcJ1Gv2yu/GmWSONeSm9V2
siyIBCVEJMALgJLZxP0t81vml81+nrMPcEDSj87tzLpdqzFFAuexz36/zng8
TtqiXeRH6cHz43V7leJ/qrr4W9YWVZm+yP9jnTdt+iRf5Jf81eOrrCgPkuzi
os5vgtf+tuXxadbml1W9OUqLcl4lyayaltkSpp3V2bwd/y2/ym6KcZXBMGP8
z9/Gdf4f41m+GE9xgPHdw6RZXyyLpoFB280K3jx5evYsKdfLi7w+SmYw/lEy
rcomL5t1c5TOs0WTJ7DAz5KszjNY6Gk+XddFuzlIbqv6+rKu1iv49sf8orPn
H+qqrabV4iC5zjfw6OwoSccpLQ0/vDh+gf9kwTs1bxx/mLm9418XdXWd10V5
iX88PvnuSXKTl2tYaprus4I05b0e/AhLhlHSP+JL+P0yKxbwPS3r34q8nU+q
+hJ/yOrpFfxw1bar5ujOHXwOvypu8ok+dge/uANLu23yOzTCHXzzsmiv1hfw
7iarq1LO5I4/E7fAsWx37PfKx4SjLOAkmtaswI424TkmRfVW497ZD0smV+0S
gJbwoHhssJ40na8XC0a2P+NS0r/QMPQTACMrZfaj9EVWzOd5ASiUPsrK6/Sk
bPO6pB+zBT2fM9hpSxNezr/VF4V9bjKtlklSVvUSvrihk37x7PGDL+5/JR+/
+Pzwc//xC//xS//RP/vVoX588OCefPzy3uf6wJf3D+/Lx68+++rBUZIgfYVz
f/ngq8/w4/NVXp48mTzLZ3nNO6Y9Ofqnn1P/c3o4uXvAj2T1ZQ5nqkdawaPF
bFLm7Z1mlU8b+WI8d++OD1/dpeOg992B0P/GCPajVOer1uVM6CU9GT8hLJUz
boRkx221KqbNeL1iOg+WTfzn3uRuqgSePkIe9Hhd13nZAjFl07aY5ulLejm+
Ifgla+FBoFVPJcCjBPF2LulOf+3TRQHTjwEqy7zNcIIxDLhewpexDTymx1MA
yHfyePpEHn/fJW9Zia57Ob1cF2WZN41S17St6vGqrubFIgrwY3wAORU+kALK
Gab/TgvevoTdC63mzeA6x6fFZZnP0q+rFS4ZHv3AS4QR7yTJeAxy4aLBEdok
eUSsH2blhcCnos6nbVxyNCAXb6rFTZ4SM1nCw1m96Tzb5PVNXjfpRd7e5sCk
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
7jwKD03LjyGTZnJNkv8DkeUsvrzpAAA=

-->

</rfc>
