<?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-liu-oauth-delegation-chaining-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Delegation Chaining for ID-JAG">Delegation Chaining for the Identity Assertion JWT Authorization Grant</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-oauth-delegation-chaining-00"/>
    <author initials="D." surname="Liu" fullname="Dapeng Liu">
      <organization>Alibaba</organization>
      <address>
        <email>max.ldp@alibaba-inc.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>OAuth</keyword>
    <keyword>Token Exchange</keyword>
    <keyword>Delegation</keyword>
    <keyword>ID-JAG</keyword>
    <keyword>SPIFFE</keyword>
    <keyword>AI Agents</keyword>
    <keyword>Workload Identity</keyword>
    <abstract>
      <?line 85?>

<t>The Identity Assertion JWT Authorization Grant (ID-JAG) defines how a
client obtains a delegated authorization grant from an identity
assertion. It leaves the validation of the actor_token, the related
policy evaluation, and the act claim of the issued ID-JAG open for
future profiles. This document defines those rules for delegation
chains, in which a series of workloads, such as AI agents, act on
behalf of an initial end-user across multiple hops.</t>
      <t>Each delegating workload authenticates to the Authorization Server
and presents the ID-JAG it holds as the subject_token of an OAuth 2.0
Token Exchange request, together with the SPIFFE JWT-SVID of the
workload it delegates to as the actor_token. The Authorization Server
validates both workload identities, checks that the delegating
workload matches the may_act claim of the subject_token, and enforces
monotonic scope attenuation. It then issues a new ID-JAG for the next
hop, carrying the actor chain in the act claim. The last workload of
the chain delegates to no one and instead redeems its ID-JAG for an
Access Token with the JWT bearer grant of <xref target="RFC7523"/>. An optional
variant based on self-issued Delegation Assertions is defined for hops
where the Authorization Server is not reachable.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://maxpassion.github.io/delegation-chaining-for-id-jag/draft-liu-oauth-delegation-chaining.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-liu-oauth-delegation-chaining/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Individual Draft 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/maxpassion/delegation-chaining-for-id-jag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 108?>

<section anchor="introduction">
      <name>Introduction and Problem Statement</name>
      <t>In modern distributed multi-tier application architectures and
autonomous AI agent ecosystems (e.g., User -&gt; Agent A -&gt; Agent B -&gt;
Agent C -&gt; MCP Tool), service-to-service execution chains frequently
cross trust boundaries while operating on behalf of an initial
end-user.</t>
      <t>The OAuth 2.0 framework <xref target="RFC6749"/> and the Identity Assertion JWT
Authorization Grant (ID-JAG) <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
address identity assertions and authorization grants for single-hop
scenarios. However, two gaps remain in multi-hop execution chains:</t>
      <ol spacing="normal" type="1"><li>
          <t>The actor_token validation gap. <xref section="4.3" sectionFormat="of" target="I-D.ietf-oauth-identity-assertion-authz-grant"/> states: "This specification does not
define normative processing requirements for actor_token or whether
an act claim is included in the issued ID-JAG. Future profiles or
extensions MAY define how actor_token is validated, how it
influences policy evaluation, and whether it results in an act
claim in the issued ID-JAG."</t>
        </li>
        <li>
          <t>The delegation continuation gap. A standardized mechanism is
needed that lets an intermediate delegate, e.g., Agent B,
propagate the end-user's authorization further down the chain,
e.g., to Agent C, with strictly narrowed privileges, while keeping
every hop verifiable by the Authorization Server that issues the
credential for it. This does not require a single trust root
common to the whole chain. Each hop is validated by the AS named
in the aud claim of the credential presented at that hop, and
where consecutive hops fall in different trust domains, the two
Authorization Servers rely on the inter-domain trust relationship
described in <xref target="chain-overview"/>.</t>
        </li>
      </ol>
      <t>This document is such a profile. It defines how actor_token is
validated, how it influences policy evaluation, and how the act claim
is populated when ID-JAGs are chained across multiple hops. The
mechanism combines:</t>
      <ol spacing="normal" type="1"><li>
          <t>SPIFFE workload identities, carried as JWT-SVIDs, as the machine
identity of each actor <xref target="SPIFFE-ID"/> <xref target="SPIFFE-JWT-SVID"/>.</t>
        </li>
        <li>
          <t>OAuth 2.0 Token Exchange <xref target="RFC8693"/> as the point where the
machine identities of the delegating and the delegated workload
and the delegated authorization of the end-user are verified and
merged by the Authorization Server (AS).</t>
        </li>
        <li>
          <t>The may_act claim (<xref section="4.4" sectionFormat="of" target="RFC8693"/>) to bind each
issued ID-JAG to the entity entitled to redeem it at the next hop,
and the act claim (<xref section="4.1" sectionFormat="of" target="RFC8693"/>) to carry the
delegation lineage.</t>
        </li>
      </ol>
      <t>Every hop of the chain performs exactly one request to an
Authorization Server.
Each ID-JAG in the chain is issued by an AS rather
than minted by the delegating entity, so privilege attenuation is
enforced at every hop rather than merely asserted by the entity that
delegates, and the full lineage, e.g., User -&gt; Agent A -&gt; Agent B -&gt;
Agent C, is carried in the act claim of the final Access Token.</t>
      <t>This document is a profile of
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, which is itself a
profile of <xref target="I-D.ietf-oauth-identity-chaining"/>. Identity chaining
combines OAuth 2.0 Token Exchange with the JWT bearer grant of
<xref target="RFC7523"/> to carry one authorization across the boundary between
two trust domains, and it intentionally leaves many details
unspecified. This document supplies some of those details for a
different shape of problem: a chain of more than two workloads in
which each hop delegates to the next, where a hop may or may not cross
a trust domain boundary. A hop that delegates onward uses an OAuth 2.0
Token Exchange request, defined in <xref target="exchange-request"/>. The last hop
of the chain delegates to no one; it redeems the ID-JAG it holds for
an Access Token using the JWT bearer grant of <xref target="RFC7523"/>, as
<xref section="2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> requires. That form
is defined in <xref target="last-hop"/>, and <xref target="as-processing"/> states the checks
that apply to both.</t>
      <t>For hops where a round trip to the AS is not practical, for example
across trust domains with no reachable common AS, this document also
defines an optional variant based on self-issued Delegation
Assertions, see <xref target="self-issued"/>. That variant offers weaker
guarantees and supplements, but does not replace, the mechanism of
<xref target="chaining"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the terms "authorization server" (AS),
"client", "resource server" (RS), and "access token" defined in
<xref target="RFC6749"/>, the Token Exchange parameters defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/>, the JWT bearer grant parameters defined in
<xref section="2.1" sectionFormat="of" target="RFC7523"/>, and the act and may_act claims defined in
<xref section="4.1" sectionFormat="of" target="RFC8693"/> and <xref section="4.4" sectionFormat="of" target="RFC8693"/>.</t>
      <t>In addition, this document defines the following roles and
credentials:</t>
      <dl>
        <dt>ID-JAG:</dt>
        <dd>
          <t>An Identity Assertion JWT Authorization Grant
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>. In this profile,
an ID-JAG represents the delegated authorization of the end-user
held by one entity of the chain.</t>
        </dd>
        <dt>Delegating Entity (e.g., Agent A / Service A):</dt>
        <dd>
          <t>An upstream workload that holds an ID-JAG and delegates a
sub-operation or task to a downstream entity.</t>
        </dd>
        <dt>Target Entity (e.g., Agent B / Service B):</dt>
        <dd>
          <t>A downstream workload that receives the delegated authorization,
executes computations, or further delegates to subsequent entities.</t>
        </dd>
        <dt>Workload Identity (SPIFFE SVID):</dt>
        <dd>
          <t>A machine identity credential issued to each workload instance by
trusted infrastructure, such as SPIRE, serving as the immutable
actor proof <xref target="SPIFFE-ID"/> <xref target="SPIFFE-JWT-SVID"/>.</t>
        </dd>
        <dt>Delegation Assertion (DA):</dt>
        <dd>
          <t>A short-lived JWT self-issued by a delegating entity in the
optional variant of <xref target="self-issued"/>, carrying the initial user
context, the delegation history, and privilege attenuation limits.</t>
        </dd>
      </dl>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" 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>
    </section>
    <section anchor="workload-identity">
      <name>Workload Identity of the Actor</name>
      <t>Every workload in the chain, for example an AI agent runtime or a
