<?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-fletcher-oauth-txn-token-chaining-profile-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Txn-Token Chaining Profile">Transaction Token Authorization Grant Profile for OAuth Identity and Authorization Chaining</title>
    <seriesInfo name="Internet-Draft" value="draft-fletcher-oauth-txn-token-chaining-profile-00"/>
    <author initials="G." surname="Fletcher" fullname="George Fletcher">
      <organization>Practical Identity LLC</organization>
      <address>
        <email>george@practicalidentity.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author initials="S." surname="O'Dell" fullname="Sean O'Dell">
      <organization>CVS Health</organization>
      <address>
        <email>sean.odell@cvshealth.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="10"/>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>transaction tokens</keyword>
    <keyword>identity chaining</keyword>
    <keyword>cross-domain</keyword>
    <keyword>trust domain</keyword>
    <abstract>
      <?line 148?>

<t>This specification defines a profile of the OAuth Identity and
Authorization Chaining Across Domains
<xref target="I-D.ietf-oauth-identity-chaining"/> mechanism that uses a Transaction
Token (Txn-Token) <xref target="I-D.ietf-oauth-transaction-tokens"/> as the subject
token in a Token Exchange <xref target="RFC8693"/> request to obtain a JWT
Authorization Grant for crossing a trust boundary.</t>
      <t>A Txn-Token is scoped to a single trust domain and represents the
full authorization context of an in-progress transaction, regardless
of whether that transaction was initiated by a human user calling an
external API, by an internal system event, or by an automated
workload.  This profile specifies how a service operating within that
trust domain can present its Txn-Token to obtain a JWT Authorization
Grant that carries the necessary context across a trust boundary,
enabling an access token to be issued for a partner service,
without exposing internal trust-domain credentials or token formats
beyond the trust boundary.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <?line 168?>

<t><em>RFC EDITOR: please remove this section before publication</em></t>
      <t>Discussion of this document takes place on the Web Authorization
Protocol Working Group mailing list (oauth@ietf.org), which is
archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/">https://mailarchive.ietf.org/arch/browse/oauth/</eref>.</t>
      <t>Source for this draft and an issue tracker can be found at
<eref target="https://github.com/gffletch/tt_xdomain">https://github.com/gffletch/tt_xdomain</eref>.</t>
    </note>
  </front>
  <middle>
    <?line 179?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Organizations routinely deploy services that, in fulfilling a
transaction for a user or an automated process, must call one or more
partner APIs that lie outside the organization's own trust boundary.
The challenge is to carry the authorization context of the original
transaction — including the identity and authorization of the
Initiating Principal — across that boundary in a way that is
trustworthy to the partner, without leaking internal credentials or
internal token formats.</t>
      <t>Transaction Tokens (Txn-Tokens) <xref target="I-D.ietf-oauth-transaction-tokens"/>
address the first half of this problem.  A Txn-Token is a
short-lived, cryptographically signed JWT scoped to a single trust
domain (for example, an enterprise or a cloud service provider's
internal environment).  It is minted by a Transaction Token Service
(TTS) at the point where a transaction enters the trust domain and
captures, in immutable form, the identity of the initiating
principal, the purpose of the transaction, and relevant request
parameters.  Every workload within the trust domain that handles the
transaction receives and validates this Txn-Token, ensuring a
consistent and authoritative authorization context throughout the
internal call chain.</t>
      <t>A Txn-Token may represent any of several originating contexts:</t>
      <dl>
        <dt>External User Request:</dt>
        <dd>
          <t>A human user or external client calls an API exposed at the
trust domain's perimeter (e.g., a financial services API that
adds a stock to a watch list on behalf of the user, authenticated
via an OAuth 2.0 access token).  The TTS mints a Txn-Token
anchored to the user's identity and the authorized scope of that
external access token.</t>
        </dd>
        <dt>Internal System Event:</dt>
        <dd>
          <t>An internal system triggers processing that has no direct external