container hosting an agentic loop, is provisioned with a cryptographic
machine identity by trusted infrastructure, such as a SPIRE server.
The identity is a SPIFFE ID <xref target="SPIFFE-ID"/>. SPIRE's Kubernetes
workload registrar assigns IDs of the form:</t>
      <sourcecode><![CDATA[
spiffe://<trust-domain>/ns/<namespace>/sa/<workload-name>
]]></sourcecode>
      <t>The workload proves this identity with a JWT-SVID, a JWT whose sub
claim carries the SPIFFE ID and which is signed by the SPIRE server
of the trust domain. Verifying a JWT-SVID requires the SPIFFE trust
bundle of that trust domain, whose JWT authorities are published as a
JWK Set <xref target="RFC7517"/>. JWT-SVIDs are short-lived by design
<xref target="SPIFFE-JWT-SVID"/>.</t>
      <t>SPIFFE defines a second credential form for the same identity, the
X.509-SVID <xref target="SPIFFE-X509-SVID"/>, which is a certificate for a key
pair that the workload itself holds. The difference between the two
forms matters for this document. A JWT-SVID is signed by the
SPIRE server, so the workload carries it but cannot produce new
signed material with it. An X.509-SVID gives the workload a private
key it can sign with. The primary mechanism presents a JWT-SVID as
the actor_token. The self-issued variant of <xref target="self-issued"/> signs
its Delegation Assertions with the X.509-SVID private key.</t>
      <t>In this profile, the JWT-SVID of the target entity is presented as
the actor_token of the Token Exchange request described in
<xref target="exchange-request"/>. This binds the machine identity of the party
that will wield the issued ID-JAG into the delegation chain,
independently of any application-level identity. The delegating
entity is identified separately, by authenticating at the token
endpoint as the OAuth client. Its JWT-SVID MAY serve as the client
authentication credential, as described in
<xref target="I-D.ietf-oauth-spiffe-client-auth"/>. When SVID-based client
authentication is not used, the AS MUST still authenticate the client
with some other mechanism, because the act claim of the issued ID-JAG
is built from the authenticated client identity rather than from the
actor_token, see <xref target="as-processing"/> and <xref target="issued-id-jag"/>.</t>
    </section>
    <section anchor="chaining">
      <name>Delegation Chaining</name>
      <section anchor="chain-overview">
        <name>Overview</name>
        <t>The chain starts like any ID-JAG flow. The end-user authenticates to
the AS, for example with OpenID Connect <xref target="OpenID.Core"/>. The first
workload, Agent A, requests its initial ID-JAG with the ID-JAG grant
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, presenting the
end-user's identity assertion. The initial ID-JAG has the end-user as
its subject and carries the end-user's authorization for Agent A.</t>
        <t>When Agent A decides to delegate a sub-operation to Agent B, it does
not mint the delegated credential itself. Agent A authenticates to
the AS and sends a Token Exchange request to its token endpoint:
subject_token is the ID-JAG Agent A holds, actor_token is Agent B's
JWT-SVID, and audience names the AS that will redeem the new ID-JAG.
The AS validates the request as described in <xref target="as-processing"/> and
issues a new ID-JAG. The subject remains the end-user, the act claim
records Agent A as the current actor, and the may_act claim names
Agent B as the entity entitled to redeem the new ID-JAG.</t>
        <t>Agent A passes the new ID-JAG to Agent B over the inter-agent
transport, for example an HTTP header, gRPC metadata, or an MCP
payload. Agent B now holds the delegated authorization and can either
redeem it for an Access Token of a resource server or delegate
further to Agent C in exactly the same way. Each hop of the chain
therefore performs exactly one request to an AS, and every
ID-JAG is issued by an AS that has validated the ID-JAG presented at
the hop before it.</t>
        <figure anchor="fig-hop">
          <name>One hop of the delegation chain</name>
          <artwork><![CDATA[
Agent A                   Agent B                            AS
   |                         |                                |
   |--(1) request JWT-SVID ->|                                |
   |     with aud = the AS   |                                |
   |<-(2) JWT-SVID of B -----|                                |
   |                         |                                |
   |--(3) Token Exchange ------------------------------------>|
   |     subject_token = ID-JAG held by Agent A               |
   |     actor_token   = JWT-SVID of Agent B                  |
   |                         |  (4) authenticate A,           |
   |                         |      validate B,               |
   |                         |      check may_act,            |
   |                         |      attenuate                 |
   |<-(5) new ID-JAG -----------------------------------------|
   |     act = A, may_act = B, client_id = B                  |
   |                         |                                |
   |--(6) pass new ID-JAG -->|                                |
   |     over the A2A transport                               |
   |                         |                                |
   |                         |  (7) Agent B now repeats       |
   |                         |      (3)-(6) to delegate       |
   |                         |      further, or redeems       |
   |                         |      the ID-JAG for an         |
   |                         |      Access Token              |
]]></artwork>
        </figure>
        <t><xref target="fig-hop"/> shows a single hop. The chain ends when the last
workload redeems the ID-JAG it holds
for an Access Token of the resource server it needs to call. The
Access Token carries the complete actor chain in its act claim,
e.g., User -&gt; Agent A -&gt; Agent B -&gt; Agent C, which gives the resource
server verifiable multi-hop provenance.</t>
        <t>When the target entity operates in a different trust domain with its
own AS, the AS of the delegating entity issues the ID-JAG with the
aud claim set to the issuer identifier of the target domain's AS, as
described in <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>. The
target entity redeems the ID-JAG there. The processing requirements
of <xref target="as-processing"/> apply at whichever AS redeems the ID-JAG. The
redeeming AS validates the signature of the ID-JAG against the
signing key of the issuing AS identified by its iss claim, which it
obtains through the inter-domain trust relationship between the two
Authorization Servers.</t>
      </section>
      <section anchor="exchange-request">
        <name>The Delegation Request</name>
        <t>Every hop of the chain makes exactly one request to the token
endpoint of an Authorization Server. A hop that delegates onward, that
is, every hop but the last, sends an OAuth 2.0 Token Exchange request
as defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/>, with the following
parameters:</t>
        <sourcecode><![CDATA[
grant_type=urn:ietf:params:oauth:grant-type:token-exchange
subject_token=(the ID-JAG held by the delegating entity)
subject_token_type=urn:ietf:params:oauth:token-type:id-jag
actor_token=(the JWT-SVID of the target entity)
actor_token_type=urn:ietf:params:oauth:token-type:jwt
requested_token_type=urn:ietf:params:oauth:token-type:id-jag
audience=(the entity at which the issued token will be presented)
resource=(the resource server the authorization is destined for)
scope=(no wider than the scope of the subject_token)
authorization_details=(no broader than those of the subject_token)
]]></sourcecode>
        <t>The subject_token, subject_token_type, actor_token, actor_token_type,
requested_token_type, and audience parameters are REQUIRED in this
profile, notwithstanding that <xref section="2.1" sectionFormat="of" target="RFC8693"/> defines
actor_token and audience as OPTIONAL. The value of
requested_token_type is always
urn:ietf:params:oauth:token-type:id-jag in this request, because a hop
that delegates onward always asks for an ID-JAG; the last hop sends a
different request, see <xref target="last-hop"/>. The processing rules of
<xref target="as-processing"/> depend on the identity carried by the actor_token
and derive the aud claim of the issued ID-JAG from audience. Client
authentication is likewise mandatory, see <xref target="as-processing"/>. The
resource parameter remains OPTIONAL as in <xref target="RFC8707"/> and is
constrained by step 5 of <xref target="as-processing"/> when present.</t>
        <t>Using the value urn:ietf:params:oauth:token-type:id-jag for
subject_token_type is an extension of
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, whose Section 4.3
lists only the id_token, saml2, and refresh_token values for that
parameter. The URN itself is already registered by Section 10.2 of
that document as a token type URI, which <xref section="3" sectionFormat="of" target="RFC8693"/>
permits in both subject_token_type and requested_token_type. It is
this use of an ID-JAG as the subject_token of a further exchange that
carries the delegation continuation gap of <xref target="introduction"/>.</t>
        <t>The scope and authorization_details <xref target="RFC9396"/> parameters together
express the privileges requested for the next hop. Both MUST be no
broader than the corresponding values of the subject_token, as the
attenuation check of <xref target="as-processing"/> requires. The
authorization_details parameter carries the fine-grained narrowing,
for example restricting access to a single resource, and is encoded
as specified in <xref target="RFC9396"/>.</t>
        <t>The audience parameter has a single meaning throughout this profile:
it names the entity at which the issued token will be presented, as
<xref section="2.1" sectionFormat="of" target="RFC8693"/> defines it. The token issued by this
request is always an ID-JAG and is always redeemed at the AS of the
next hop, so audience always names an Authorization Server and never
a resource server, and the AS sets the aud claim of the issued ID-JAG
to that identifier. Permitting audience to name an AS in the same
trust domain as the requesting client is an extension of
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, whose Section 4.3
defines audience as the Resource Authorization Server in another
trust domain; the cross-domain case described there is one instance
of the rule here. The identity of the target entity is carried in the
actor_token instead, and the AS records it in the may_act claim of
the issued ID-JAG, which binds the ID-JAG to the entity entitled to
redeem it in the next request. The resource server for which the
authorization is ultimately destined is named by the resource
parameter <xref target="RFC8707"/>, which is carried forward at every hop and
which the last hop uses to set the aud claim of the Access Token it
obtains, see <xref target="last-hop"/>.</t>
        <t>The actor_token identifies the party that will wield the issued
ID-JAG, which is the reading <xref section="2.1" sectionFormat="of" target="RFC8693"/> gives that
parameter. The delegating entity is not named by any request
parameter. It is identified by the client authentication it performs
at the token endpoint, which SHOULD use its JWT-SVID as described in
<xref target="I-D.ietf-oauth-spiffe-client-auth"/>. Other client authentication
methods MAY be used. Client authentication is not optional in this
profile, because the AS derives the act claim of the issued ID-JAG
from the authenticated client identity, see <xref target="as-processing"/> and
<xref target="issued-id-jag"/>.</t>
        <t>The delegating entity therefore has to obtain the JWT-SVID of its
target from that target before it can make the request. The
consequences of that transfer are discussed in <xref target="sec-actor-transfer"/>.</t>
        <t>The response follows <xref section="2.2.1" sectionFormat="of" target="RFC8693"/>. The issued ID-JAG
is returned in the access_token parameter and token_type is set to
N_A.</t>
      </section>
      <section anchor="last-hop">
        <name>Redemption at the Last Hop</name>
        <t>The last workload of the chain delegates to no one. It redeems the
ID-JAG it holds for an Access Token, and it does so with the JWT
bearer grant of <xref target="RFC7523"/>, as <xref section="2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> requires and as
<xref section="4.4" sectionFormat="of" target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
describes:</t>
        <sourcecode><![CDATA[
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=(the ID-JAG held by the redeeming entity)
scope=(no wider than the scope of the assertion)
]]></sourcecode>
        <t>This request, as defined here, uses the parameter values and encodings
of <xref section="2.1" sectionFormat="of" target="RFC7523"/> and takes no actor_token, no audience,
and no resource parameter. The redeeming entity is identified by the
client
authentication it performs, which MUST succeed and which the AS MUST
match against the may_act claim of the assertion, as step 4 of
<xref target="as-processing"/> requires. The aud claim of the assertion already
names this AS, because that is what the audience parameter of the hop
that issued it asked for, and <xref section="2.4.2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> permits that value to be either
the token endpoint of the AS or its issuer identifier. The resource
server for which access is requested is named by the resource claim
of the assertion where that claim is present, carried forward from
the hop that set it, and the AS sets the aud claim of the issued
Access Token accordingly. Where the assertion carries no resource
claim, the AS determines the audience of the Access Token by its own
policy.</t>
        <t>Because the request carries no actor_token, the last hop presents no
JWT-SVID at all, not even one of its own. The scope parameter MUST be
no wider than the scope of the assertion, and since the request
defined here carries no authorization_details or resource parameter,
the fine-grained narrowing and the resource binding of the issued
Access Token are those the assertion already carries. The AS MAY
narrow them further by policy and MUST NOT widen them. The response is
the access token response of <xref section="5.1" sectionFormat="of" target="RFC6749"/>, and an
assertion that fails validation yields the invalid_grant error of
<xref section="3.1" sectionFormat="of" target="RFC7523"/>. <xref section="3.1" sectionFormat="of" target="RFC7523"/> leaves
client authentication to the policy of the Authorization Server; this
profile requires it, because the act claim of the issued Access Token
is built from the authenticated client identity, see
<xref target="issued-id-jag"/>.</t>
      </section>
      <section anchor="as-processing">
        <name>Authorization Server Processing Requirements</name>
        <t>Upon receiving a request of either form, the delegation request of
<xref target="exchange-request"/> or the last-hop request of <xref target="last-hop"/>, the AS
executes the following verification and policy evaluation pipeline.
These requirements answer the questions that
<xref section="4.3" sectionFormat="of" target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
leaves open, and they apply at every hop of the chain. Where a step
names the subject_token, that is the assertion parameter at the last
hop, and the same validation applies to it:</t>
        <ol spacing="normal" type="1"><li>
            <t>Client authentication: The AS MUST authenticate the client making
the request. SVID-based client authentication
<xref target="I-D.ietf-oauth-spiffe-client-auth"/> SHOULD be used, in which
case the authenticated client is identified by its SPIFFE ID. The
authenticated client is the delegating entity of this hop, and the
AS MUST record it in the act claim of the issued token, see
<xref target="issued-id-jag"/>. A request that carries no client
authentication MUST be rejected, because without it the AS cannot
determine the actor of this hop.</t>
          </li>
          <li>
            <t>Actor validation: Where the request carries an actor_token, the
following applies. The last-hop request of <xref target="last-hop"/> carries
none and skips this step. The actor_token MUST be a
JWT-SVID <xref target="SPIFFE-JWT-SVID"/>. The AS MUST verify its signature
against the SPIFFE trust bundle of the actor's trust domain, MUST
verify its temporal validity (exp and nbf), and MUST verify that it
is an intended audience of the JWT-SVID as identified by its aud
claim. If the AS holds no trust bundle for the trust domain of the
actor, it MUST reject the request rather than skip this validation.
The SPIFFE ID in the sub claim of the actor_token identifies the
target entity of this hop. Where requested_token_type is
urn:ietf:params:oauth:token-type:id-jag, as it is in every request
of <xref target="exchange-request"/>, the target entity is a downstream
delegate and MUST differ from the authenticated client; the AS MUST
reject a request in which the two are the same, because a hop that
delegates to itself delegates to no one. Where requested_token_type
is urn:ietf:params:oauth:token-type:access_token, as it is in the
variant of <xref target="self-issued-redemption"/>, the requester is also the
party that will wield the issued token and the two MUST be the
same; the AS MUST reject a request in which they differ.</t>
          </li>
          <li>
            <t>Subject validation: The subject_token MUST be validated as an
ID-JAG as required by
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, including
signature, issuer, audience, expiration, not-before, and jti. The
aud claim of the subject_token MUST identify the AS itself. Where
the subject_token carries a client_id claim, that claim MUST
identify the authenticated client, as
<xref section="4.4.1" sectionFormat="of" target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
requires, and a request in which the two differ MUST be rejected.
The AS
MUST verify the signature of the subject_token against the signing
key of the issuer identified by its iss claim. Where that issuer
is the AS itself, this is its own key; where the subject_token was
issued by an AS in another trust domain, see <xref target="chain-overview"/>,
the AS obtains that key through the inter-domain trust
relationship. Because the issuing AS signs the ID-JAG, that
signature covers the act chain the ID-JAG carries.</t>
          </li>
          <li>
            <t>Hop binding: If the subject_token contains a may_act claim, the AS