human caller (e.g., an SMTP server receiving an inbound message
and initiating storage of that message in the recipient's mailbox).
The TTS mints a Txn-Token representing the system's identity and
the purpose of the transaction.</t>
        </dd>
        <dt>Automated Workload Request:</dt>
        <dd>
          <t>One workload within the trust domain invokes another as part of
an automated pipeline (e.g., a scheduled job triggering a data
aggregation service).  The Txn-Token represents the workload
identity and the pipeline's authorization scope.</t>
        </dd>
      </dl>
      <t>In all three cases, the Txn-Token provides a uniform, internal
representation of the authorization context.  The problem this
specification addresses is what happens when a service within the
trust domain, in the course of executing such a transaction, needs
to call a service in a <em>different</em> trust domain — a partner
organization, a SaaS provider, or a third-party API — in order to
complete the transaction.</t>
      <t>Consider a mail service within an enterprise trust domain.  Upon
receiving an inbound message via SMTP, the mail service is issued a
Txn-Token representing the mail delivery transaction on behalf of the
recipient user.  Before storing the message, the mail service must
call a partner spam-rating API in the spam service's trust domain.
The mail service cannot present its internal Txn-Token to the spam
service — the Txn-Token is scoped to the enterprise trust domain and
carries internal context that must not be disclosed externally.
Instead, the mail service must obtain a credential that is meaningful
to the spam service's authorization server while preserving the
relevant authorization context of the original transaction.</t>
      <t>The OAuth Identity and Authorization Chaining Across Domains
specification <xref target="I-D.ietf-oauth-identity-chaining"/> defines a general
mechanism by which a client in Trust Domain A can obtain a JWT
Authorization Grant from the Authorization Server of Trust Domain A
and present it to the Authorization Server of Trust Domain B to
receive an access token.  The base specification deliberately leaves
the choice of subject token type open, allowing profiles to constrain
and specialize the mechanism for specific deployment scenarios.</t>
      <t>This specification defines the additional details necessary to use a
Txn-Token as the <tt>subject_token</tt> in the Token Exchange request
described in Section 2.3 of <xref target="I-D.ietf-oauth-identity-chaining"/>.
The Txn-Token is consumed by the Authorization Server of Trust Domain
A, which validates it, applies claims transcription and minimization
policy, and issues a JWT Authorization Grant targeted at the
Authorization Server of Trust Domain B.  The JWT Authorization Grant
crosses the trust boundary carrying only the context that Trust
Domain B is authorized to see.  The Txn-Token itself never leaves
Trust Domain A.</t>
      <t>This profile is complementary to the Identity Assertion JWT
Authorization Grant profile
<xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>, which targets
deployments where the target authorization server already trusts a
common IdP for SSO and subject resolution, using an OpenID Connect
ID Token or SAML 2.0 assertion as the subject token.  That profile
is optimized for the human-user, single-sign-on scenario, where the
trust relationship between AS-A and AS-B is mediated through a
shared identity provider.  This profile addresses scenarios where
the trust relationship between AS-A and AS-B is established through a
bilateral or federated Cross-Domain Trust Agreement, and where the
input credential is a Txn-Token representing any authorized
transaction within Trust Domain A.</t>
      <t>A detailed structural comparison of the two profiles appears in
<xref target="relationship-to-related-specifications"/>.</t>
    </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?>

<section anchor="roles">
        <name>Roles</name>
        <t>The following roles are used in this document.  They extend the
OAuth 2.0 roles defined in <xref target="RFC6749"/> as used in
<xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
        <dl>
          <dt>Initiating Principal:</dt>
          <dd>
            <t>The entity whose authorization context is captured in the Txn-Token.
The Initiating Principal may be a human user who made an external
request to Trust Domain A, an internal system acting on its own
behalf, or an automated workload operating within Trust Domain A.
The Initiating Principal is not necessarily the same entity as the
Requesting Workload that performs the cross-domain token exchange.</t>
          </dd>
          <dt>Requesting Workload:</dt>
          <dd>
            <t>A service operating inside Trust Domain A that, in the course of
processing a transaction, needs to call a Protected Resource in
Trust Domain B.  The Requesting Workload holds a Txn-Token
representing the current transaction context and acts as the OAuth
2.0 client in the Token Exchange flow with AS-A.</t>
          </dd>
          <dt>Transaction Token Service (TTS):</dt>
          <dd>
            <t>The service within Trust Domain A that mints and signs Txn-Tokens.
The TTS is the authoritative source of transaction authorization
context within Trust Domain A.  In some deployments the TTS and
AS-A <bcp14>MAY</bcp14> be co-located; in others they are separate services within
the same Trust Domain.</t>
          </dd>
          <dt>Authorization Server of Trust Domain A (AS-A):</dt>
          <dd>
            <t>The OAuth 2.0 Authorization Server within Trust Domain A that
receives the Token Exchange request from the Requesting Workload,
validates the presented Txn-Token, applies claims transcription and
minimization policy, and issues the JWT Authorization Grant targeted
at AS-B.</t>
          </dd>
          <dt>Authorization Server of Trust Domain B (AS-B):</dt>
          <dd>
            <t>The OAuth 2.0 Authorization Server within Trust Domain B that
receives the JWT Authorization Grant from the Requesting Workload
and issues an access token for the Protected Resource.</t>
          </dd>
          <dt>Protected Resource:</dt>
          <dd>
            <t>The resource server in Trust Domain B that the Requesting Workload
needs to call in order to complete the transaction in progress in
Trust Domain A.</t>
          </dd>
        </dl>
      </section>
      <section anchor="terms">
        <name>Terms</name>
        <dl>
          <dt>Transaction:</dt>
          <dd>
            <t>A unit of work initiated by an Initiating Principal that may span
multiple workloads within Trust Domain A and that has a single,
coherent authorization context.  A transaction is identified by the
<tt>txn</tt> claim in the Txn-Token.</t>
          </dd>
          <dt>Trust Domain:</dt>
          <dd>
            <t>A deployment-specific security and administrative boundary within
which services, identifiers, credentials, and policy decisions are
mutually trusted.  This term is used in
<xref target="I-D.ietf-oauth-identity-chaining"/> without a formal definition;
this profile formalizes it.  Txn-Tokens are scoped to a single
Trust Domain.  In this specification, Trust Domain A is the Trust
Domain in which the transaction originates and in which the
Requesting Workload operates.  Trust Domain B is the Trust Domain
in which the Protected Resource and AS-B operate.</t>
          </dd>
          <dt>Cross-Domain Trust Agreement:</dt>
          <dd>
            <t>A bilateral or federated configuration through which AS-A and AS-B
establish mutual trust, permitting AS-A to issue JWT Authorization
Grants that AS-B will accept, and defining the subject identifier
mappings, permitted claims, and authorization policy that apply to
cross-domain requests.  The mechanism for establishing this trust
is out of scope for this specification, but <bcp14>MUST</bcp14> be established
prior to any cross-domain token exchange under this profile.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <section anchor="txn-token-in-domain">
        <name>Transaction Token Context Within a Trust Domain</name>
        <t>A transaction enters Trust Domain A at its perimeter.  The
initiating event may be:</t>
        <t>(a) <strong>An inbound API call from an external client</strong>, in which case
  the external client presents an OAuth 2.0 access token or similar
  credential at the trust domain's API gateway;</t>
        <t>(b) <strong>An internal system event</strong>, such as an SMTP server receiving
  an inbound message, where the triggering input arrives from outside
  the enterprise boundary; or</t>
        <t>(c) <strong>An automated workload trigger</strong>, with no direct external caller,
  such as a scheduled job or an event-driven pipeline invocation.</t>
        <t>In all cases, the workload that first handles the transaction requests
a Txn-Token from the TTS, presenting whatever inbound credential or
context is available.  The TTS validates the inbound context and
mints a Txn-Token that captures the Initiating Principal's identity
(which may be a user identity, a system identity, or a workload
identity), the purpose of the transaction (<tt>scope</tt>), and relevant
request parameters (<tt>rctx</tt>).  The Txn-Token is propagated to all
downstream workloads within Trust Domain A that participate in
processing the transaction.</t>
      </section>
      <section anchor="cross-domain-invocation">
        <name>Cross-Domain Invocation</name>
        <t>When a Requesting Workload within Trust Domain A determines that it
needs to call a Protected Resource in Trust Domain B in order to
complete the transaction, it follows the flow defined in this profile.
The complete end-to-end sequence is illustrated in <xref target="fig-flow"/>.</t>
        <figure anchor="fig-flow">
          <name>Transaction Token Chaining Flow</name>
          <artwork type="ascii-art"><![CDATA[
+----------+  +----------+  +---------+  +---------+  +---------+  +---------+
|Initiating|  |Requesting|  |   TTS   |  |  AS-A   |  |  AS-B   |  |Protected|
| Request  |  | Workload |  |(Trust A)|  |(Trust A)|  |(Trust B)|  |Resource |
|(Perimeter|  |(Trust A) |  |         |  |         |  |         |  |(Trust B)|
| Trust A) |  |          |  |         |  |         |  |         |  |         |
+-----+----+  +-----+----+  +----+----+  +----+----+  +----+----+  +----+----+
      |             |            |            |            |            |
      | (1) Inbound |            |            |            |            |
      | Request     |            |            |            |            |
      | (any origin)|            |            |            |            |
      |------------>|            |            |            |            |
      |             |            |            |            |            |
      |             | (2) Request|            |            |            |
      |             | Txn-Token  |            |            |            |
      |             |----------->|            |            |            |
      |             |            |            |            |            |
      |             | (3) Txn-Token           |            |            |
      |             |< - - - - - |            |            |            |
      |             |            |            |            |            |
      |             | (4) Discover AS-B       |            |            |
      |             | (RFC9728)  |            |            |            |
      |             |......................................|            |
      |             |            |            |            |            |
      |             | (5) Token Exchange      |            |            |
      |             | [RFC8693]  |            |            |            |
      |             | subject_token=Txn-Token |            |            |
      |             | audience=AS-B issuer URL|            |            |
      |             |------------------------>|            |            |
      |             |            |            |            |            |
      |             | (6) JWT Authorization   |            |            |
      |             | Grant      |            |            |            |
      |             |< - - - - - - - - - - - -|            |            |
      |             |            |            |            |            |
      |             | (7) Present JWT Grant   |            |            |
      |             | [RFC7523]  |            |            |            |
      |             |------------------------------------->|            |
      |             |            |            |            |            |
      |             | (8) Access Token        |            |            |
      |             |< - - - - - - - - - - - - - - - - - - |            |
      |             |            |            |            |            |
      |             | (9) Call Protected Resource          |            |
      |             |-------------------------------------------------->|
      |             |            |            |            |            |
]]></artwork>
        </figure>
        <t>The steps are as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>An inbound request arrives at the Requesting Workload's perimeter.</t>
          </li>
          <li>
            <t>The Requesting Workload (or the first workload within Trust Domain
A that receives the transaction) requests a Txn-Token from the TTS.</t>
          </li>
          <li>
            <t>The TTS issues a Txn-Token to the Requesting Workload.  The
Txn-Token is scoped to Trust Domain A and <bcp14>MUST NOT</bcp14> be presented
to any entity outside Trust Domain A.</t>
          </li>
          <li>
            <t>The Requesting Workload discovers AS-B using the mechanisms defined
in Section 2.2 of <xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
          </li>
          <li>
            <t>The Requesting Workload presents the Txn-Token as the <tt>subject_token</tt>
in an OAuth 2.0 Token Exchange <xref target="RFC8693"/> request to AS-A,
identifying AS-B in the <tt>audience</tt> parameter and optionally
specifying the target Protected Resource in the <tt>resource</tt>
parameter.</t>
          </li>
          <li>
            <t>AS-A validates the Txn-Token, applies subject
identifier mapping (<xref target="subject-identifier-mapping"/>) and claims
minimization (<xref target="claims-transcription"/>), and issues a signed JWT
Authorization Grant.  The Txn-Token is consumed entirely within
Trust Domain A and is not forwarded.</t>
          </li>
          <li>
            <t>The Requesting Workload presents the JWT Authorization Grant to
AS-B using the JWT Profile for OAuth 2.0 Authorization Grants
<xref target="RFC7523"/>.</t>
          </li>
          <li>
            <t>AS-B validates the JWT Authorization Grant and issues an access
token for the Protected Resource.</t>
          </li>
          <li>
            <t>The Requesting Workload calls the Protected Resource with the
access token, completing the cross-domain portion of the
transaction.</t>
          </li>
        </ol>
      </section>
      <section anchor="chaining-across-multiple-trust-domains">
        <name>Chaining Across Multiple Trust Domains</name>
        <t>Trust Domain A and Trust Domain B are roles when crossing from one Trust Domain to another, not fixed positions in a deployment. The profile in this specification <bcp14>MAY</bcp14> be applied recursively, allowing a single transaction to traverse any number of Trust Domains.</t>
        <t>When the Requesting Workload calls the Protected Resource in Trust Domain B (Step 9 of Figure 1), that call is an ordinary inbound request at Trust Domain B's perimeter (<xref target="txn-token-in-domain"/>). The receiving workload <bcp14>MAY</bcp14> exchange the inbound access token for a Txn-Token issued by Trust Domain B's own TTS, following <xref target="I-D.ietf-oauth-transaction-tokens"/>. If a workload in Trust Domain B's Internal Call Chain subsequently needs to call a Protected Resource in Trust Domain C, it applies this profile unchanged, with Trust Domain B now in the role of Trust Domain A and Trust Domain C in the role of Trust Domain B.</t>
        <t>Each time a Trust Domain boundary is crossed, it is self-contained and is governed solely by the Cross-Domain Trust Agreement between the two Trust Domains directly involved. The originating Authorization Server applies its own claims transcription and minimization policy <xref target="claims-transcription"/>, and no Txn-Token leaves its Trust Domain. Whether Authorization Server B propagates the txn claim it receives (<xref target="mandatory-transcription"/>) into the access token it issues, and whether Trust Domain B's TTS includes it in the Txn-Token it mints, are deployment decisions.  Deployments requiring end-to-end correlation <bcp14>SHOULD</bcp14> specify in the applicable Cross-Domain Trust Agreements how the originating transaction identifier and any other context are carried forward at each crossing. Deployments seeking to limit cross-domain linkability <bcp14>SHOULD</bcp14> instead generate independent transaction identifiers in each Trust Domain (see <xref target="privacy-considerations"/>).</t>
      </section>
    </section>
    <section anchor="transaction-token-as-subject-token">
      <name>Transaction Token as Subject Token</name>
      <section anchor="subject-token-requirements">
        <name>Subject Token Requirements</name>
        <t>When this profile is used, the <tt>subject_token</tt> in the Token Exchange
request (Step 5 of <xref target="fig-flow"/>) <bcp14>MUST</bcp14> be a Txn-Token as defined in
<xref target="I-D.ietf-oauth-transaction-tokens"/>.</t>
        <t>The <tt>subject_token_type</tt> parameter <bcp14>MUST</bcp14> be:</t>
        <sourcecode type="abnf"><![CDATA[
subject_token_type =
    "urn:ietf:params:oauth:token-type:txn_token"
]]></sourcecode>
        <t>This value is defined in <xref target="I-D.ietf-oauth-transaction-tokens"/>.</t>
        <t>The Txn-Token presented as the <tt>subject_token</tt> <bcp14>MUST</bcp14> satisfy all of
the validity requirements specified in
<xref target="I-D.ietf-oauth-transaction-tokens"/>, including:</t>
        <ul spacing="normal">
          <li>
            <t>The Txn-Token <bcp14>MUST NOT</bcp14> be expired.</t>
          </li>
          <li>
            <t>The Txn-Token <bcp14>MUST</bcp14> be signed and verifiable by AS-A using keys
published by the TTS.</t>
          </li>
          <li>
            <t>The Txn-Token's <tt>aud</tt> claim <bcp14>MUST</bcp14> identify AS-A (or a value that
AS-A accepts as a valid audience for presented subject tokens).</t>
          </li>
        </ul>
        <t>A Txn-Token failing any of the above checks <bcp14>MUST</bcp14> be rejected per