MUST verify that the sub member of may_act identifies the
authenticated client, and MUST reject the request otherwise. This
binds every ID-JAG to the single entity entitled to present it, so
a stolen ID-JAG cannot be used by a different workload, and the
delegating entity itself cannot redeem the ID-JAG it requested for
its target. Note that may_act is compared against the
authenticated client and not against the actor_token, because the
actor_token names the entity of the next hop rather than the
entity presenting this one. If the subject_token contains no
may_act claim, as is the case for the initial ID-JAG obtained
through the ID-JAG grant, the AS MUST apply its own policy to
decide whether the authenticated client may delegate the
subject_token further. In the request of <xref target="last-hop"/>, which
carries no actor_token, this check is the only one that identifies
the redeeming entity, and where the assertion contains a may_act
claim, as every ID-JAG issued at a hop that delegates onward does,
the AS MUST NOT skip it. Where the assertion is an initial ID-JAG
obtained directly through the ID-JAG grant and so contains no
may_act claim, the AS MUST apply its own policy to decide whether
the authenticated client may redeem it.</t>
          </li>
          <li>
            <t>Attenuation check: The requested scope MUST be a subset of or
equal to the scope of the subject_token, where scope is compared
as a set of space-delimited values. A request that contains a
scope value not present in the subject_token MUST be rejected.
Fine-grained narrowing is carried in authorization_details
<xref target="RFC9396"/>. Whether a requested authorization_details object is
no broader than the corresponding object of the subject_token is
defined by that authorization_details type; this profile defines
no generic comparison across types. Where the type defines no
narrowing relation, or where the AS cannot decide that the
requested object is no broader, the AS MUST reject the request.
The AS MAY further narrow the granted scope and
authorization_details based on policy. Where the subject_token
carries a resource claim, the requested resource MUST be the same
or narrower, and the AS MUST reject a request that names a
resource server the subject_token does not. The request of
<xref target="last-hop"/> carries a scope parameter and nothing else to
attenuate, so for that request this step applies to scope alone and
the authorization_details and resource of the issued Access Token
are those the assertion carries, which the AS MAY narrow but MUST
NOT widen.</t>
          </li>
          <li>
            <t>Delegation policy: The AS MUST apply its delegation policy to
decide whether the authenticated client is permitted to delegate
to the target entity named by the actor_token, and which scopes
and authorization_details that target entity may receive at all.
Policy evaluation takes the authenticated client identity, the
target entity identity, and the subject authorization as input.
Where policy permits no such delegation the AS MUST reject the
request. This check is what authorizes each hop. Where the request
is a redemption rather than a delegation, that is, where
requested_token_type is
urn:ietf:params:oauth:token-type:access_token or the request is the
jwt-bearer request of <xref target="last-hop"/>, the delegation part of this
step does not apply; the AS instead applies its policy on whether
the authenticated client may redeem for the resource server named,
and the depth limit below still applies. The may_act claim
of the subject_token binds the hop to the entity entitled to
present it, but it does not authorize a further delegation,
because the target of a delegation is in general chosen at runtime
and cannot have been named when the subject_token was issued. The
AS MUST determine the current depth of the chain by counting the
nested act claims of the subject_token, where a subject_token that
carries no act claim is at depth zero, and MUST reject a request
whose resulting depth would exceed the maximum the AS is
configured to allow. No
separate depth claim is needed for this, because the act chain
already carries the information.</t>
          </li>
          <li>
            <t>Issuance: At a hop that delegates onward the AS issues the new
ID-JAG with the subject unchanged, i.e., the end-user, with the
attenuated scope and authorization_details, and with the resource
of the request carried forward. The act, may_act, and client_id
claims are populated as described in <xref target="issued-id-jag"/>.
The lifetime of the issued ID-JAG SHOULD NOT exceed 60 seconds, the
limit RECOMMENDED for Delegation Assertions in
<xref target="self-issued-format"/>, and the jti value MUST be unique among the
tokens the AS has issued and still tracks. Where the request is a
redemption, the AS issues an Access Token instead, with the same
subject and the same attenuated privileges, with the aud claim set
as described in <xref target="last-hop"/> for the jwt-bearer request, and with
the act claim built as described in <xref target="issued-id-jag"/>. A may_act
claim is not meaningful in that Access Token, because nothing
redeems it.</t>
          </li>
        </ol>
      </section>
      <section anchor="issued-id-jag">
        <name>The Issued ID-JAG</name>
        <t>The issued ID-JAG carries the end-user as its subject, the attenuated
privileges, and the actor chain. The act claim follows <xref section="4.1" sectionFormat="of" target="RFC8693"/>: the outermost value represents the current actor, and
nested values represent prior actors. At each hop, the AS sets
the outermost act value to the authenticated client, that is, the
delegating entity at a hop that delegates onward and the entity the
assertion was issued to at the last hop, and nests the act claim of
the subject_token inside it. The same rule builds the act claim of
the Access Token issued at the last hop. The may_act claim follows
<xref section="4.4" sectionFormat="of" target="RFC8693"/> and is set to the SPIFFE ID carried in
the sub claim of the actor_token, i.e., the party entitled to redeem
the issued
ID-JAG. The client_id claim is set to that same value, so that it
matches the client authentication the target entity performs when it
presents the ID-JAG, as required by
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>.</t>
        <t>This differs from the delegation example of <xref section="A.2" sectionFormat="of" target="RFC8693"/>, in which
the act claim of the issued token repeats the subject of the
actor_token. That example covers a request for a token the requester
will wield itself, where the requester and the actor are the same
party. In this profile an intermediate hop requests a token that a
downstream delegate will wield, so the actor of the current hop is
the requester and the party named by the actor_token is the actor of
the next hop. <xref section="2.1" sectionFormat="of" target="RFC8693"/> defines the actor_token as
the token of the party that is authorized to use the requested
security token, which is the downstream delegate here, and
<xref section="1.1" sectionFormat="of" target="RFC8693"/> leaves whether a composite token is
issued, and in what form, to the discretion, policy, and
configuration of the authorization server. This profile exercises
that discretion.</t>
        <t>The following is an example of the ID-JAG issued for the first hop,
where Agent A delegates to Agent B. The act claim records Agent A,
the authenticated client that requested the exchange, while may_act
and client_id name Agent B, the entity taken from the actor_token
that will present this ID-JAG:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://auth.enterprise.net",
  "sub": "user_original_12345",
  "aud": "https://auth.enterprise.net",
  "client_id": "spiffe://cluster.local/ns/ai/sa/agent-db-proxy",
  "exp": 1776326800,
  "iat": 1776326740,
  "jti": "urn:uuid:8e41-4b72-9b2a-111122223333",
  "resource": "https://db.partner.net",
  "scope": "reports:read",
  "authorization_details": [
    {
      "type": "api_access",
      "actions": ["GET"],
      "locations": ["/api/v1/reports"]
    }
  ],
  "act": {
    "sub": "spiffe://cluster.local/ns/ai/sa/agent-researcher"
  },
  "may_act": {
    "sub": "spiffe://cluster.local/ns/ai/sa/agent-db-proxy"
  }
}
]]></sourcecode>
        <t>The following is an example of the ID-JAG issued for the second hop,
where Agent B delegates to Agent C. The act claim nests Agent A
inside Agent B, may_act and client_id name Agent C, the scope is
unchanged, and the authorization_details have been narrowed from all
reports to the single Q3 report. Agent C operates in a different
trust domain, so aud names that domain's Authorization Server and
does not repeat iss:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://auth.enterprise.net",
  "sub": "user_original_12345",
  "aud": "https://auth.partner.net",
  "client_id":
    "spiffe://partner.local/ns/finance/sa/agent-db-worker",
  "exp": 1776326900,
  "iat": 1776326840,
  "jti": "urn:uuid:f901-2222-3333-444455556666",
  "resource": "https://db.partner.net",
  "scope": "reports:read",
  "authorization_details": [
    {
      "type": "api_access",
      "actions": ["GET"],
      "locations": ["/api/v1/reports/q3.pdf"]
    }
  ],
  "act": {
    "sub": "spiffe://cluster.local/ns/ai/sa/agent-db-proxy",
    "act": {
      "sub": "spiffe://cluster.local/ns/ai/sa/agent-researcher"
    }
  },
  "may_act": {
    "sub": "spiffe://partner.local/ns/finance/sa/agent-db-worker"
  }
}
]]></sourcecode>
        <t>Because Agent C operates in the partner.local trust domain, the aud
claim of this ID-JAG names that domain's Authorization Server rather
than the issuer, which is the cross-domain form described in
<xref target="chain-overview"/>. The partner Authorization Server validates the
signature against the signing key of https://auth.enterprise.net,
which it obtains through the inter-domain trust relationship between
the two.</t>
        <t>Deployments MAY carry additional claims in the issued ID-JAG,
e.g., task context for AI agent workloads, as long as the claims
required by <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> are
present.</t>
      </section>
    </section>
    <section anchor="self-issued">
      <name>Optional Variant: Self-Issued Delegation Assertions</name>
      <t>This section defines an optional variant for hops where a Token
Exchange round trip to the AS is not practical. It keeps the protocol
shape of the primary mechanism, a signed JWT passed in-band and
redeemed together with a workload identity, but moves assertion
issuance from the AS to the delegating entities themselves.</t>
      <section anchor="self-issued-applicability">
        <name>Applicability</name>
        <t>The self-issued variant applies to intermediate hops downstream of an
authorization that the AS issued, when the delegating entity and the
target entity cannot reach a common AS synchronously, for example
because they operate in trust domains with no reachable common AS, or
because the added latency of a synchronous exchange at every hop is
unacceptable for the workload. The end-user's root authorization
always originates at the AS. The variant changes only how the hops
after that root are bridged, not where the authority comes from.</t>
        <t>The self-issued variant SHOULD NOT be used when the AS of the chain
is reachable. Token Exchange gives the AS the opportunity to validate
the actor and enforce attenuation at every hop. The self-issued
variant cannot provide those guarantees, see
<xref target="self-issued-redemption"/>.</t>
      </section>
      <section anchor="self-issued-format">
        <name>Assertion Format</name>
        <t>A Delegation Assertion (DA) is a JWT <xref target="RFC7519"/>. A delegating
entity, e.g., Agent A, MUST possess authority representing the
end-user (sub) before it issues a downstream Delegation Assertion.
That authority is either an authorization grant or active token
issued by the AS, or an upstream Delegation Assertion whose chain of
issuers roots at such a grant or token.</t>
        <t>Each Delegation Assertion MUST be signed with the private key of the
delegating entity's X.509-SVID, see <xref target="workload-identity"/>. A
JWT-SVID cannot serve this purpose, because it is signed by the SPIRE
server and the workload does not hold that signing key.</t>
        <t>The Delegation Assertion is a JWS and MUST carry the signing
X.509-SVID so that the AS can validate it, for example in the x5c
header parameter <xref target="RFC7515"/>. The redeeming AS validates the
signature by checking that this X.509-SVID chains to a certificate
authority in the SPIFFE trust bundle of the issuer's trust domain,
and that the SPIFFE ID carried in the X.509-SVID equals the iss claim
of the Delegation Assertion.</t>
        <t>A Delegation Assertion contains the following claims:</t>
        <ul spacing="normal">
          <li>
            <t>iss: the SPIFFE ID of the delegating entity.</t>
          </li>
          <li>
            <t>sub: the subject identifier of the initial end-user.</t>
          </li>
          <li>
            <t>aud: the token endpoint of the AS at which the assertion is
redeemed.</t>
          </li>
          <li>
            <t>exp and nbf: a short temporal validity window. A lifetime of 60
seconds or less is RECOMMENDED.</t>
          </li>
          <li>
            <t>jti: a unique assertion identifier, used for replay prevention.</t>
          </li>
          <li>
            <t>scope: the attenuated privilege scope, no wider than the
privileges of the issuing entity.</t>
          </li>
          <li>
            <t>authorization_details: optional fine-grained authorization details
via <xref target="RFC9396"/>, e.g., access to specific API paths or MCP tools.</t>
          </li>
          <li>
            <t>act: nested actor identities, see <xref target="self-issued-rules"/>.</t>
          </li>
          <li>
            <t>agent_context: optional agentic context, e.g., task_id, goal, and
delegation_depth.</t>
          </li>
        </ul>
        <t>The following is an example of an initial-hop Delegation Assertion:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "spiffe://cluster.local/ns/ai/sa/agent-a",
  "sub": "user_original_12345",
  "aud": "https://auth.enterprise.net/oauth/token",
  "exp": 1776326800,
  "nbf": 1776326740,
  "jti": "urn:uuid:8e41-4b72-9b2a-111122223333",
  "scope": "reports:read",
  "authorization_details": [
    {
      "type": "api_access",
      "actions": ["GET"],
      "locations": ["/api/v1/reports"]
    }
  ]
}
]]></sourcecode>
      </section>
      <section anchor="self-issued-rules">
        <name>Re-Issuance Rules</name>
        <t>When an intermediate entity, e.g., Agent B, needs to delegate further
down the chain, e.g., to Agent C, it MUST NOT forward the original
upstream assertion directly and MUST NOT contact the root IdP. It
self-issues a new downstream Delegation Assertion following three
rules:</t>
        <ol spacing="normal" type="1"><li>
            <t>Monotonic Scope Attenuation Rule: The re-issued assertion's scope
MUST be a subset of or equal to the scope granted to the
re-issuing entity, compared as a set of space-delimited values,
and its authorization_details MUST be no broader than those
granted to the re-issuing entity, as defined by the applicable
authorization_details type. Privilege escalation is prohibited.</t>
          </li>
          <li>
            <t>Actor Chain Nesting Rule: In a Delegation Assertion the iss claim
is the entity that issues it, which is the current actor of that
hop, and the act claim carries the prior actors. The re-issuing
entity MUST set the sub member of the act claim to the SPIFFE ID
of the entity that issued the assertion it is re-issuing, that is,
the iss of the upstream assertion, and MUST set the act member of
the act claim to a copy of the act claim of the upstream
assertion. Where the upstream assertion carries no act claim, the
act member is omitted. The lineage therefore grows by one level at
each hop.</t>
          </li>
          <li>
            <t>Audience Re-Binding Rule: The re-issuing entity MUST update the
aud claim to target the token endpoint of the downstream AS or
resource boundary.</t>
          </li>
        </ol>
        <t>The following is an example of a re-issued assertion for the hop
Agent B to Agent C. Agent B sets iss to its own SPIFFE ID, records
the upstream issuer Agent A as the sole prior actor in act, keeps the
scope, and narrows the authorization_details to the single Q3 report.
The agent_context member is an example of the deployment-specific
claims that <xref target="issued-id-jag"/> permits; this document does not define
it, and an implementation that does not understand it MUST ignore it:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "spiffe://cluster.local/ns/ai/sa/agent-b",
  "sub": "user_original_12345",
  "aud": "https://auth.enterprise.net/oauth/token",
  "exp": 1776326900,
  "nbf": 1776326840,
  "jti": "urn:uuid:f901-2222-3333-444455556666",
  "act": {
    "sub": "spiffe://cluster.local/ns/ai/sa/agent-a"
  },
  "scope": "reports:read",
  "authorization_details": [
    {
      "type": "api_access",
      "actions": ["GET"],
      "locations": ["/api/v1/reports/q3.pdf"]
    }
  ],
  "agent_context": {
    "task_id": "task-q3-summary-001",
    "delegation_depth": 2
  }
}
]]></sourcecode>
      </section>
      <section anchor="self-issued-redemption">
        <name>Redemption at the Authorization Server</name>
        <t>A target entity that received a Delegation Assertion redeems it at
the AS named by the aud claim. The request is a Token Exchange
request as in <xref target="exchange-request"/>, with the Delegation Assertion as
the subject_token, subject_token_type set to
urn:ietf:params:oauth:token-type:jwt, requested_token_type set to
urn:ietf:params:oauth:token-type:access_token, and the redeeming
entity's own JWT-SVID as the actor_token. This variant keeps the
Token Exchange form rather than the JWT bearer grant of
<xref target="last-hop"/> because the AS builds the act claim of the Access Token
from the sub claim of that actor_token, see below, whereas a
Delegation Assertion names its issuer and not its presenter. Because
the requester is also the party
that will wield the issued token, no JWT-SVID is disclosed to any
other entity in this variant. The AS validates the Delegation
Assertion signature by chaining its X.509-SVID to the SPIFFE trust
bundle of the issuer's trust domain, see <xref target="self-issued-format"/>,
checks exp, nbf, and jti, verifies the act chain lineage, and applies
the attenuation check and the delegation policy of steps 5 and 6 of
<xref target="as-processing"/> before issuing an Access Token. Steps 3 and 4 of
<xref target="as-processing"/> do not apply to this variant, because the
subject_token is a Delegation Assertion rather than an ID-JAG and
carries no may_act claim.</t>
        <t>A Delegation Assertion and the ID-JAG of the primary mechanism carry