Section 2.2.2 of <xref target="RFC8693"/>.</t>
      </section>
      <section anchor="txn-token-initiating-principal-context">
        <name>Txn-Token Initiating Principal Context</name>
        <t>The Txn-Token's <tt>sub</tt> claim identifies the Initiating Principal of
the transaction.  The Initiating Principal type is not constrained
by this profile; a Txn-Token may represent any originating context
defined by the Transaction Token specification
<xref target="I-D.ietf-oauth-transaction-tokens"/>.  The following are common
examples:</t>
        <dl>
          <dt>Human User Identity:</dt>
          <dd>
            <t>The <tt>sub</tt> claim identifies a human user whose identity was
established when the transaction entered Trust Domain A via an
OAuth 2.0-protected API call.  In this case the <tt>sub</tt> value is
typically derived from the user's identity in the external access
token presented at the API gateway, and the Txn-Token's <tt>rctx</tt>
claim captures relevant attributes of the external request (such
as the OAuth client identifier and originating IP address).</t>
          </dd>
          <dt>System Identity:</dt>
          <dd>
            <t>The <tt>sub</tt> claim identifies an internal system component (such as
an SMTP server or a messaging gateway) acting in its own right,
with no external user as the Initiating Principal.  The <tt>scope</tt>
claim is particularly significant in this case, as it conveys the
reason for the transaction in the absence of a user-facing
authorization context.</t>
          </dd>
          <dt>Workload Identity:</dt>
          <dd>
            <t>The <tt>sub</tt> claim identifies an automated workload (such as a
scheduled job or pipeline service).  Workload identifiers <bcp14>MAY</bcp14> take
the form of SPIFFE URIs <xref target="I-D.ietf-wimse-arch"/> when
WIMSE-compatible infrastructure is in use within Trust Domain A.</t>
          </dd>
        </dl>
        <t>The above examples are illustrative; other Initiating Principal types
are possible.  The claims transcription rules in
<xref target="claims-transcription"/> and the subject identifier mapping rules in
<xref target="subject-identifier-mapping"/> apply regardless of which Initiating
Principal type the Txn-Token represents.  AS-A <bcp14>MUST</bcp14> map the <tt>sub</tt>
claim to an identifier appropriate for Trust Domain B, applying the
mapping logic defined in the Cross-Domain Trust Agreement for the
Initiating Principal type in question.</t>
      </section>
      <section anchor="token-exchange-request-parameters">
        <name>Token Exchange Request Parameters</name>
        <t>In addition to the subject token requirements in
<xref target="subject-token-requirements"/>, the Token Exchange request
(<xref target="RFC8693"/> Section 2.1) <bcp14>MUST</bcp14> include the following parameters when
this profile is in use.</t>
        <section anchor="identifying-the-target-authorization-server-and-resource">
          <name>Identifying the Target Authorization Server and Resource</name>
          <t>This profile uses the <tt>audience</tt> and <tt>resource</tt> parameters following
the convention in <xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/>
Section 4.3.  The two parameters serve distinct purposes and <bcp14>MUST NOT</bcp14>
be conflated.</t>
          <dl>
            <dt><tt>audience</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The <tt>issuer</tt> identifier of AS-B (<xref target="RFC8414"/> Section 2).
Becomes the <tt>aud</tt> claim of the JWT Authorization Grant.
Implementations <bcp14>MUST</bcp14> use this parameter to identify AS-B and <bcp14>MUST
NOT</bcp14> pass the AS-B issuer URL as <tt>resource</tt>.</t>
            </dd>
            <dt><tt>resource</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>.  A URI identifying the Protected Resource (resource
server) in Trust Domain B, as defined in <xref target="RFC8707"/> Section 2.
When present, AS-A <bcp14>SHOULD</bcp14> propagate this value into the <tt>resource</tt>
claim of the JWT Authorization Grant.</t>
            </dd>
          </dl>
        </section>
        <section anchor="remaining-parameters">
          <name>Remaining Parameters</name>
          <dl>
            <dt><tt>grant_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The value <bcp14>MUST</bcp14> be
<tt>urn:ietf:params:oauth:grant-type:token-exchange</tt>.</t>
            </dd>
            <dt><tt>subject_token</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The Txn-Token as described in
<xref target="subject-token-requirements"/>.</t>
            </dd>
            <dt><tt>subject_token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The value <bcp14>MUST</bcp14> be
<tt>urn:ietf:params:oauth:token-type:txn_token</tt>.</t>
            </dd>
            <dt><tt>requested_token_type</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>.  When present, the value <bcp14>MUST</bcp14> be
<tt>urn:ietf:params:oauth:token-type:jwt</tt>.  If absent, AS-A <bcp14>MUST</bcp14>
still produce a JWT Authorization Grant conforming to this profile
when the other parameters conform to this profile.</t>
            </dd>
            <dt><tt>scope</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>.  Space-separated list of scopes requested for the JWT
Authorization Grant.  AS-A <bcp14>MUST NOT</bcp14> issue a grant with scope
exceeding the <tt>scope</tt> claim of the presented Txn-Token (see
<xref target="claims-transcription"/>).</t>
            </dd>
          </dl>
          <t>The <tt>actor_token</tt> and <tt>actor_token_type</tt> parameters defined in
<xref target="RFC8693"/> are not used in this profile.</t>
        </section>
        <section anchor="example-token-exchange-request">
          <name>Example Token Exchange Request</name>
          <t>The following is a non-normative example conforming to this profile.
A mail service workload in an enterprise (Trust Domain A) has
received an SMTP message and holds a Txn-Token representing a
<tt>mail-delivery</tt> transaction.  The mail service needs to call a
spam-rating API operated by a partner spam service whose
Authorization Server is <tt>https://as.spamsvc.example</tt> and whose
spam-rating API is <tt>https://api.spamsvc.example/spam-rating</tt>.</t>
          <sourcecode type="http-message"><![CDATA[
POST /token HTTP/1.1
Host: as.enterprise.example
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer <mail-service-client-credential>

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&subject_token=<txn-token>
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Atxn_token
&audience=https%3A%2F%2Fas.spamsvc.example
&resource=https%3A%2F%2Fapi.spamsvc.example%2Fspam-rating
&scope=spam.rating.read
]]></sourcecode>
        </section>
        <section anchor="token-exchange-response">
          <name>Token Exchange Response</name>
          <t>If the request is valid and the Requesting Workload is authorized to
receive a JWT Authorization Grant for the indicated audience, AS-A
returns a Token Exchange response as defined in Section 2.2 of
<xref target="RFC8693"/>.</t>
          <dl>
            <dt><tt>access_token</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The JWT Authorization Grant.  (Token Exchange uses the
<tt>access_token</tt> field for the returned token for historical
compatibility reasons; this is not an OAuth access token.)</t>
            </dd>
            <dt><tt>issued_token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The value <bcp14>MUST</bcp14> be
<tt>urn:ietf:params:oauth:token-type:jwt</tt>.</t>
            </dd>
            <dt><tt>token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The value <bcp14>MUST</bcp14> be <tt>N_A</tt>.</t>
            </dd>
            <dt><tt>expires_in</tt>:</dt>
            <dd>
              <t><bcp14>RECOMMENDED</bcp14>.  The lifetime of the JWT Authorization Grant in
seconds.  This value <bcp14>SHOULD</bcp14> reflect the <tt>exp</tt> claim of the
returned grant JWT and <bcp14>SHOULD</bcp14> be short (see
<xref target="jwt-claims-requirements"/>).</t>
            </dd>
            <dt><tt>refresh_token</tt>:</dt>
            <dd>
              <t>This parameter <bcp14>SHOULD NOT</bcp14> be present.</t>
            </dd>
          </dl>
          <t>On error, AS-A returns an error response as defined in Section 5.2
of <xref target="RFC6749"/> and Section 2.2.2 of <xref target="RFC8693"/>.</t>
          <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token": "eyJ...<JWT Authorization Grant>...",
  "issued_token_type": "urn:ietf:params:oauth:token-type:jwt",
  "token_type": "N_A",
  "expires_in": 60
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="processing-rules">
      <name>Processing Rules</name>
      <section anchor="as-a-processing-rules">
        <name>AS-A Processing Rules</name>
        <t>Upon receipt of a Token Exchange request conforming to this profile,
AS-A <bcp14>MUST</bcp14> perform the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Authenticate the client (Requesting Workload) using the mechanisms
specified in Section 5.1 of <xref target="I-D.ietf-oauth-identity-chaining"/>
and Section 2.5 of <xref target="RFC9700"/>.</t>
          </li>
          <li>
            <t>Validate the Txn-Token signature using the public keys of the TTS
that issued it.  AS-A <bcp14>MUST</bcp14> be configured with the TTS's <tt>jwks_uri</tt>
or equivalent key material.</t>
          </li>
          <li>
            <t>Validate that the Txn-Token is not expired.</t>
          </li>
          <li>
            <t>Validate that the <tt>aud</tt> claim of the Txn-Token identifies AS-A
or a value AS-A is configured to accept as a valid audience for
presented subject tokens.</t>
          </li>
          <li>
            <t>Verify that the <tt>audience</tt> value identifies a known AS-B for which
a Cross-Domain Trust Agreement has been established.  AS-A <bcp14>MUST
NOT</bcp14> accept a resource server URI in <tt>audience</tt> in place of an
AS-B issuer identifier.  If the audience is unknown or disallowed
by policy, AS-A <bcp14>MUST</bcp14> return an error per Section 2.2.2 of
<xref target="RFC8693"/>.</t>
          </li>
          <li>
            <t>If the <tt>resource</tt> parameter is present, validate that it
identifies a Protected Resource within Trust Domain B consistent
with the indicated AS-B.  AS-A <bcp14>SHOULD</bcp14> propagate the <tt>resource</tt>
value into the <tt>resource</tt> claim of the JWT Authorization Grant.</t>
          </li>
          <li>
            <t>Validate that the requested <tt>scope</tt>, if present, does not exceed
the <tt>scope</tt> claim of the Txn-Token.  AS-A <bcp14>MUST NOT</bcp14> issue a JWT
Authorization Grant with broader scope than the Txn-Token asserts.</t>
          </li>
          <li>
            <t>Determine the Initiating Principal type from the Txn-Token and
apply the appropriate subject identifier mapping as described in
<xref target="subject-identifier-mapping"/>.  If no mapping can be determined,
AS-A <bcp14>MUST</bcp14> return an error.</t>
          </li>
          <li>
            <t>Apply claims transcription and minimization policy as described in
<xref target="claims-transcription"/>.</t>
          </li>
          <li>
            <t>Construct and sign the JWT Authorization Grant as described in
<xref target="jwt-authorization-grant"/>, setting the <tt>aud</tt> claim to the AS-B
issuer identifier resolved in step 5.</t>
          </li>
          <li>
            <t>Return the JWT Authorization Grant in the Token Exchange response
as described in <xref target="token-exchange-request-parameters"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="as-b-processing-rules">
        <name>AS-B Processing Rules</name>
        <t>Upon receipt of a JWT Bearer grant request (<xref target="RFC7523"/>) conforming
to this profile, AS-B <bcp14>MUST</bcp14> perform the following steps in addition
to the processing rules specified in Section 2.4.2 of
<xref target="I-D.ietf-oauth-identity-chaining"/>:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate the <tt>typ</tt> header of the JWT Authorization Grant.  The
value <bcp14>MUST</bcp14> be <tt>txn-chain+jwt</tt> as defined in <xref target="jwt-authorization-grant"/>.</t>
          </li>
          <li>
            <t>Validate that the <tt>aud</tt> claim matches AS-B's own issuer identifier.</t>
          </li>
          <li>
            <t>Validate that the <tt>iss</tt> claim identifies an AS-A with which a
Cross-Domain Trust Agreement has been established, and validate
the JWT signature using the public keys advertised by that AS-A.</t>
          </li>
          <li>
            <t>Validate that the JWT is not expired and that the <tt>jti</tt> value has
not been previously presented (single-use enforcement).</t>
          </li>
          <li>
            <t>Resolve the subject from the <tt>sub</tt> claim according to the mapping
rules defined in the Cross-Domain Trust Agreement.  AS-B <bcp14>SHOULD</bcp14>
evaluate the <tt>sub</tt> claim against its configured cross-domain
access policy; supplementary identifiers in <tt>txn_claims</tt> (e.g.,
<tt>email</tt>) <bcp14>MAY</bcp14> also be used for subject resolution where the
Cross-Domain Trust Agreement permits.  If subject resolution fails
and the Cross-Domain Trust Agreement does not permit Just-In-Time
provisioning, AS-B <bcp14>MUST</bcp14> return an error.</t>
          </li>
          <li>
            <t>If present, evaluate the <tt>txn_claims</tt> claim to apply
context-aware authorization policy (see <xref target="claims-transcription"/>),
for example verifying that the <tt>scope</tt> value is consistent with
the requested scope.</t>
          </li>
          <li>
            <t>Issue an access token constrained by the <tt>scope</tt> and, if present,
the <tt>resource</tt> claim in the JWT Authorization Grant.  AS-B <bcp14>SHOULD
NOT</bcp14> issue refresh tokens, consistent with Section 5.4 of
<xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="jwt-authorization-grant">
      <name>JWT Authorization Grant</name>
      <section anchor="grant-format">
        <name>Grant Format</name>
        <t>The JWT Authorization Grant produced by AS-A in response to a Token
Exchange request conforming to this profile is a JWT <xref target="RFC7519"/>
that <bcp14>MUST</bcp14> conform to the JWT Authorization Grant requirements
specified in Section 2.3.3 of <xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
        <section anchor="jwt-header">
          <name>JWT Header</name>
          <dl>
            <dt>typ:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The value <bcp14>MUST</bcp14> be <tt>txn-chain+jwt</tt> (<xref target="RFC8725"/>).</t>
            </dd>
            <dt>alg:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  An asymmetric signing algorithm.  Deployments <bcp14>SHOULD</bcp14>
use PS256, PS384, PS512, ES256, ES384, or ES512 as defined in
<xref target="RFC7519"/>.  The <tt>none</tt> algorithm and symmetric algorithms are
prohibited.</t>
            </dd>
            <dt>kid:</dt>
            <dd>
              <t><bcp14>RECOMMENDED</bcp14>.  The key identifier corresponding to the signing key.</t>
            </dd>
          </dl>
        </section>
        <section anchor="jwt-claims-requirements">
          <name>JWT Claims Requirements</name>
          <t>The following claims <bcp14>MUST</bcp14> be present:</t>
          <dl>
            <dt>iss:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The Issuer identifier of AS-A (<xref target="RFC8414"/> Section 2).</t>
            </dd>
            <dt>sub:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The Initiating Principal's identity as mapped by AS-A
according to <xref target="subject-identifier-mapping"/>.  The value <bcp14>MUST</bcp14> be
meaningful to AS-B within the context of the Cross-Domain Trust
Agreement.</t>
            </dd>
            <dt>aud:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  The Issuer URL of AS-B, derived from the <tt>audience</tt>
parameter of the Token Exchange request.  <bcp14>MUST</bcp14> be a single value.</t>
            </dd>
            <dt>iat:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  Issuance time (<xref target="RFC7519"/> Section 4.1.6).</t>
            </dd>
            <dt>exp:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  Expiration time (<xref target="RFC7519"/> Section 4.1.4).  The