the actor chain in mirror image. In the ID-JAG the AS is the issuer
and the act claim carries the current actor together with its
predecessors. In the Delegation Assertion the delegating entity is
the issuer, so iss is the current actor and act carries only the
prior actors. When the AS redeems a Delegation Assertion for an
Access Token, it MUST build the act claim of the Access Token with
the redeeming entity, identified by the sub claim of its JWT-SVID
actor_token, as the outermost actor, nesting the iss of the
Delegation Assertion, and nesting inside that the act claim of the
Delegation Assertion. The Access Token then carries the full lineage
in the same outermost-is-current-actor form used throughout this
specification.</t>
        <t>This variant has weaker guarantees than the primary mechanism, and
implementers need to understand them:</t>
        <ul spacing="normal">
          <li>
            <t>Although the end-user's root authorization originates at the AS,
see <xref target="self-issued-applicability"/>, the Delegation Assertion that
reaches the AS at redemption is self-issued and the AS did not
issue it. The AS cannot tell from the assertion alone whether its
chain of issuers truly roots at a grant the AS issued. The request
defined in <xref section="2.1" sectionFormat="of" target="RFC8693"/> carries a single
subject_token and leaves no place for the end-user's own token, so
the AS SHOULD corroborate the root by means available to it, for
example by matching the sub claim against a grant it issued within
the lifetime of the assertion.</t>
          </li>
          <li>
            <t>Attenuation performed by intermediate entities is not independently
verifiable. The AS trusts the signatures of the self-issued
assertions and applies its own policy, but a compromised
intermediate can misstate the privileges it inherited.</t>
          </li>
          <li>
            <t>A Delegation Assertion does not name the entity entitled to present
it. Presenters are authenticated, but any holder can attempt
redemption. Short lifetimes and policy restrictions limit this
exposure but do not remove it.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-audience">
        <name>Audience and Hop Binding</name>
        <t>The aud claim of every ID-JAG in the chain identifies the AS that
redeems it, which prevents cross-service injection of ID-JAGs into
other security domains. The may_act claim additionally binds each
ID-JAG to the single entity entitled to present it. An ID-JAG stolen
in transit or from a compromised workload cannot be used by a
different workload, because that workload cannot authenticate as the
entity may_act names, and the AS rejects the request at the hop
binding check of <xref target="as-processing"/>.</t>
        <t>For self-issued Delegation Assertions, the aud claim MUST be strictly
locked to the token endpoint of the AS to prevent cross-service
injection or replay. The two mechanisms therefore use different
audience forms, the issuer identifier for ID-JAGs and the token
endpoint for Delegation Assertions; both are permitted by
<xref section="2.4.2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/>. Each is fixed
per mechanism, so a token of one mechanism is not a valid audience
match for the other and the two cannot be substituted.</t>
      </section>
      <section anchor="sec-actor-transfer">
        <name>Transfer of the Target Entity's JWT-SVID</name>
        <t>At an intermediate hop the actor_token is the JWT-SVID of the target
entity, so the target entity discloses a JWT-SVID to the entity that
delegates to it. A JWT-SVID is a bearer credential, and whoever holds
one can present it as that workload to any party named in its aud
claim. <xref target="SPIFFE-JWT-SVID"/> warns that a JWT-SVID sent to one audience
can be replayed to another if more than one audience is present, and
that interception of a JWT-SVID grants an attacker the full
privileges it affords.</t>
        <t>This exposure is narrower than a general disclosure of the target
entity's identity credential, and implementations MUST keep it
narrow:</t>
        <ul spacing="normal">
          <li>
            <t>The target entity MUST mint the JWT-SVID it discloses with a single
aud value identifying the AS that will process the exchange, and
MUST NOT disclose a JWT-SVID minted for any other audience.</t>
          </li>
          <li>
            <t>The disclosed JWT-SVID SHOULD have the shortest lifetime the
infrastructure supports, and the delegating entity MUST NOT retain
it after the exchange completes.</t>
          </li>
          <li>
            <t>The audience check that step 2 of <xref target="as-processing"/> requires is
what prevents a JWT-SVID minted for one AS from being used to
request an ID-JAG at another.</t>
          </li>
          <li>
            <t>The AS MUST record the jti of every actor_token it accepts and MUST
reject reuse of a jti it has already accepted, which limits
the value of a disclosed JWT-SVID to a single exchange.</t>
          </li>
        </ul>
        <t>Even with these measures a compromised delegating entity can request
an ID-JAG naming an arbitrary target. That is why the delegation
policy check of <xref target="as-processing"/>, and not the actor_token, is what
authorizes a hop: the actor_token determines who may redeem the
issued ID-JAG, and policy determines whether issuing it is permitted
at all. Deployments in which a target entity is unwilling to disclose
even an audience-pinned, single-use JWT-SVID to its upstream peer
SHOULD use the self-issued variant of <xref target="self-issued"/>, in which each
entity signs with its own X.509-SVID private key and discloses no
bearer credential to any peer.</t>
      </section>
      <section anchor="sec-attenuation">
        <name>Monotonic Attenuation</name>
        <t>Downstream privilege scopes can only be equal to or narrower than
upstream permissions. The AS enforces this at every hop of the
primary mechanism, so no hop can widen the privileges it inherited.
Two limits remain. Attenuation constrains only what a hop adds, not
the breadth of the root authorization the end-user granted, and for
authorization_details it is only as strong as the narrowing relation
the applicable type supports, see step 5 of <xref target="as-processing"/>. In the
self-issued variant,
attenuation is asserted by the delegating entities and checked only
at redemption time, see <xref target="self-issued-redemption"/>.</t>
      </section>
      <section anchor="sec-replay">
        <name>Replay Prevention</name>
        <t>The AS MUST enforce jti uniqueness for the tokens it issues and for
every subject_token, actor_token, and Delegation Assertion it
accepts, retaining each recorded jti at least until the corresponding
token expires. Self-issued Delegation
Assertions MUST have a short lifespan and SHOULD NOT exceed 60
seconds.</t>
      </section>
      <section anchor="sec-transport">
        <name>Transport and Confidentiality</name>
        <t>ID-JAGs and Delegation Assertions are credentials passed over
inter-agent transports, e.g., HTTP headers, gRPC metadata, or MCP
payloads. They MUST be sent over TLS or an equivalently protected
transport. They MUST NOT be logged or persisted in plaintext by
intermediaries.</t>
      </section>
      <section anchor="sec-workload">
        <name>Workload Identity Compromise</name>
        <t>Client authentication and the actor_token together bind every hop of
the chain to workload identities. A compromised
workload can act within the privileges delegated to it. JWT-SVIDs are
short-lived and rotated by the infrastructure, which limits the
window of a stolen SVID. Compromise of an intermediate workload is
bounded by the monotonic attenuation already applied upstream, but AS
policy SHOULD also cap the total delegation depth, counted from the
act chain as described in <xref target="as-processing"/>, and the privileges
available to each hop.</t>
        <t>Compromise of a delegating entity additionally exposes the
audience-pinned JWT-SVIDs that its downstream peers disclosed to it,
as described in <xref target="sec-actor-transfer"/>. A compromised workload
therefore affects the chain in two directions, and the AS SHOULD
treat a delegation request carrying an actor_token jti it has already
accepted as an indication of compromise.</t>
      </section>
    </section>
    <section anchor="privacy">
      <name>Privacy Considerations</name>
      <t>The act claim of an issued token discloses the full delegation
topology to every party that receives it, namely which workload
identities participated, in which trust domains, and in what order. A
resource server in one trust domain therefore learns the internal
structure of a chain that originated in another. This disclosure is
inherent to the delegation semantics the act claim provides, and it is
bounded by the SPIFFE IDs themselves, which are infrastructure
identifiers rather than user identifiers. Deployments that consider
the topology sensitive SHOULD have their AS truncate the act chain
beyond a configured depth or replace intermediate actors with a
trust-domain-level identifier, at the cost of weaker attribution.</t>
      <t>The subject identifier of the end user crosses every trust domain the
chain passes through, and it is the one element that correlates the
activity of all the workloads in the chain back to a single person.
The end user has no visibility into that propagation. An AS that
issues an ID-JAG for a trust domain other than its own SHOULD apply
its own policy on which subject identifiers may leave the domain, and
deployments SHOULD prefer pairwise identifiers over a global user
identifier so that correlation across unrelated chains is not
possible.</t>
      <t>The actor_token transfer of an intermediate hop additionally discloses