lifetime <bcp14>SHOULD</bcp14> be short.  Deployments <bcp14>SHOULD</bcp14> use a value no
greater than 300 seconds and <bcp14>SHOULD</bcp14> prefer values of 60 seconds or
less, consistent with the short-lived nature of Txn-Tokens.</t>
            </dd>
            <dt>jti:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>.  A unique identifier for this JWT (<xref target="RFC7519"/> Section
4.1.7).  AS-B <bcp14>MUST</bcp14> enforce single-use semantics by tracking
presented <tt>jti</tt> values within the grant's validity window.</t>
            </dd>
            <dt>scope:</dt>
            <dd>
              <t><bcp14>RECOMMENDED</bcp14>.  The authorized scope (<xref target="RFC6749"/> Section 3.3).
<bcp14>MUST NOT</bcp14> be wider than the <tt>scope</tt> claim of the source Txn-Token.</t>
            </dd>
          </dl>
          <t>The following claims <bcp14>SHOULD</bcp14> be present:</t>
          <dl>
            <dt>txn:</dt>
            <dd>
              <t>The unique transaction identifier from the originating Txn-Token
(<xref target="I-D.ietf-oauth-transaction-tokens"/>).  AS-B <bcp14>SHOULD</bcp14> record this
value in its audit logs.</t>
            </dd>
          </dl>
          <t>The following claims <bcp14>MAY</bcp14> be present:</t>
          <dl>
            <dt>resource:</dt>
            <dd>
              <t>A URI or array of URIs identifying the Protected Resource(s) in
Trust Domain B (<xref target="RFC8707"/> Section 2), derived from the <tt>resource</tt>
parameter of the Token Exchange request.  AS-B <bcp14>SHOULD</bcp14> use this to
issue a resource-bound access token.</t>
            </dd>
            <dt>txn_claims:</dt>
            <dd>
              <t>A JSON object containing a curated subset of Txn-Token claims,
selected and minimized per the policy in <xref target="claims-transcription"/>.
AS-B <bcp14>MAY</bcp14> use these claims for context-aware authorization decisions.</t>
            </dd>
            <dt>cnf:</dt>
            <dd>
              <t>If sender-constraining is in use (see <xref target="sender-constraining"/>),
the confirmation method claim conveying the Requesting Workload's
public key, as defined in <xref target="RFC7800"/>.</t>
            </dd>
          </dl>
        </section>
        <section anchor="example-jwt-authorization-grant">
          <name>Example JWT Authorization Grant</name>
          <t>The following is a non-normative example corresponding to the mail
service scenario in <xref target="token-exchange-request-parameters"/>.  The
Initiating Principal is the mail service's system identity
(<tt>mail-gateway@enterprise.example</tt>) and the Txn-Token's <tt>rctx</tt>
carries the SMTP envelope sender.  The <tt>scope</tt> and a minimized <tt>rctx</tt>
are transcribed into <tt>txn_claims</tt>.</t>
          <t>Header:</t>
          <sourcecode type="json"><![CDATA[
{
  "typ": "txn-chain+jwt",
  "alg": "ES256",
  "kid": "as-enterprise-2026-01"
}
]]></sourcecode>
          <t>Claims:</t>
          <sourcecode type="json"><![CDATA[
{
  "iss": "https://as.enterprise.example",
  "sub": "mail-gateway@enterprise.example",
  "aud": "https://as.spamsvc.example",
  "iat": 1746700000,
  "exp": 1746700060,
  "jti": "8f14e45f-ceee-467a-a19e-ab8f290a1f30",
  "scope": "spam.rating.read",
  "resource": "https://api.spamsvc.example/spam-rating",
  "txn": "a9b2c3d4-e5f6-7890-abcd-ef1234567890",
  "txn_claims": {
    "scope": "mail-delivery",
    "rctx": {
      "smtp_from": "sender@external.example"
    }
  }
}
]]></sourcecode>
          <t>The <tt>aud</tt> claim (<tt>https://as.spamsvc.example</tt>) identifies the
authorization server of Trust Domain B.  The <tt>resource</tt> claim
(<tt>https://api.spamsvc.example/spam-rating</tt>) identifies the specific
API endpoint.  These are distinct values serving distinct purposes.</t>
        </section>
      </section>
    </section>
    <section anchor="claims-transcription">
      <name>Claims Transcription</name>
      <t>This profile constrains and extends the claims transcription rules of
Section 2.5 of <xref target="I-D.ietf-oauth-identity-chaining"/> as follows.</t>
      <section anchor="mandatory-transcription">
        <name>Mandatory Transcriptions</name>
        <t>AS-A <bcp14>MUST</bcp14> derive the <tt>sub</tt> claim of the JWT Authorization Grant from
the <tt>sub</tt> claim of the Txn-Token, applying the subject identifier
mapping defined in <xref target="subject-identifier-mapping"/>.</t>
        <t>AS-A <bcp14>MUST</bcp14> include the <tt>txn</tt> claim from the Txn-Token as the <tt>txn</tt>
claim in the JWT Authorization Grant, preserving the transaction
correlation identifier across the domain boundary.</t>
      </section>
      <section anchor="constrained-scope-transcription">
        <name>Constrained Scope Transcription</name>
        <t>The scope in the JWT Authorization Grant <bcp14>MUST</bcp14> be the intersection of
the Txn-Token's <tt>scope</tt> claim and the <tt>scope</tt> parameter of the Token
Exchange request (if present).  AS-A <bcp14>MUST NOT</bcp14> expand scope beyond the
Txn-Token's scope under any circumstances.</t>
      </section>
      <section anchor="subject-identifier-mapping">
        <name>Subject Identifier Mapping</name>
        <t>The <tt>sub</tt> claim of the Txn-Token identifies the Initiating Principal
within Trust Domain A's namespace.  AS-A <bcp14>MUST</bcp14> translate this
identifier to a form that is both meaningful and authorized for use
in Trust Domain B, according to the mapping rules defined in the
Cross-Domain Trust Agreement.  The Cross-Domain Trust Agreement <bcp14>MUST</bcp14>
define mapping rules for every Initiating Principal type that may
appear in Txn-Tokens exchanged under this profile.  If no mapping
can be determined for the Initiating Principal presented, AS-A <bcp14>MUST</bcp14>
deny the Token Exchange request.</t>
      </section>
      <section anchor="claims-minimization">
        <name>Claims Minimization</name>
        <t>Txn-Tokens <bcp14>MUST NOT</bcp14> be forwarded across trust boundaries.
The JWT Authorization Grant is the only artifact that crosses the
boundary, and AS-A <bcp14>MUST</bcp14> apply strict claims minimization.</t>
        <t>The optional <tt>txn_claims</tt> object in the JWT Authorization Grant <bcp14>MAY</bcp14>
carry a curated subset of Txn-Token claims that are relevant to
AS-B's authorization policy.  AS-A <bcp14>MUST</bcp14> apply the following
minimization rules:</t>
        <dl>
          <dt>Scope Claim (<tt>scope</tt>):</dt>
          <dd>
            <t><bcp14>SHOULD</bcp14> be included when it is meaningful to AS-B's authorization
policy (e.g., to enable the Protected Resource to apply different
handling based on transaction type).</t>
          </dd>
          <dt>Requester Context (<tt>rctx</tt>):</dt>
          <dd>
            <t><bcp14>MAY</bcp14> be included in a minimized form.  Information relevant to the
cross-domain request (e.g., the originating client IP address for
a user-initiated transaction, or the SMTP envelope sender address
for a mail delivery transaction) <bcp14>MAY</bcp14> be included.  Internal
network addresses, intermediate workload identifiers, and
internal infrastructure topology details <bcp14>MUST</bcp14> be omitted.</t>
          </dd>
          <dt>Internal Call Chain:</dt>
          <dd>
            <t>Claims that record intermediate workloads or the internal call
chain within Trust Domain A <bcp14>MUST NOT</bcp14> be included in <tt>txn_claims</tt>.</t>
          </dd>
          <dt>Supplementary Identity Claims:</dt>
          <dd>
            <t>For human user Initiating Principals, claims such as <tt>email</tt> <bcp14>MAY</bcp14>
be included in <tt>txn_claims</tt> if the Cross-Domain Trust Agreement
explicitly permits their disclosure and AS-B requires them for
subject resolution.</t>
          </dd>
        </dl>
        <t>The Cross-Domain Trust Agreement <bcp14>SHOULD</bcp14> define the set of claims
permitted to appear in <tt>txn_claims</tt> and their expected semantics.</t>
      </section>
    </section>
    <section anchor="authorization-server-metadata">
      <name>Authorization Server Metadata</name>
      <t>This profile adds to the Authorization Server Metadata framework
defined in <xref target="RFC8414"/> and Section 3 of
<xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
      <t>An Authorization Server that supports this profile <bcp14>MUST</bcp14> include the
value <tt>urn:ietf:params:oauth:token-type:txn_token</tt> in its
<tt>identity_chaining_requested_token_types_supported</tt> metadata
parameter.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>The Requesting Workload <bcp14>MUST</bcp14> authenticate to AS-A when performing
the Token Exchange request.  The use of asymmetric key-based client
authentication (e.g., a JWT client assertion per <xref target="RFC7523"/>) is
<bcp14>RECOMMENDED</bcp14>.  Static shared secrets <bcp14>SHOULD NOT</bcp14> be used.  AS-A <bcp14>SHOULD</bcp14>
follow the client authentication guidance in Section 2.5 of
<xref target="RFC9700"/>.</t>
      </section>
      <section anchor="sender-constraining">
        <name>Sender Constraining Tokens</name>
        <t>AS-B <bcp14>SHOULD</bcp14> issue sender-constrained access tokens.  Both DPoP
(OAuth 2.0 Demonstrating Proof of Possession) and Mutual-TLS
(<xref target="RFC9700"/> Section 2.3) are <bcp14>RECOMMENDED</bcp14> mechanisms.</t>
        <t>When AS-A acts as the client toward AS-B (the authorization-server-
as-client topology described in Appendix B.2 of
<xref target="I-D.ietf-oauth-identity-chaining"/>), the delegated key binding
mechanism described in Appendix B.3 of that document <bcp14>SHOULD</bcp14> be used.
AS-A <bcp14>MUST</bcp14> verify proof of possession of the Requesting Workload's
key and convey it to AS-B using the <tt>cnf</tt> claim in the JWT
Authorization Grant.</t>
      </section>
      <section anchor="txn-token-confidentiality">
        <name>Txn-Token Confidentiality</name>
        <t>A Txn-Token <bcp14>MUST NOT</bcp14> be forwarded to any entity outside Trust Domain A.
All communication between the Requesting Workload and AS-A <bcp14>MUST</bcp14> be
encrypted and the Requesting Workload <bcp14>MUST</bcp14> be authenticated (e.g.,
via mutual TLS; see also <xref target="client-authentication"/>).
Txn-Token lifetimes <bcp14>SHOULD</bcp14> be short.</t>
      </section>
      <section anchor="jwt-authorization-grant-replay-prevention">
        <name>JWT Authorization Grant Replay Prevention</name>
        <t>The JWT Authorization Grant is a bearer token.  AS-B <bcp14>MUST</bcp14> enforce
single-use semantics on the <tt>jti</tt> claim.  AS-A <bcp14>SHOULD</bcp14> set a short
validity lifetime (see <xref target="jwt-claims-requirements"/>).  Additional
guidance is provided in Section 5.5 of
<xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
      </section>
      <section anchor="scope-boundary-enforcement">
        <name>Scope Boundary Enforcement</name>
        <t>AS-A <bcp14>MUST</bcp14> enforce that the JWT Authorization Grant scope does not
exceed the Txn-Token's scope.  AS-B <bcp14>MUST</bcp14> independently enforce that
the access token it issues does not convey scope exceeding the JWT
Authorization Grant.  These controls together prevent the chaining
mechanism from being used to escalate privileges beyond the
originating transaction's authorized scope.</t>
      </section>
      <section anchor="cross-domain-trust-agreement-integrity">
        <name>Cross-Domain Trust Agreement Integrity</name>
        <t>Operators <bcp14>MUST</bcp14> ensure that:</t>
        <ul spacing="normal">
          <li>
            <t>AS-A issues JWT Authorization Grants only for AS-B instances with
which a bilateral Cross-Domain Trust Agreement has been explicitly
established and is actively maintained.</t>
          </li>
          <li>
            <t>AS-B accepts JWT Authorization Grants only from AS-A instances
listed in its trusted issuers configuration.</t>
          </li>
          <li>
            <t>The Cross-Domain Trust Agreement, including subject identifier
mappings and permitted <tt>txn_claims</tt>, is reviewed whenever the
participating services or their authorization policies change.</t>
          </li>
        </ul>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>AS-B <bcp14>SHOULD NOT</bcp14> issue refresh tokens.  Because Txn-Tokens are
short-lived and transaction-specific, re-obtaining a new Txn-Token
and repeating the chaining flow is the correct renewal mechanism.
Issuing a refresh token would decouple the access lifetime from the
originating transaction's authorization context and create a
persistent credential outside the control of Trust Domain A.</t>
      </section>
      <section anchor="trust-across-multiple-trust-domains">
        <name>Trust Across Multiple Trust Domains</name>
        <t>When this profile is applied recursively (<xref target="chaining-across-multiple-trust-domains"/>), trust remains strictly pairwise. An Authorization Server accepts a JWT Authorization Grant because it trusts the issuing Authorization Server under their Cross-Domain Trust Agreement, not because it has any relationship with Trust Domains further upstream. Because context propagation each time a Trust Domain boundary is crossed is a deployment decision (<xref target="chaining-across-multiple-trust-domains"/>), claims in a JWT Authorization Grant may be derived from context that the issuing Trust Domain itself received from an upstream Trust Domain.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Txn-Tokens may contain claims that relate to the Initiating
Principal, including personal identity information for
human-user-initiated transactions (e.g., user identifier, email
address, IP address) that may be subject to applicable privacy
regulations.</t>
      <t>AS-A <bcp14>MUST</bcp14> apply claims minimization (<xref target="claims-transcription"/>)
before issuing a JWT Authorization Grant.  Specifically:</t>
      <ul spacing="normal">
        <li>
          <t>Only identity claims necessary for AS-B to resolve the subject and
apply authorization policy <bcp14>SHOULD</bcp14> be included in <tt>txn_claims</tt>.</t>
        </li>
        <li>
          <t>Claims that could be used to reconstruct internal activity patterns
within Trust Domain A <bcp14>MUST NOT</bcp14> be included.</t>
        </li>
        <li>
          <t>The Cross-Domain Trust Agreement <bcp14>MUST</bcp14> specify which identity claims
AS-A is permitted to disclose to AS-B, consistent with the data
handling and privacy policies of both organizations.</t>
        </li>
      </ul>
      <t>The <tt>txn</tt> claim enables end-to-end transaction correlation across the
domain boundary.  Operators <bcp14>SHOULD</bcp14> evaluate whether the auditability
benefits outweigh the privacy implications for their specific
deployment, particularly for human-user-initiated transactions.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="jwt-typ-registration">
        <name>JWT Typ Registration</name>
        <t>This specification requests registration of the following value in
the "JSON Web Signature and Encryption Header Parameters" registry
(maintained by IANA):</t>
        <ul spacing="normal">
          <li>
            <t>Header Parameter Name: <tt>txn-chain+jwt</tt></t>
          </li>
          <li>
            <t>Header Parameter Description: JWT type for a Transaction Token
Chaining Authorization Grant as defined in this document</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="jwt-authorization-grant"/> of this
document</t>
          </li>
        </ul>
      </section>
      <section anchor="jwt-claims-registry">
        <name>JWT Claims Registry</name>
        <t>This specification requests registration of the following claim name
in the "JSON Web Token Claims" registry (maintained by IANA):</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: <tt>txn_claims</tt></t>
          </li>
          <li>
            <t>Claim Description: Transcribed claims from a Transaction Token,
included in a JWT Authorization Grant to convey cross-domain
authorization context</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="claims-transcription"/> of this
document</t>
          </li>
        </ul>
      </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="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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </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="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </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="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="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="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining" target="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-identity-chaining-11">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author initials="K." surname="Burgin" fullname="Kelley Burgin">
              <organization>MITRE</organization>
            </author>
            <author initials="M." surname="Jenkins" fullname="Michael Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author initials="A." surname="Parecki" fullname="Aaron Parecki">
              <organization>Okta</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-11"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-transaction-tokens" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-transaction-tokens/">
          <front>
            <title>Transaction Tokens</title>
            <author initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
              <organization>SGNL</organization>
            </author>
            <author initials="G." surname="Fletcher" fullname="George Fletcher">
              <organization>Practical Identity LLC</organization>
            </author>
            <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-08"/>
        </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="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </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="I-D.ietf-wimse-arch" target="https://datatracker.ietf.org/doc/draft-ietf-wimse-arch/">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author initials="J." surname="Salowey" fullname="Joseph Salowey">
              <organization>CyberArk</organization>
            </author>
            <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-07"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-workload-creds" target="https://datatracker.ietf.org/doc/draft-ietf-wimse-workload-creds/">
          <front>
            <title>WIMSE Workload Credentials</title>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author initials="J." surname="Salowey" fullname="Joseph Salowey">
              <organization>CyberArk</organization>
            </author>
            <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author initials="Y." surname="Sheffer" fullname="Yaron Sheffer">
              <organization>Intuit</organization>
            </author>
            <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-workload-creds-00"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-assertion-authz-grant" target="https://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/">
          <front>
            <title>Identity Assertion JWT Authorization Grant</title>
            <author initials="A." surname="Parecki" fullname="Aaron Parecki">
              <organization>Okta</organization>
            </author>
            <author initials="K." surname="McGuinness" fullname="Karl McGuinness">
              <organization>Independent</organization>
            </author>
            <author initials="B." surname="Campbell" fullname="Brian Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-03"/>
        </reference>
      </references>
    </references>
    <?line 1146?>

<section anchor="use-cases">
      <name>Use Cases</name>
      <t>The following use cases illustrate the three Initiating Principal
types described in <xref target="txn-token-initiating-principal-context"/>, each
demonstrating a scenario where a workload within a Trust Domain must
call a partner service in a separate Trust Domain to complete the
transaction.</t>
      <section anchor="user-initiated-external-api-call-requiring-a-partner-service">
        <name>User-Initiated External API Call Requiring a Partner Service</name>
        <t>A financial services enterprise exposes a portfolio management API to
its customers.  A customer uses a mobile application to add a stock
to their watch list, calling <tt>POST /watchlist</tt> at the enterprise's
API gateway with an OAuth 2.0 access token.</t>
        <t>The API gateway workload requests a Txn-Token from the TTS,
presenting the user's access token as the inbound credential.  The
TTS mints a Txn-Token with <tt>sub</tt> set to the user's enterprise
identifier, <tt>scope</tt> set to <tt>watchlist-update</tt>, and <tt>rctx</tt> capturing
the mobile client's OAuth client identifier and IP address.  This
Txn-Token propagates through the internal portfolio service call
chain.</t>
        <t>To enrich the watch list entry with current market data, the
portfolio service must call a market-data API operated by a partner
financial data provider in Trust Domain B.  The portfolio service
exchanges the Txn-Token for a JWT Authorization Grant using this
profile.  AS-A maps the user's enterprise identifier to a
cross-domain user identifier agreed with the partner (e.g., the
user's email address or a pairwise identifier), and includes a
minimized <tt>txn_claims</tt> carrying <tt>scope: watchlist-update</tt>.</t>
        <t>The partner's authorization server issues an access token that
identifies the user (enabling per-user rate limiting and audit
logging at the partner) without receiving the enterprise's internal
Txn-Token, internal access token, or internal user database
identifiers.</t>
      </section>
      <section anchor="system-initiated-event-requiring-a-partner-service">
        <name>System-Initiated Event Requiring a Partner Service</name>
        <t>An enterprise mail service receives an inbound email message via
SMTP.  The SMTP server is an internal system component operating
under its own system credential; no external OAuth client is
involved.  The SMTP server requests a Txn-Token from the TTS with
<tt>sub</tt> set to its system identity (<tt>system:mail-gateway@enterprise.example</tt>),
<tt>scope</tt> set to <tt>mail-delivery</tt>, and <tt>rctx</tt> carrying the SMTP envelope
sender address and the recipient user's internal identifier.  This
Txn-Token propagates to the mail storage service workload.</t>
        <t>Before storing the message in the recipient's mailbox, the mail
storage service must call a spam-rating API operated by a partner
spam service in Trust Domain B (whose Authorization Server is
<tt>https://as.spamsvc.example</tt> and whose spam-rating API is
<tt>https://api.spamsvc.example/spam-rating</tt>).</t>
        <t>The mail storage service exchanges the Txn-Token for a JWT
Authorization Grant using this profile.  AS-A maps the system
identity to the cross-domain service identifier agreed with the spam
service, and includes a minimized <tt>txn_claims</tt> carrying
<tt>scope: mail-delivery</tt> and <tt>rctx.smtp_from</tt> (the envelope sender
address, stripped of internal routing metadata).</t>
        <t>The spam service's authorization server issues an access token for
the spam-rating API.  The spam service can apply per-sender and
per-recipient policy based on <tt>txn_claims</tt>, enabling personalized
spam filtering without requiring the enterprise to expose internal
user tokens or the Txn-Token outside its trust boundary.</t>
      </section>
      <section anchor="automated-workload-requiring-a-partner-service">
        <name>Automated Workload Requiring a Partner Service</name>
        <t>An enterprise data platform runs a nightly telemetry aggregation job.
The job is an automated workload with no direct external caller,
triggered by an internal scheduler.  The scheduler requests a
Txn-Token from the TTS with <tt>sub</tt> set to the job's SPIFFE workload
URI (<tt>spiffe://enterprise.example/telemetry/nightly-agg</tt>), <tt>scope</tt>
set to <tt>telemetry-aggregation</tt>, and no user context in <tt>rctx</tt>.</t>
        <t>To complete the aggregation, the job must query a third-party
analytics API in Trust Domain B.  The job exchanges the Txn-Token
for a JWT Authorization Grant using this profile.  AS-A maps the
SPIFFE workload URI to a cross-domain workload identifier agreed with
the analytics provider, and includes <tt>scope: telemetry-aggregation</tt>
in <tt>txn_claims</tt>.</t>
        <t>The analytics provider's authorization server issues a scoped access
token.  The <tt>txn</tt> claim in the JWT Authorization Grant allows the
analytics provider to correlate API calls to the originating job run
for billing and audit purposes, without receiving the internal SPIFFE
URI or other Trust Domain A infrastructure details.</t>
      </section>
    </section>
    <section anchor="relationship-to-related-specifications">
      <name>Relationship to Related Specifications</name>
      <t>This specification is one of a family of profiles of
<xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
      <section anchor="identity-assertion-jwt-authorization-grant">
        <name>Identity Assertion JWT Authorization Grant</name>
        <t><xref target="I-D.ietf-oauth-identity-assertion-authz-grant"/> (the "ID-JAG"
specification, adopted by the OAuth Working Group as of April 2026)
targets deployments where AS-B already trusts AS-A (acting as an
IdP) for Single Sign-On (SSO) and subject resolution, using an
OpenID Connect ID Token or SAML 2.0 assertion as the subject token.</t>
        <t>The key structural differences between the two profiles are:</t>
        <dl>
          <dt>Subject Token Type:</dt>
          <dd>
            <t>The ID-JAG profile uses an OpenID Connect ID Token or SAML 2.0
assertion as the <tt>subject_token</tt>.  This profile uses a Txn-Token
(<tt>urn:ietf:params:oauth:token-type:txn_token</tt>).</t>
          </dd>
          <dt>Initiating Principal Scope:</dt>
          <dd>
            <t>The ID-JAG profile is exclusively centered on a human End-User
whose authenticated session at the IdP drives the cross-domain
access.  This profile supports all three Initiating Principal
types — human user, internal system, and automated workload —
uniformly, because Txn-Tokens capture all three.</t>
          </dd>
          <dt>Trust Relationship Basis:</dt>
          <dd>
            <t>The ID-JAG profile relies on a pre-existing SSO trust relationship
between AS-A (the IdP) and AS-B (the Resource AS) for the same
user population.  This profile relies on a bilateral Cross-Domain
Trust Agreement between AS-A and AS-B, which may exist
independently of any shared identity provider.</t>
          </dd>
          <dt><tt>audience</tt> and <tt>resource</tt> Parameters:</dt>
          <dd>
            <t>Both profiles use <tt>audience</tt> to identify AS-B (the target
authorization server) and <tt>resource</tt> (<xref target="RFC8707"/>) optionally to
identify the target Protected Resource.  These parameters serve
the same distinct purposes in both profiles: <tt>audience</tt> → AS-B
issuer URL → <tt>aud</tt> in the grant; <tt>resource</tt> → resource server URI
→ <tt>resource</tt> claim in the grant.</t>
          </dd>
          <dt><tt>client_id</tt> Requirement:</dt>
          <dd>
            <t>The ID-JAG includes a <bcp14>REQUIRED</bcp14> <tt>client_id</tt> claim identifying the
OAuth 2.0 client at AS-B acting on behalf of the resource owner.
This is appropriate where the application has a pre-registered
client relationship with AS-B.  This profile does not require a
pre-registered <tt>client_id</tt> at AS-B; the Requesting Workload's
identity is conveyed through client authentication to AS-A and the
subject mapping in the JWT Authorization Grant.</t>
          </dd>
          <dt>Multi-Tenancy:</dt>
          <dd>
            <t>The ID-JAG profile defines <tt>tenant</tt>, <tt>aud_tenant</tt>, and <tt>aud_sub</tt>
claims for multi-tenant SaaS deployments.  This profile does not
define equivalent tenant-scoping claims, as Trust Domain
boundaries are typically organizational or service-provider
boundaries rather than tenant partitions within a shared platform.</t>
          </dd>
          <dt>Rich Authorization Requests (RAR):</dt>
          <dd>
            <t>The ID-JAG profile supports the optional <tt>authorization_details</tt>
claim (<xref target="RFC9396"/>) in the grant.  This profile does not currently
define RAR integration; a future revision <bcp14>MAY</bcp14> define how
<tt>authorization_details</tt> from a Txn-Token are transcribed into the
JWT Authorization Grant.</t>
          </dd>
          <dt>SAML 2.0 Interoperability:</dt>
          <dd>
            <t>The ID-JAG profile includes SAML 2.0 identity assertion
interoperability.  This profile addresses only JWT-based
Txn-Tokens.</t>
          </dd>
          <dt>Sender Constraining:</dt>
          <dd>
            <t>Both profiles use the <tt>cnf</tt> claim to convey a sender-constraining
key to AS-B.  The ID-JAG profile embeds <tt>cnf</tt> in the ID-JAG
itself; this profile includes <tt>cnf</tt> in the JWT Authorization
Grant, derived from the Requesting Workload's client credential
presented to AS-A (see <xref target="sender-constraining"/>).</t>
          </dd>
        </dl>
        <t>The two profiles are complementary.  A deployment <bcp14>MAY</bcp14> support both:
the ID-JAG profile for human-user cross-domain access coordinated
through a shared identity provider, and this profile for any
transaction-driven cross-domain access (user-initiated,
system-initiated, or workload-initiated) where the trust relationship
is established through a bilateral Cross-Domain Trust Agreement.  An
Authorization Server implementing both <bcp14>MUST</bcp14> distinguish between them
by inspecting the JWT <tt>typ</tt> header: <tt>oauth-id-jag+jwt</tt> for the
ID-JAG profile and <tt>txn-chain+jwt</tt> for this profile.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author would like to thank Atul Tulshibagwale, Pieter Kasselman,
Aaron Parecki, Brian Campbell, Arndt Schwenkschuster, Kelley Burgin,
Karl McGuinness, and the members of the IETF OAuth Working Group for
their foundational work on the specifications that this profile
depends on.</t>
      <t>The Transaction Tokens concept was originally developed by Atul
Tulshibagwale, George Fletcher, and Pieter Kasselman.  The OAuth
Identity and Authorization Chaining Across Domains specification was
authored by Arndt Schwenkschuster, Pieter Kasselman, Kelley Burgin,
Michael Jenkins, Brian Campbell, and Aaron Parecki.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from final specification ]]</t>
      <section numbered="false" anchor="since-draft-02">
        <name>Since Draft 02</name>
        <ul spacing="normal">
          <li>
            <t>Renamed the draft to
<tt>draft-fletcher-oauth-txn-token-chaining-profile</tt></t>
          </li>
          <li>
            <t>Corrected the source and issue tracker URL to the repository for
this draft</t>
          </li>
          <li>
            <t>Consolidated the BCP 14 requirements language into
<xref target="conventions-and-definitions"/></t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-01">
        <name>Since Draft 01</name>
        <ul spacing="normal">
          <li>
            <t>Added <xref target="chaining-across-multiple-trust-domains"/> describing
recursive application of this profile across more than two Trust
Domains</t>
          </li>
          <li>
            <t>Added <xref target="trust-across-multiple-trust-domains"/> to the Security
Considerations</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-00">
        <name>Since Draft 00</name>
        <ul spacing="normal">
          <li>
            <t>Added Pieter Kasselman and Sean O'Dell as authors</t>
          </li>
          <li>
            <t>Fixed the sequence diagram in section 3.2</t>
          </li>
          <li>
            <t>Streamlined the text descriptions for the sequence in section 3.2</t>
          </li>
          <li>
            <t>Cleaned up language that used purpose instead of scope</t>
          </li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81963bbVpbm//MUGGV1R0wRtCTf5SRdkmwnSuLYYymdVVNV
ywLJQwoRCLAAUDLLca3+NQ8wqx9gnmUepZ5k9u3ccKFoO+mZpFZFJIFz3Wdf
v71PHMeqTutMH0Y752WSV8mkTos8Oi+udB4drerLokz/ntB338DvdfSqLGZp
pqNZUUYv8YHodKpzaGMdJfm08crJZZLmaT7fUcl4XOpr7OVtHnPr5kfT5I6a
FpM8WcBYpmUyq+NZpuvJpS7jIoFW4xrerPHNeCJvxkt+M97bU5Ok1vOiXB9G
VT1V1Wq8SKsKxlCvl9Dg6bPz5ypdlodRXa6q+mBv7/Hegbopyqt5WayWh9HP
etwYO4yqLiZFpq70Gh6cHqooiiMaCv1Ve8tFw6ro69SshhkkfTspi6qKp8UC
vpO3YRiRfKGqGtbuTZIVOYx1rStVLZKyfvO3VVHr6jDKC7VMsX8YEP8eRVVR
1qWeVfbzeuE+qoSmwkNOc/j2m1H0XJYTvowiXudvdFHOdfgLfJPksgiHsAo4
xUmSuW3+4YcTelDD2LPDaE5t/HFpHjQLMJoUC9f/q1H0fVJVOlskuTeAV6mu
ddn4Cdo7jJ7qWXJVF9GZnqxKaM7vcklv/XHKj4wq94j0djaKXn7+VGeZ19WZ
TnL/23CeJ/9+Fn2rk4w213ZUwTujYgqv/HFyXV3S7zQvlRflAl691rjGr5+f
PHh477H8+fD+vvvzYN/9edf8+WhvT/58dG//nvnzwWPzwKOHew/tnwf35c/H
D+1rjx8ePMI/T+OnI1iLmZwQs/T2gBzSZMwB3/q4RkdEr9FTIs9qh1tJYJvr
w+iyrpfV4Z0706RO4AxMrnRJYxjBgt6BE3znsl5kd/gEbxpbvL9P7TpSxX9k
A49G0dnk8kbnV9XkEk6K0KbbzaMyn9a9z/RTUD9B3kKUWzb7/Sg6XpXztNnm
90BDet38jRp8cXr++lnYyotR9B3MKyWe4jfzIoXl01nrV2rox7Oj+OTk7Cxs
63gUnSSL5djQvWvsuEzhSLR+pLZeIRkYUmntzauk1JOrtLknSYl8s/EbNffy
qk7oG6AaePJg7+ABfax0meoqzWeFIYDTHNY+13X8FCnIiILbCalxFDzuzEKj
Cs9CS9h9KJW3xtXu8c5G+j5fZdVlOk7mN0mmmytZr7KeB2g5z7758YewwSZ/
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
zeu6TMcrVITkeNnOrVRB4BJirbw0BpvAEAp9n55OX5mEQDzTUnBl221to8LQ
UAbjMpfxRLS5DWQY8SLGgeEIZGUGJuEmtQk3EYzzskbnk4Ft2VkTJSX9B1VI
WQBBdmXTSrA5qywppb4UHRKT5SEkQmlnKR3aa+DEYtiXOqkK53toIL2Z6VXE
O7HeIY0xniUTwcB1IqhBtWiWVr590TsgbrsWtoYQtiZwzQLVvBIrtl9fyUKj
EyvkCdoOUcg4l7NXp8+fP4t+en1a+QLcVRqWzD54jUoIx5RKWadjcg7MysRk
WTLKhxhBb3LmuRUehucQH7LYIDibT0Rn7WW6WIMP63CBtuogb53WTbnKtOR0
dpsz9sC2wbjWleg1ssmlKABcV+2S4P2EjnMzUQ3xEdobrhTOyOTgoGiFLhxX
U0wz5NIJjv4S7akS0wiIhkNrh92mxj+rzNSyYk7VCzxU1y2mqhyP7rJ3LBHz
iL015B8jQR+6og3K5pUD7IGMJ/luXCKx8L3YgfreM/ZSSibYCiZBaYdADQw2
jJv3f0etr63G27IJu77D3Oky+6LHi9ko58iWkXAzogPTtCn4bJD285lwBOcz
P2efebcpnztXSiPhf2WqEXieenzcedj9YdmxcokMm7ncqbzflu9vdbx7o7ty
Cimn2nVHMgHDKUAosEuC7qyC+I2iHLN8RinWsDZuHsgrTaKvYfkMKbjwKR+O
GXmeZcvu7d/zt4yqcR1r4FneOhnOK+K2x0uNb57aWgrsKqVRryopVOoMLkwM
8JTyYztFaANth2UiFRQbwAjk6m6rcPr2AxXxkuRhSsYBDh3EaXqcn7umBRWJ
UB603XrD0PYU7fzh3sOA3JHlXzqlZ8hMSQx967/htRBty3hkggjPdqtNx+I1
XkPDVyRZOoJVIZJjM7eDLLhvsUMwJ6nbpOUS1GzSBvyGFj40Ojt6adjtLjWe
coQ2sZpW8586ky7jXKiH+JeeNvvxKCnc0vqjev3lpr5AzXvGWpEhDaF4OO9g
pS+p5qzeUKIFz32BkOY5M3TH1yjLSywFVgc8tiKvNd+hVSaVsDHhs2Uy0bHJ
VJ1KGUXJbKkiu2ZW+eOIXndAz8llPNecDZRERFqsyVKraPW8nWhtK8nKyMKj
0JFGSl4vIqieGKRxAIFuWpTGQ0Ic3/um6RBq+JmcaENNCg3YoMKAW088kc9Y
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
8NJiIlPeEogSez2p+r/y2+/Pr+AAAA==

-->

</rfc>