a workload's JWT-SVID to its upstream peer; <xref target="sec-actor-transfer"/>
constrains that disclosure. The self-issued
variant of <xref target="self-issued"/> discloses the X.509-SVID certificate of
every delegating entity in the chain, since each Delegation Assertion
carries its signing certificate; the certificate is public information
within the SPIFFE trust domain but does reveal which workloads exist.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="SPIFFE-ID" target="https://github.com/spiffe/spiffe/blob/03e916d8f920e5dd0b39e625868ba26c2c3ad687/standards/SPIFFE-ID.md">
          <front>
            <title>SPIFFE ID Standards</title>
            <author>
              <organization>SPIFFE Project</organization>
            </author>
            <date year="2026" month="October" day="30"/>
          </front>
        </reference>
        <reference anchor="SPIFFE-JWT-SVID" target="https://github.com/spiffe/spiffe/blob/03e916d8f920e5dd0b39e625868ba26c2c3ad687/standards/JWT-SVID.md">
          <front>
            <title>JWT-SVID Standards</title>
            <author>
              <organization>SPIFFE Project</organization>
            </author>
            <date year="2026" month="October" day="30"/>
          </front>
        </reference>
        <reference anchor="SPIFFE-X509-SVID" target="https://github.com/spiffe/spiffe/blob/03e916d8f920e5dd0b39e625868ba26c2c3ad687/standards/X509-SVID.md">
          <front>
            <title>X.509-SVID Standards</title>
            <author>
              <organization>SPIFFE Project</organization>
            </author>
            <date year="2026" month="October" day="30"/>
          </front>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-assertion-authz-grant">
          <front>
            <title>Identity Assertion JWT Authorization Grant</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="30" month="October" year="2026"/>
            <abstract>
              <t>   This specification provides a mechanism for an application to use an
   identity assertion to obtain an access token for a third-party API by
   coordinating through an identity provider that the downstream
   Resource Authorization Server already trusts for single sign-on
   (SSO), using OAuth 2.0 Token Exchange (RFC 8693) and the JWT Profile
   for OAuth 2.0 Authorization Grants (RFC 7523).  This pattern is
   informally referred to as Cross-App Access (XAA).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-06"/>
        </reference>
        <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="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </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="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 1</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization/>
            </author>
            <author initials="M. B." surname="Jones" fullname="Michael B. Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros" fullname="Breno de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Jayawardena" fullname="Chuck Jayawardena">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </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="I-D.ietf-oauth-spiffe-client-auth">
          <front>
            <title>OAuth SPIFFE Client Authentication</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Scott Rose" initials="S." surname="Rose">
              <organization>NIST</organization>
            </author>
            <author fullname="Stian Thorgersen" initials="S." surname="Thorgersen">
              <organization>IBM</organization>
            </author>
            <author fullname="Nancy Cam-Winget" initials="N." surname="Cam-Winget">
              <organization>Cisco Systems</organization>
            </author>
            <date day="15" month="June" year="2026"/>
            <abstract>
              <t>   This specification profiles the Assertion Framework for OAuth 2.0
   Client Authentication and Authorization Grants [RFC7521], the JWT
   Profile for OAuth 2.0 Client Authentication and Authorization Grants
   [RFC7523], and OAuth 2.0 Attestation-Based Client Authentication
   [I-D.draft-ietf-oauth-attestation-based-client-auth] to enable the
   use of SPIFFE Verifiable Identity Documents (SVIDs) as client
   credentials in OAuth 2.0.  It defines how OAuth clients with SPIFFE
   credentials can authenticate to OAuth authorization servers using
   their JWT-SVIDs, WIT-SVIDs, or X.509-SVIDs without the need for
   client secrets.  This approach enhances security by enabling seamless
   integration between SPIFFE-enabled workloads and OAuth authorization
   servers while eliminating the need to distribute and manage shared
   secrets such as static client secrets.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-spiffe-client-auth-02"/>
        </reference>
      </references>
    </references>
    <?line 1108?>

<section anchor="use-case">
      <name>Complete End-to-End Use Case: Multi-Hop Financial Research Agent Workflow</name>
      <t>To illustrate the practical application of this document, this
appendix provides a step-by-step walkthrough of a multi-hop AI agent
workflow.</t>
      <section anchor="scenario-overview">
        <name>Scenario Overview</name>
        <t>An enterprise user (alice@enterprise.com) wants to generate a Q3
financial summary. The workflow involves the following entities:</t>
        <ol spacing="normal" type="1"><li>
            <t>User / Client App: Initiates the high-level request.</t>
          </li>
          <li>
            <t>Agent A (Research Coordinator,
spiffe://cluster.local/ns/ai/sa/agent-researcher): Receives the
user goal and delegates raw data retrieval.</t>
          </li>
          <li>
            <t>Agent B (Database Proxy Agent,
spiffe://cluster.local/ns/ai/sa/agent-db-proxy): Receives the
delegated task and delegates specific query execution to a
specialized worker.</t>
          </li>
          <li>
            <t>Agent C (Financial DB Worker / MCP Server,
spiffe://partner.local/ns/finance/sa/agent-db-worker): Executes the
underlying database query. Agent C runs in a partner trust domain
with its own Authorization Server, which is what makes the last
hop a cross-domain one.</t>
          </li>
          <li>
            <t>Enterprise Authorization Server (https://auth.enterprise.net):
Issues the initial ID-JAG to Agent A and processes the exchanges
at the first two hops, including identity validation, attenuation,
and actor chain generation.</t>
          </li>
          <li>
            <t>Partner Authorization Server (https://auth.partner.net): Redeems
the ID-JAG issued for Agent C and issues the final Access Token.</t>
          </li>
          <li>
            <t>Financial Database Resource Server (https://db.partner.net):
Serves the report data.</t>
          </li>
        </ol>
      </section>
      <section anchor="protocol-flow">
        <name>Step-by-Step Protocol Flow</name>
        <t>Step 1 (Initial Authentication): Alice authenticates to the
enterprise AS via OpenID Connect <xref target="OpenID.Core"/>. Agent A requests
its initial ID-JAG from that AS with the ID-JAG grant
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, presenting
Alice's ID Token as the identity assertion, requesting the scope
"reports:read mail:send", and setting audience to
https://auth.enterprise.net so that the issued ID-JAG names the AS at
which Agent A will present it in Step 2.</t>
        <t>Step 2 (Hop 1, Agent A to Agent B): Agent A decides to delegate the
data retrieval and obtains from Agent B a JWT-SVID whose aud is
https://auth.enterprise.net. Agent A authenticates to the enterprise
AS and sends the Token Exchange request of <xref target="exchange-request"/> with
subject_token set to its ID-JAG, actor_token set to Agent B's
JWT-SVID, audience set to https://auth.enterprise.net, resource set
to https://db.partner.net, scope set to reports:read, and
authorization_details limiting access to /api/v1/reports. The
enterprise AS validates the request as described in
<xref target="as-processing"/>. The subject_token carries no may_act claim,
because it is the initial ID-JAG obtained in Step 1, so the AS relies
on its delegation policy to decide that Agent A may delegate to
Agent B. It issues the ID-JAG
shown in the first example of <xref target="issued-id-jag"/>, with act recording
Agent A and may_act and client_id naming Agent B. Agent A passes the
ID-JAG to Agent B over the A2A transport.</t>
        <t>Step 3 (Hop 2, Agent B to Agent C): Agent B needs the specialized
worker for the actual query and obtains from Agent C a JWT-SVID whose
aud is https://auth.enterprise.net, the AS that will process this
exchange. It presents the received ID-JAG as the subject_token and
Agent C's JWT-SVID as the actor_token to that AS, with audience set
to https://auth.partner.net, resource set to
https://db.partner.net, scope set to reports:read, and
authorization_details narrowing access to the single Q3 report at
/api/v1/reports/q3.pdf. The enterprise AS verifies that Agent B, the
authenticated client, matches the may_act claim of the subject_token,
applies its delegation policy for the hop from Agent B to Agent C,
confirms that the requested scope is unchanged and that the narrowed
authorization_details are no broader than those of the subject_token,
and issues the ID-JAG shown in the second example of
<xref target="issued-id-jag"/>, whose aud names the partner Authorization Server
because Agent C is in the partner.local trust domain. Agent B passes
it to Agent C.</t>
        <t>Step 4 (Final Redemption at Agent C): Agent C presents the received
ID-JAG to https://auth.partner.net, the AS named by its aud claim, as
the assertion of a JWT bearer request as described in <xref target="last-hop"/>,
requesting scope reports:read. This is the last hop, so Agent C
delegates to no one, sends no actor_token, and discloses no JWT-SVID,
not even its own. The partner AS validates the ID-JAG signature
against the signing key of https://auth.enterprise.net, verifies that
Agent C, the authenticated client, matches the may_act claim of the
assertion, applies the same attenuation and policy checks, and issues
an Access Token whose aud is https://db.partner.net, the resource
server named by the resource claim carried forward since Step 2, and
which carries the complete lineage:</t>
        <sourcecode type="json"><![CDATA[
{
  "iss": "https://auth.partner.net",
  "sub": "user_original_12345",
  "aud": "https://db.partner.net",
  "exp": 1776326950,
  "iat": 1776326890,
  "jti": "urn:uuid:1a2b-3c4d-5e6f-708192a3b4c5",
  "scope": "reports:read",
  "authorization_details": [
    {
      "type": "api_access",
      "actions": ["GET"],
      "locations": ["/api/v1/reports/q3.pdf"]
    }
  ],
  "act": {
    "sub": "spiffe://partner.local/ns/finance/sa/agent-db-worker",
    "act": {
      "sub": "spiffe://cluster.local/ns/ai/sa/agent-db-proxy",
      "act": {
        "sub": "spiffe://cluster.local/ns/ai/sa/agent-researcher"
      }
    }
  }
}
]]></sourcecode>
        <t>Step 5 (Execution): Agent C presents the Access Token to the
Financial Database Resource Server. The Resource Server validates the
audience and reads the act chain, achieving verifiable multi-hop
provenance: User Alice -&gt; Agent-Researcher -&gt; Agent-DB-Proxy -&gt;
Agent-DB-Worker. The chain spans two trust domains, and the Resource
Server can see from the act claim which workloads in which domains
handled the request, without either domain having to expose its
internal authorization decisions to the other.</t>
      </section>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <contact fullname="Aaron Parecki" initials="A." surname="Parecki">
        <organization>Okta</organization>
        <address>
          <email>aaron@parecki.com</email>
        </address>
      </contact>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author thanks Hongru Zhu, Hui Xue, and Suresh Krishnan for
enlightening discussions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9192XLcVpbg+/0KDP1gsSMzKVKbRS9dFCW3VW1ZalFud09H
hQKZAElYSCALQJJiadTfPme991wsKUquqegYPkhkJnDXs6/z+dxl9apK1/lx
kjXpeTcvi+28Trfd5TzLy/wi7Yq6mq8u06Iqqov53buuK7oSnn7qv01O5dvk
vG6S7jJPnmd5BY/dJCdtmzf0zJ9/e5OcwKh1U/yN3/qXJq06ly6XTX41Pdzz
p/M/n/yLW6VdflE3N8dJ22Wu3S7XRdvCw93NBtby/NmbH12xaY6Trtm23dHd
u4/vHrm0ydPj5CxfbRtYi7uum3cXTb3dHCe/5cveYl41dVev6tKVaXVxnOSV
y2DGY/cuv4H3smM3T17iG/D/m/pdXiXP3sOZVBc5fBCWDn/IeufJ2avnP/74
DH45eZ6cXMB5tPD7b7CGsk4zf0LOXeXVFiZKkk+vLUlku1VWXBXZNi2Tp3hn
8MU6LcrjhO7tT0XenS/q5gI+TpvV5XFy2XWb9vjgAB/CT4qrfKEPHeAHB8um
vm7zA3r/ANdSdJfb5TEM+36T0kEfjEEDXNC8yOa/pzhXCQfWdnY2fXfBwy2K
+hOjHNwCBBeX3bp0LqUjgnuBmYuqBQBaJD8XW/iLgflpuskBhPgj2OdxclIW
y3SZwp85nxYscFFmmz+l/MW8qFaLVb12ru3SKnublnUFA93krWvXadO9/eu2
hh0eJ+dp2eZuU+ClwcXwI0nS1k3X5Oet//tmHf50Vd2sYSNXdNUMG/PnT/EP
GCRtLnJzcnJcsJaDdlOcn+f637Kslwd37+WPDx9m35w/PrqbP8iyu8t7j/OH
Rw++efjNMj16uDpa3Uuzh988OqBtpE3WHvj5FuuMZ2Qc5s8BZpMzfZa+1sPF
3+d8evIowOLv+aqjbwhDkqO7Rw/nh3fn9+6GjQGyz8/+/R+2PZ2utzv9+O+8
uf94cPfxP3J3fr7e9v5joV/8fTboiurcAulLQCCY9LRu8vGd1vBAkS2qvIMt
5qtWPpiv6qqCWeD/Jp8fvr3LGGtWziMnp/xcgjMkh4u7gMfwyqZuYAmAunkD
v6RJm3fJ4XBf9K+g/i+L5Cx9V6y3TSofMw34Je3iL6K3/rxInjRpVuY30Ut/
ri+r6IvopRfw0gKeqfI2eutFAfQpL+MvozfhmyxPXuRZXjR1/PKTJq/qwbfR
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
QryvQVhhROu+wHYWBRSJsGmifmWPIV7lE74hC7Zp06mlj7grYq0v50uQ7g02
2mhJkRovQR191efKJOd+GzEdIwiP6udn+aa75BKTQEJLwFwpuGQt4JEsJZbE
IUkMIackJE7Gm6Kxy6hiSzb6h2NRgDE5BObySfszyrIgAKUcmKNnAx2xX5Cq
VkjCKOxLKjXqEQj3vEyvsKCc6D9ZyIoeGA6EUHrDkiJE7KLQCjB8ulH4GJCX
Vb0NdYqQzYtkE4oN7xL80t6i1CAQqxEhrCPVZfwtb+qhop1aFORwa26Qgwvk
F6/rbZlhHkeeayWb98V6u/agS8ANguR5cbFtmNimJZWb+oWuW2uYyXh+adIU
R2v1jfimqUoL3lUcNSAKoTSjRCP9I9C44GYwOvsYZPGdmopftk+1xhJ+wYjp
I/GUeG4rtpijd2+RL2YC2VoUyGdoW+adfSpPRbiKzuWjXAJ6xW4rH4/jXUmz
UD2DYFlNkF6VkwKSvvPKWG2kvpNepL6yOM+5pOlYPlooHatg8fCuFI5sPWti
omKKyNJFT3Rzq1RwstZzvt/9wM1+7wpRTlTm21YFHFKSruuAT4QX3kR46ZGW
NUUib9jl8l07wogIY5ijKCOa9QCmX/vAh+4HuBEh1FYO088thETNlvTlKM1f
lLrBrQXxUkn9kD8FAPNsw9MFDui4BTxQLejYQKBB1ZK/c76VsGpAtTjAVbFZ
ZFw9VW4jGPLbn0eg9SFegcTjxuA3VoWNHTO+WpuU6vJn7exZm1LvWmbCI5Xs
cRixfL9fev6YbTJbJPx1q/F/vVLow1pgTsi9RJH65xEatM8aqumdl5c8AGKM
nYsnTVcm8HBKNDASE6LI0Gb5CdOOnleIRTchUoEpEt0PYR4hBKGi6n8xBEry
Sk/3rloU7TUhi/CFkmwQXrOJIWJk9LYqu4yxrkVywyNh0HE1fx9JTiMGL3Aw
Z+hGJr3Blm2wn8/apRknTCqPs/Xoeo6laDkYiSnRM9tcytayE942KJ2IJRuo
P74EGkk/MMhI29dZ38P3BSVEtAFFwV0wvPfYSG+anUjxeicbTK4u3icnEphr
qj/4YJs+ZFimpUGAXGPIMnYJFOiVzMVYKFmA+FaCpYBrFqvkZfy5znht1St1
3ecumqfgaY91dTsCjUGnBQ2l8J0CTSiKSQUmXcuZFgPeTh0W5isbmxCaQKK4
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
6QAA

-->

</rfc>
