<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 4.0.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-transaction-tokens-11" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Txn-Tokens">Transaction Tokens</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-11"/>
    <author initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
      <organization>CrowdStrike</organization>
      <address>
        <email>atul.tulshibagwale@crowdstrike.com</email>
      </address>
    </author>
    <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>
    <date year="2026" month="July" day="30"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <keyword>Workloads</keyword>
    <keyword>OAuth</keyword>
    <keyword>JWT</keyword>
    <keyword>token exchange</keyword>
    <abstract>
      <?line 103?>
<t>Transaction Tokens (Txn-Tokens) are designed to maintain and propagate user identity, workload identity and authorization context throughout the Call Chain within a trusted domain during the processing of external requests (e.g. such as API calls) or requests initiated internally within the Trust Domain. Txn-Tokens ensure that this context is preserved throughout the Call Chain thereby enhancing security and consistency in complex, multi-service architectures.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-transaction-tokens/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/oauth-transaction-tokens"/>.</t>
    </note>
  </front>
  <middle>
    <?line 105?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Modern computing architectures often consist of multiple independently running components, referred to in this document as workloads. In many deployments, an external invocation through an interface such as an API results in the invocation of multiple internal workloads in order to process the request. These workloads often execute in virtually or physically isolated networks. Such networks, and the workloads operating within them, can be compromised through software supply chain attacks, privileged user compromise, malicious insiders, software defects, or other attacks. Such compromise can enable unauthorized actions, including</t>
      <ul spacing="normal">
        <li>
          <t>Invocation of workloads in the absence of a valid transaction.</t>
        </li>
        <li>
          <t>Arbitrary user or workload impersonation.</t>
        </li>
        <li>
          <t>Parameter modification or augmentation.</t>
        </li>
        <li>
          <t>Theft of tokens used to convey authorization context (e.g. OAuth 2.0 access tokens).</t>
        </li>
      </ul>
      <t>Transaction Tokens (Txn-Tokens) are intended to reduce these risks by carrying user or workload identity, along with authorization and request context, in short-lived, signed JWTs that are bound to specific transactions and propagated throughout the Call Chain within a Trust Domain. The authorization and request context include parameters of the original call, environmental attributes such as the IP address of the original caller, user and workload identity information and other information that is expected to remain consistent across subsequent workload invocations, including information added within the Trust Domain after the initial request. Downstream workloads use Txn-tokens to apply authorization decisions based on this context within a specific transaction. Txn-Tokens are cryptographically protected, enabling downstream workloads to detect unauthorized modification of this information. Txn-Tokens reduce risk by making it harder for an attacker to invoke workloads outside an authorized transaction, impersonate users or workloads within a transaction, modify request context for a transaction, or rely on stolen access tokens alone.</t>
      <t>Txn-Tokens apply both to transactions initiated by an external event, such as an Internet-facing API invocation, and to transactions initiated from within the Trust Domain.</t>
    </section>
    <section anchor="notational-conventions">
      <name>Notational Conventions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>Workload:</dt>
        <dd>
          <t>A running instance of software executing for a specific purpose. Examples of workloads include containerized microservices, monolithic services and infrastructure services such as managed databases.</t>
        </dd>
        <dt>Trust Domain:</dt>
        <dd>
          <t>A logical grouping of systems that share a common set of security controls and policies. In practice this may include a virtually or physically separated network, which contains two or more workloads. The workloads within a Trust Domain may be invoked only through published interfaces.</t>
        </dd>
        <dt>External Endpoint:</dt>
        <dd>
          <t>A published interface to a Trust Domain that results in the invocation of a workload within the Trust Domain. In practice, the external endpoint may be accessed through a gateway service as described in the WIMSE architecture <xref target="I-D.ietf-wimse-arch"/>.</t>
        </dd>
        <dt>Call Chain:</dt>
        <dd>
          <t>The set of invocations across all workloads invoked to complete the requested transaction.</t>
        </dd>
        <dt>Transaction Token (Txn-Token):</dt>
        <dd>
          <t>A signed JWT with a short lifetime, providing immutable information about the user or workload, certain parameters of the call, and specific contextual attributes of the call. The Txn-Token is used to authorize subsequent calls in the Call Chain.</t>
        </dd>
        <dt>Transaction Token Service (TTS):</dt>
        <dd>
          <t>A special service within the Trust Domain that issues Txn-Tokens to requesting workloads. Each Trust Domain using Txn-Tokens MUST have exactly one logical TTS.</t>
        </dd>
      </dl>
    </section>
    <section anchor="what-are-transaction-tokens">
      <name>What are Transaction Tokens?</name>
      <t>Txn-Tokens are short-lived, signed JWTs <xref target="RFC7519"/> that assert the identity of a user or a workload and an authorization context. The authorization context provides information expected to remain constant during the execution of the transaction as it passes through the Call Chain.</t>
      <section anchor="authorization-context">
        <name>Authorization Context</name>
        <t>Authorization context includes information used for authorization, accounting and auditing purposes and often contains information about the request being made. A key aspect of the authorization context is the intent or purpose of the transaction, which should be as narrowly defined as possible for the given deployment. A narrowly scoped, short-lived, transaction token reduces the attack surface of captured and replayed transaction tokens.</t>
      </section>
    </section>
    <section anchor="creating-txn-tokens">
      <name>Creating Txn-Tokens</name>
      <section anchor="creation">
        <name>Creation</name>
        <t>Txn-Tokens are typically created when a workload is invoked using an endpoint that is externally visible, and is authorized using a separate mechanism, such as an OAuth <xref target="RFC6749"/> access token. The externally visible endpoint exchanges the external authorization token for a transaction token before sending it to the workload. The transaction token may be obtained through a local interface, or it may be requested from a remote server.</t>
        <t>If the transaction token request is made via HTTP to a remote server, it MUST use <xref target="RFC8693"/> as described in this specification. To do this, it invokes a special Token Service (the Transaction Token Service (TTS)) and provides context that is sufficient for the TTS to generate a Txn-Token.</t>
        <t>The context information provided to the TTS MUST include:</t>
        <ul spacing="normal">
          <li>
            <t>The identification of the Trust Domain in which the issued Txn-Token is valid.</t>
          </li>
          <li>
            <t>A token which identifies the subject of the Txn-Token (e.g. an OAuth access token, a self-issued JWT, etc).</t>
          </li>
          <li>
            <t>The desired authorization scope for the issued Txn-Token.</t>
          </li>
        </ul>
        <t>Additional contextual information MAY be provided such as:</t>
        <ul spacing="normal">
          <li>
            <t>Parameters that are required to be integrity protected for the duration of this call.</t>
          </li>
          <li>
            <t>Additional context, such as the incoming IP address, User Agent information, or other context that can help the TTS to issue the Txn-Token.</t>
          </li>
        </ul>
        <t>The TTS responds to a successful invocation by generating a Txn-Token. The calling workload then uses the Txn-Token to authorize its calls to subsequent workloads.</t>
        <t>If the requesting service does not have an inbound token that it can use in its request to the TTS, it MAY generate a self-signed JWT and present that in the request in place of the external authorization token. This can be the case when the external authentication does not use an access token or when the requesting service is initiating a scheduled internal request for itself or on behalf of a user of the system.</t>
      </section>
    </section>
    <section anchor="txn-token-lifetime">
      <name>Txn-Token Lifetime</name>
      <t>Txn-Tokens are expected to be short-lived (on the order of minutes or less), and as a result MUST be used only for the expected duration of an external or internal invocation. If the token or other credential (e.g. self-signed JWT) presented to the TTS when requesting a Txn-Token has an expiration time, then the TTS MUST NOT issue a Txn-Token if the expiration time has passed. The lifetime of the Txn-Token itself MAY exceed the expiration time of the presented token, subject to the policy of the TTS. The TTS SHOULD assess whether the Txn-Token’s assigned lifetime and transaction binding adequately mitigate the risks of a Txn-Token lifetime that exceeds the presented subject token’s expiration time. If a long-running process such as a batch or offline task is involved, the mechanism used to perform the external or internal invocation still results in a short-lived Txn-Token (see <xref target="lifetime"/>).</t>
    </section>
    <section anchor="benefits-of-txn-tokens">
      <name>Benefits of Txn-Tokens</name>
      <t>Txn-Tokens prevent unauthorized invocations by allowing a workload to independently verify the identity of the user or workload that initiated an external call, as well as any contextual information relevant to processing that call. This results in the following benefits:</t>
      <ul spacing="normal">
        <li>
          <t>Short-lived, Txn-Tokens, bound to a single transaction, reduce replay risk.</t>
        </li>
        <li>
          <t>Narrowly scoped Txn-Tokens limit lateral movement and blast radius.</t>
        </li>
        <li>
          <t>Signed Txn-Tokens protect the original call context and identity from modification along the Call Chain.</t>
        </li>
        <li>
          <t>Independent verification at each workload helps prevent unauthorized invocation.</t>
        </li>
        <li>
          <t>Restricting which workloads can obtain Txn-Tokens limits exposure from compromised or untrusted services, including some SBOM-related attack paths.</t>
        </li>
      </ul>
    </section>
    <section anchor="txn-token-issuance-and-usage-flows">
      <name>Txn-Token Issuance and Usage Flows</name>
      <section anchor="basic-flow">
        <name>Basic Flow</name>
        <t><xref target="fig-arch-basic"/> shows the basic flow of how Txn-Tokens are used in a multi-workload environment.</t>
        <figure anchor="fig-arch-basic">
          <name>Basic Transaction Tokens Architecture</name>
          <artwork type="ascii-art"><![CDATA[
     1    +--------------+    2      +--------------+
--------->│              │---------->│              │
          │   External   │           │  Txn-Token   │
     8    │   Endpoint   │    3      │   Service    │
<---------│              │<----------│              │
          +--------------+           +--------------+
               │   ^
             4 v   │ 7
          +--------------+
          │              │
          │   Internal   │
          │   Workload   │
          │              │
          +--------------+
               │   ^
               v   │
                 o
             5   o    6
                 o
               │   ^
               v   │
          +--------------+
          │              │
          │   Internal   │
          │   Workload   │
          │              │
          +--------------+
]]></artwork>
        </figure>
        <ol spacing="normal" type="1"><li>
            <t>External endpoint is invoked using conventional authorization mechanism such as an OAuth 2.0 Access token.</t>
          </li>
          <li>
            <t>External endpoint provides context and incoming authorization (e.g., access token) to the TTS.</t>
          </li>
          <li>
            <t>TTS mints a Txn-Token that provides immutable context for the transaction and returns it to the requester.</t>
          </li>
          <li>
            <t>The external endpoint initiates a call to an internal workload and provides the Txn-Token as authorization.</t>
          </li>
          <li>
            <t>Subsequent calls to other internal workloads use the same Txn-Token to authorize calls.</t>
          </li>
          <li>
            <t>Responses are provided to calling workloads based on successful authorization by the invoked workloads.</t>
          </li>
          <li>
            <t>Response provided to external endpoint based on successful authorization by the invoked workload.</t>
          </li>
          <li>
            <t>External client is provided a response to the external invocation.</t>
          </li>
        </ol>
      </section>
      <section anchor="internally-initiated-txn-token-flow">
        <name>Internally Initiated Txn-Token Flow</name>
        <t>An internal workload may need to initiate a transaction not on the basis of a current external request, but as part of a scheduled task or in reaction to a specific condition. The transaction may be requested on behalf of the identity of the requesting workload or as an impersonation on behalf of a specific user chosen based on information accessible to the workload.</t>
        <figure anchor="fig-arch-internal">
          <name>Internally Initiated Txn-Token Flow</name>
          <artwork type="ascii-art"><![CDATA[
        1 ┌──────────────┐    2      ┌──────────────┐
          │              ├───────────▶              │
          │   Internal   │           │  Txn-Token   │
          │   Workload   │    3      │   Service    │
          ┤              ◀───────────│              │
          └────┬───▲─────┘           └──────────────┘
               │   │
             4 │   │ 7
          ┌────▼───┴─────┐
          │              │
          │   Internal   │
          │   Workload   │
          │              │
          └────┬───▲─────┘
               │   │
               ▼   │
                 o
             5   o    6
               │ o ▲
               │   │
               │   │
          ┌────▼───┴─────┐
          │              |
          │   Internal   │
          │   Workload   │
          │              |
          └──────────────┘

]]></artwork>
        </figure>
        <t>In the diagram above, steps 5-7 are the same as in <xref target="basic-flow"/>.</t>
        <ol spacing="normal" type="1" start="1"><li>
            <t>A workload determines that it needs to initiate a request on behalf of a user in response to a scheduled timer or other trigger.</t>
          </li>
          <li>
            <t>The internal workload authenticates to the token service and makes a request for a Txn-Token. The request contains information about the transaction along with optional additional authorization credentials.</t>
          </li>
          <li>
            <t>TTS authorizes the requester and then mints a Txn-Token that provides immutable context for the transaction and returns it to the requester.</t>
          </li>
          <li>
            <t>The originating workload then contacts another internal workload and provides the Txn-Token as authorization.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="txn-token-format">
      <name>Txn-Token Format</name>
      <t>A Txn-Token is a JSON Web Token <xref target="RFC7519"/> protected by a JSON Web Signature <xref target="RFC7515"/>. The following describes the required values in a Txn-Token:</t>
      <section anchor="txn-token-header">
        <name>JWT Header</name>
        <t>In the JWT Header:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>typ</tt> Header Parameter MUST be present and MUST have the value <tt>txntoken+jwt</tt>.</t>
          </li>
          <li>
            <t>Key rotation of the signing key SHOULD be supported through the use of a <tt>kid</tt> Header Parameter.</t>
          </li>
        </ul>
        <t><xref target="figtxtokenheader"/> is a non-normative example of the JWT Header of a Txn-Token</t>
        <figure anchor="figtxtokenheader">
          <name>Example: Txn-Token Header</name>
          <sourcecode type="json"><![CDATA[
{
    "typ": "txntoken+jwt",
    "alg": "RS256",
    "kid": "identifier-to-key"
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="txn-token-claims">
        <name>JWT Body Claims</name>
        <t>The body of a Txn-Token is a JWT <xref target="RFC7519"/>. It contains a combination of existing JWT claims and new claims defined in this specification as described below. A Txn-Token MAY contain additional claims not defined in this specification. Recipients of a Txn-Token MUST ignore any claims they do not understand.</t>
        <dl>
          <dt><tt>iss</tt>:</dt>
          <dd>
            <t>OPTIONAL The <tt>iss</tt> claim as defined in <xref target="RFC7519"/> is not required as Txn-Tokens are bound to a single Trust Domain as defined by the <tt>aud</tt> claim and often the signing keys are known.</t>
          </dd>
          <dt><tt>iat</tt>:</dt>
          <dd>
            <t>REQUIRED The issued at time of the Txn-Token as defined in <xref target="RFC7519"/>.</t>
          </dd>
          <dt><tt>aud</tt>:</dt>
          <dd>
            <t>REQUIRED This claim, defined in <xref target="RFC7519"/>, MUST identify the Trust Domain in which the Txn-Token is valid. A Txn-Token MUST NOT be accepted outside the Trust Domain identified by the <tt>aud</tt> claim.</t>
          </dd>
          <dt><tt>exp</tt>:</dt>
          <dd>
            <t>REQUIRED Expiry time of the Txn-Token as defined in <xref target="RFC7519"/>.</t>
          </dd>
          <dt><tt>txn</tt>:</dt>
          <dd>
            <t>REQUIRED A unique transaction identifier as defined in Section 2.2 of <xref target="RFC8417"/>.</t>
          </dd>
          <dt><tt>sub</tt>:</dt>
          <dd>
            <t>REQUIRED This claim represents the principal of the transaction as defined by Section 4.1.2 of <xref target="RFC7519"/>. The value MUST be unique within the context of the <tt>aud</tt> Trust Domain. Note: Unlike OpenID Connect, the <tt>sub</tt> claim is NOT associated with the <tt>iss</tt> claim.</t>
          </dd>
          <dt><tt>scope</tt>:</dt>
          <dd>
            <t>REQUIRED The scope claim is defined in <xref section="4.2" sectionFormat="of" target="RFC8693"/>. Note that the value of this claim is determined by the TTS and is not required to match the requested scope nor the scope in any supplied external token. For additional context please refer to <xref target="scope-claim"/></t>
          </dd>
          <dt><tt>tctx</tt>:</dt>
          <dd>
            <t>RECOMMENDED A JSON object that contains values that remain immutable throughout the Call Chain. For additional context please refer to <xref target="request-context"/></t>
          </dd>
          <dt><tt>rctx</tt>:</dt>
          <dd>
            <t>RECOMMENDED A JSON object that describes the environmental context of the requested transaction. For additional context please refer to <xref target="transaction-context"/></t>
          </dd>
          <dt><tt>req_wl</tt>:</dt>
          <dd>
            <t>REQUIRED. A string value that identifies the workload that requested the Txn-Token.</t>
          </dd>
        </dl>
        <section anchor="scope-claim">
          <name>Scope claim</name>
          <t>The <tt>scope</tt> claim captures, as narrowly as possible, the purpose of this particular transaction. The values used for this claim are defined by the TTS as representative of the authorization model defined by the Trust Domain. The value may be literately and semantically different from, and represent an intent narrower, than a scope value issued to an external client. How a given deployment represents the authorization model within the Trust Domain is at its discretion and not prescribed by this specification.</t>
        </section>
        <section anchor="request-context">
          <name>Request Context</name>
          <t>The Txn-Token SHOULD contain an <tt>rctx</tt> claim. The JSON value of the <tt>rctx</tt> claim MAY include any values the TTS determines are relevant to downstream services that rely on the Txn-Token. For example, this may include the IP address information of the originating request, information about the computational entity that requested the Txn-Token and contextual attributes of the originating request itself.</t>
          <t>The following is a non-normative example of an <tt>rctx</tt> claim initiated by an external call:</t>
          <sourcecode type="json"><![CDATA[
{
    "rctx": {
      "req_ip": "69.151.72.123", // IP address of the originating request
      "authn": "face", // from RFC 8176
      "transport": "https" // transport method used for the originating request
    }
}
]]></sourcecode>
        </section>
        <section anchor="transaction-context">
          <name>Transaction Context</name>
          <t>The Txn-Token SHOULD contain an <tt>tctx</tt> claim. The value of this claim is a JSON object that contains fields (wherein the value could itself be an object), which together assert the details that remain immutable through the Call Chain where this Txn-Token is used.</t>
          <t>Txn-Tokens are primarily used to assure identity and context for a transaction, and the content of this field is a critical part of that context.</t>
          <t>Whereas the <tt>rctx</tt> field contains environmental values related to the request, the <tt>tctx</tt> field contains the actual authorizaton details that are determined by the TTS. These values are used by services using the Txn-Token to reliably obtain specific parameters needed to perform their work. The content of the <tt>tctx</tt> field is determined by the TTS and the claims may be computed internally or from parameters it receives from the service that requests the Txn-Token.</t>
          <t>The following is a non-normative example of an <tt>tctx</tt> claim initiated by an external call:</t>
          <sourcecode type="json"><![CDATA[
{
    "tctx": {
      "action": "BUY", // parameter of external call
      "ticker": "MSFT", // parameter of external call
      "quantity": "100", // parameter of external call
      "customer_type": { // computed value not present in external call
        "geo": "US",
        "level": "VIP"
      }
    }
}
]]></sourcecode>
        </section>
        <section anchor="example">
          <name>Example</name>
          <t>The figure below <xref target="figleaftxtokenbody"/> shows a non-normative example of the JWT body of a Txn-Token initiated by an external call:</t>
          <figure anchor="figleaftxtokenbody">
            <name>Example: Txn-Token Body</name>
            <sourcecode type="json"><![CDATA[
{
  "iat": 1686536226,
  "aud": "trust-domain.example",
  "exp": 1686536586,
  "txn": "97053963-771d-49cc-a4e3-20aad399c312",
  "sub": "d084sdrt234fsaw34tr23t",
  "req_wl": "apigateway.trust-domain.example", // the internal entity that requested the Txn-Token
  "rctx": {
    "req_ip": "69.151.72.123", // env context of external call
    "authn": "face" // from RFC 8176
  },
  "scope" : "trade.stocks",
  "tctx": {
    "action": "BUY", // parameter of external call
    "ticker": "MSFT", // parameter of external call
    "quantity": "100", // parameter of external call
    "customer_type": { // computed value not present in external call
      "geo": "US",
      "level": "VIP"
    }
  }
}
]]></sourcecode>
          </figure>
          <t>A Txn-Token from an internal request would look much the same except the rctx and tctx field claims would be populated with information from the initiating workloads request.</t>
        </section>
      </section>
    </section>
    <section anchor="txn-token-service-tts">
      <name>Txn-Token Service (TTS)</name>
      <t>A Txn-Token Service (TTS) uses <xref target="RFC8693"/> as described in this specification to issue transaction tokens in response to HTTP requests. The unique properties of the Txn-Token requests and responses are described below. The TTS MAY optionally support other OAuth 2.0 endpoints and features, but that is not a requirement for it to be a TTS.</t>
      <t>Each Trust Domain that uses Txn-Tokens MUST have exactly one logical TTS.</t>
    </section>
    <section anchor="requesting-txn-tokens">
      <name>Requesting Txn-Tokens</name>
      <t>A workload requests a Txn-Token from a TTS. If the transaction token request is made via HTTP to a remote server, it MUST use <xref target="RFC8693"/> as described in this specification. Txn-Tokens may be requested for both externally originating or internally originating requests. This profile describes how required and optional context can be provided to the TTS in order for the Txn-Token to be issued. The request to obtain a Txn-Token using this method is called a Txn-Token Request, and a successful response is called a Txn-Token Response. The Txn-Token profile of the OAuth 2.0 Token Exchange <xref target="RFC8693"/> is described below.</t>
      <section anchor="txn-token-request">
        <name>Txn-Token Request</name>
        <t>A workload requesting a Txn-Token provides the TTS with proof of its identity (client authentication), the purpose of the Txn-Token and optionally any additional context relating to the transaction being performed. Most of these elements are provided by the OAuth 2.0 Token Exchange specification and the rest are defined as new parameters. Additionally, this profile defines a new token type URN <tt>urn:ietf:params:oauth:token-type:txn_token</tt> which is used by the requesting workload to identify that it is requesting the Txn-Token Response to contain a Txn-Token.</t>
        <t>To request a Txn-Token the workload invokes the OAuth 2.0 <xref target="RFC6749"/> token endpoint with the following parameters:</t>
        <ul spacing="normal">
          <li>
            <t><tt>grant_type</tt> REQUIRED. The value MUST be set to <tt>urn:ietf:params:oauth:grant-type:token-exchange</tt>.</t>
          </li>
          <li>
            <t><tt>audience</tt> REQUIRED. The value MUST be set to the Trust Domain name.</t>
          </li>
          <li>
            <t><tt>scope</tt> REQUIRED. A space-delimited list of case-sensitive strings where the value(s) MUST represent the specific purpose or intent of the transaction.</t>
          </li>
          <li>
            <t><tt>requested_token_type</tt> REQUIRED. The value MUST be <tt>urn:ietf:params:oauth:token-type:txn_token</tt>.</t>
          </li>
          <li>
            <t><tt>subject_token</tt> REQUIRED. The value MUST contain a token that represent the subject of the transaction. The manner in which the subject is represented in the <tt>subject_token</tt> depends on the <tt>subject_token_type</tt>. The <tt>subject_token</tt> MAY be:
            </t>
            <ul spacing="normal">
              <li>
                <t>An inbound token received by an external endpoint (e.g. an API Gateway).</t>
              </li>
              <li>
                <t>A self-signed JWT constructed by a workload initiating a transaction.</t>
              </li>
              <li>
                <t>An unsigned JSON object constructed by a workload initiating a transaction.</t>
              </li>
              <li>
                <t>Any other format that is understood by the TTS.</t>
              </li>
            </ul>
            <t>
The type of the <tt>subject_token</tt> field is identified by <tt>subject_token_type</tt>.</t>
          </li>
          <li>
            <t><tt>subject_token_type</tt> REQUIRED. The value MUST indicate the type of the token or value present in the <tt>subject_token</tt> parameter.</t>
          </li>
        </ul>
        <t>The following additional parameters are defined for the Txn-Token Request:</t>
        <ul spacing="normal">
          <li>
            <t><tt>request_context</tt> RECOMMENDED. This parameter contains a JSON object which represents the context of this transaction.</t>
          </li>
          <li>
            <t><tt>request_details</tt> RECOMMENDED. This parameter contains a JSON object which contains additional details about the request. This could include API parameters, authorization criteria or other details the requester would like to pass to the TTS. The TTS uses this data along with other information at its disposal to construct the <tt>tctx</tt> JSON object (if required).</t>
          </li>
        </ul>
        <t>All parameters are encoded using the "application/x-www-form-urlencoded" format per Appendix B of <xref target="RFC6749"/>.</t>
        <t>The figure below <xref target="figtxtokenrequest"/> shows a non-normative example of a Txn-Token Request. Line breaks added for readability.</t>
        <figure anchor="figtxtokenrequest">
          <name>Example: Txn-Token Request</name>
          <sourcecode type="http"><![CDATA[
POST /txn-token-service/token_endpoint HTTP/1.1
Host: txn-token-service.trust-domain.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Atxn_token
&audience=trust-domain.example
&scope=trade.stocks
&subject_token=eyJhbGciOiJFUzI1NiIsImtpZC...kdXjwhw
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
&request_context=%7B%0A%20%20%20%20%20%20%22req_ip%22%3A%20%2269.151.72.123%22%2C%20%0A%20%20%20%20%20%20%22authn%22%3A%20%22face%22%0A%7D
&request_details=%7B%0A%20%20%20%20%20%20%22action%22%3A%20%22BUY%22%2C%0A%20%20%20%20%20%20%22ticker%22%3A%20%22MSFT%22%2C%0A%20%20%20%20%20%20%22quantity%22%3A%20%22100%22%0A%7D
]]></sourcecode>
        </figure>
      </section>
      <section anchor="subject-token-types">
        <name>Subject Token Types</name>
        <t>The <tt>subject_token_type</tt> parameter value MUST be a URI <xref target="RFC3986"/>. It MAY be:</t>
        <ul spacing="normal">
          <li>
            <t>Any one of the subject token types described in Section 3 of OAuth 2.0 Token Exchange <xref target="RFC8693"/> except the Refresh Token type (i.e., <tt>urn:ietf:params:oauth:token-type:refresh_token</tt>).</t>
          </li>
          <li>
            <t>A URN type name when the subject token is a self-signed JWT, as described below.</t>
          </li>
          <li>
            <t>A URN type name when the subject token is an unsigned JSON object, as described below.</t>
          </li>
          <li>
            <t>A custom URN agreed to between requesters and the TTS. The TTS MAY support other token formats, which MAY be specified in the <tt>subject_token_type</tt> parameter.</t>
          </li>
        </ul>
        <section anchor="self-signed-subject-token-type">
          <name>Self-Signed Subject Token Type</name>
          <t>A requester MAY use a self-signed JWT as a <tt>subject_token</tt> value. In that case, the requester MUST set the <tt>subject_token_type</tt> value to: <tt>urn:ietf:params:oauth:token-type:self_signed</tt>. This self-signed JWT MUST contain the following claims:</t>
          <ul spacing="normal">
            <li>
              <t><tt>iss</tt>: The unique identifier of the requesting workload.</t>
            </li>
            <li>
              <t><tt>sub</tt>: The subject for whom the Txn-Token is being requested. The TTS SHALL use this value in determining the <tt>sub</tt> value in the Txn-Token issued in the response to this request.</t>
            </li>
            <li>
              <t><tt>aud</tt>: The unique identifier of the TTS. The TTS SHALL verify that this value matches its own unique identifier.</t>
            </li>
            <li>
              <t><tt>iat</tt>: The time at which the self-signed JWT was created. Note that the TTS may reject self-signed tokens with an <tt>iat</tt> value that is unreasonably far in the past or future.</t>
            </li>
            <li>
              <t><tt>exp</tt>: The expiration time for the JWT. <xref target="txn-token-lifetime"/> provides guidance on setting the expiry of a Txn-Token.</t>
            </li>
          </ul>
          <t>The self-signed JWT MAY contain other claims.</t>
        </section>
        <section anchor="unsigned-json-subject-token-type">
          <name>Unsigned JSON Object Subject Token Type</name>
          <t>A requester MAY use an unsigned JSON object as a <tt>subject_token</tt> value. In that case, the requester MUST set the <tt>subject_token_type</tt> value to: <tt>urn:ietf:params:oauth:token-type:unsigned_json</tt>. The JSON object in the subject token MUST contain the following fields:</t>
          <ul spacing="normal">
            <li>
              <t><tt>sub</tt>: The subject for whom the Txn-Token is being requested. The TTS SHALL use this value in determining the <tt>sub</tt> value in the Txn-Token issued in the response to this request.</t>
            </li>
          </ul>
          <t>The unsigned JSON object MAY contain other fields, and the TTS MAY consider them when generating the Txn-Token.</t>
        </section>
      </section>
      <section anchor="txn-token-request-processing">
        <name>Txn-Token Request Processing</name>
        <t>When the TTS receives a Txn-Token Request it:</t>
        <ul spacing="normal">
          <li>
            <t>MUST validate the requesting workload client authentication and determine if that workload is authorized to obtain the Txn-Tokens with the requested value(s) (see <xref target="tts-issuance-policies"/>). The authorization policy for determining such issuance is out of scope for this specification.</t>
          </li>
          <li>
            <t>The TTS MUST validate the <tt>subject_token</tt>, including verifying the signature, if it is signed.</t>
          </li>
          <li>
            <t>The TTS determines the value to specify as the <tt>sub</tt> of the Txn-Token and MUST ensure the <tt>sub</tt> value is unique within the Trust Domain defined by the <tt>aud</tt> claim.</t>
          </li>
          <li>
            <t>The TTS MUST set the <tt>iat</tt> claim to the time of issuance of the Txn-Token.</t>
          </li>
          <li>
            <t>The TTS MUST set the <tt>aud</tt> claim to an identifier representing the Trust Domain of the TTS. If the TTS supports multiple Trust Domains, then it MUST determine the correct <tt>aud</tt> value for this request.</t>
          </li>
          <li>
            <t>The TTS MUST set the <tt>exp</tt> claim to the expiry time of the Txn-Token. The TTS MAY consider any <tt>exp</tt> value present in the <tt>subject_token</tt> parameter of the Txn-Token Request in determining the <tt>exp</tt> value of the resulting Txn-Token.</t>
          </li>
          <li>
            <t>The TTS MUST set the <tt>txn</tt> claim to a unique ID specific to this transaction.</t>
          </li>
          <li>
            <t>The TTS MAY set the <tt>iss</tt> claim of the Txn-Token to a value defining the entity that signed the Txn-Token.</t>
          </li>
          <li>
            <t>The TTS MUST evaluate the value specified in the <tt>scope</tt> parameter of the request to determine the <tt>scope</tt> claim of the issued Txn-Token.</t>
          </li>
          <li>
            <t>If a <tt>request_context</tt> parameter is present in the Txn-Token Request, the TTS SHOULD evaluate the content of the <tt>request_context</tt> parameter and may include claims in the <tt>rctx</tt> claim of the issued Txn-Token based on the <tt>request_context</tt> parameter. The TTS is authoritative for the set of claims made available in the <tt>rctx</tt> claim. The claims included in the <tt>rctx</tt> claim of the issued Txn-Token may be an exact match of those on the <tt>request_context</tt>, may be derived from the <tt>request_context</tt>, or independently asserted by the TTS.</t>
          </li>
          <li>
            <t>If a <tt>request_details</tt> parameter is present in the Txn-Token Request, the TTS SHOULD evaluate the content of the <tt>request_details</tt> parameter and may include claims in the <tt>tctx</tt> claim of the issued Txn-token based on the <tt>request_details</tt> parameter. The claims included in the <tt>tctx</tt> claim of the issued Txn-Token may be an exact match of those on the <tt>request_details</tt>, or may be derived from the <tt>request_details</tt>. The TTS is authoritative for the set of claims made available in the <tt>tctx</tt> claim and MAY include additional claims unrelated to the <tt>request_details</tt>.</t>
          </li>
        </ul>
        <t>The TTS MAY provide additional processing and verification that is outside the scope of this specification.</t>
      </section>
      <section anchor="txn-token-response">
        <name>Txn-Token Response</name>
        <t>A successful response to a Txn-Token Request MUST include the following values defined in <xref target="RFC8693"/>:</t>
        <ul spacing="normal">
          <li>
            <t>The <tt>token_type</tt> value MUST be set to <tt>N_A</tt> per guidance in OAuth 2.0 Token Exchange <xref target="RFC8693"/>.</t>
          </li>
          <li>
            <t>The <tt>access_token</tt> value MUST be the Txn-Token JWT.</t>
          </li>
          <li>
            <t>The <tt>issued_token_type</tt> value MUST bet set to <tt>urn:ietf:params:oauth:token-type:txn_token</tt>.</t>
          </li>
        </ul>
        <t>The Txn-Token Response MUST NOT include the <tt>refresh_token</tt> value.</t>
        <t>If the TTS responds with an error, the error response is as described in Section 5.2 of <xref target="RFC6749"/>.</t>
        <t><xref target="figtxtokenresponse"/> shows a non-normative example of a Txn-Token Response.</t>
        <figure anchor="figtxtokenresponse">
          <name>Example: Txn-Token Response</name>
          <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "token_type": "N_A",
  "issued_token_type": "urn:ietf:params:oauth:token-type:txn_token",
  "access_token": "eyJCI6IjllciJ9...Qedw6rx"
}
]]></sourcecode>
        </figure>
      </section>
      <section anchor="Mutual-Authentication">
        <name>Mutual Authentication of the Txn-Token Request</name>
        <t>A TTS and requesting workload MUST authenticate each other (mutual authentication). Workloads MUST authenticate the TTS to ensure that they do not disclose sensitive information, such as OAuth access tokens, to a rogue TTS. A TTS MUST authenticate a workload to ensure the workload is authorized to request a transaction token.</t>
        <t>Workloads SHOULD use the <tt>https</tt> scheme to secure the communication channel and authenticate the TTS. When using <tt>https</tt>, TLS certificates MUST be checked according to <xref section="4.3.4" sectionFormat="of" target="RFC9110"/>. At the time of this writing, TLS version 1.3 <xref target="RFC8446"/> is the most recent version.</t>
        <t>Workloads SHOULD authenticate to a Transaction Token Server using asymmetric (public-key based) methods or signed client authentication JWTs in accordance with <xref target="RFC7523"/>, which MAY be provisioned using mechanisms such as <xref target="SPIFFE"/> or other provisioning protocols.</t>
        <t>Examples of public-key based authentication include those defined in OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens <xref target="RFC8705"/>, Workload Authentication Using Mutual TLS <xref target="I-D.ietf-wimse-mutual-tls"/>, WIMSE Workload-to-Workload Authentication with HTTP Signatures <xref target="I-D.ietf-wimse-http-signature"/> and WIMSE Workload Proof Token <xref target="I-D.ietf-wimse-wpt"/>.</t>
      </section>
    </section>
    <section anchor="using-txn-tokens">
      <name>Using Txn-Tokens</name>
      <t>Txn-Tokens need to be communicated between workloads that depend upon them to authorize the request. Such workloads will often present HTTP <xref target="RFC9110"/> interfaces for being invoked by other workloads. This section specifies the HTTP header the invoking workload MUST use to communicate the Txn-Token to the invoked workload, when the invoked workload presents an HTTP interface. Note that the standard HTTP <tt>Authorization</tt> header MUST NOT be used because that may be used by the workloads for other purposes.</t>
      <section anchor="txn-token-http-header">
        <name>"Txn-Token" HTTP Header</name>
        <t>A workload that invokes another workload using HTTP and needs to present a Txn-Token to the invoked workload MUST use the HTTP Header "Txn-Token" to communicate the Txn-Token in the HTTP Request. The value of this header MUST be exactly one Txn-Token.</t>
      </section>
      <section anchor="txn-token-validation">
        <name>Txn-Token Validation</name>
        <t>A workload that receives a Txn-Token MUST evaluate the token for validity before authorizing it for activities supported by the workload. To validate the Txn-Token, the workload MUST:</t>
        <ul spacing="normal">
          <li>
            <t>Validate the Txn-Token JWS signature.</t>
          </li>
          <li>
            <t>Verify the <tt>aud</tt> claim identifies the Trust Domain of the workload.</t>
          </li>
          <li>
            <t>Verify the Txn-Token is not expired.</t>
          </li>
        </ul>
        <t>In addition, any outbound calls made by this workload MUST include the Txn-Token as it was received so that it is passed unmodified to any downstream workloads.</t>
        <t>Once the Txn-Token is determined to be valid, the workload MAY use any of the data contained in the Txn-Token to determine if the Txn-Token authorizes the requested activity. How the workload determines this authorization is out of scope for this specification.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <section anchor="lifetime">
        <name>Txn-Token Replay Risks</name>
        <t>A Txn-Token is not resistant to replay attacks. A long-lived Txn-Token therefore represents a risk if it is discovered by an attacker (e.g. if it is stored in a file), and then replayed. For this reason, a Txn-Token lifetime MUST be kept short and follow the guidance given in <xref target="txn-token-lifetime"/>.</t>
        <t>The use of a unique transaction identifier (<tt>txn</tt> claim) allows for discovery of Txn-Token replay as described in <xref target="uti"/>.</t>
      </section>
      <section anchor="uti">
        <name>Unique Transaction Identifier</name>
        <t>A Txn-Token conveys user identity and authorization context across workloads in a Call Chain. The <tt>txn</tt> claim is a unique identifier that, when logged by the TTS and workloads, enables discovery and auditing of successful and failed transactions. The <tt>txn</tt> value SHOULD be unique within the Trust Domain.</t>
        <t>A workload receiving a Txn-Token can store the <tt>txn</tt> value of each Txn-Token for the time window in which the Txn-Token would be accepted to prevent multiple uses of the same Txn-Token. Requests to the same workload for which the <tt>txn</tt> value has been seen before would be declined. When strictly enforced, such a single-use check provides a very strong protection against Txn-Token replay, but it may not always be feasible in practice, e.g., when multiple instances of the same workload receiving a Txn-Token have no shared state.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>OAuth refresh tokens are used to obtain access tokens as defined in <xref target="RFC6749"/> and MUST NOT be used to request transaction tokens (see <xref target="subject-token-types"/>. Since Txn-Tokens are short-lived (<xref target="txn-token-lifetime"/>), the Txn-Token response from the TTS MUST NOT include a refresh token (see <xref target="txn-token-response"/>).</t>
      </section>
      <section anchor="access-tokens">
        <name>Access Tokens</name>
        <t>When creating Txn-Tokens, the Txn-Token MUST NOT contain the access token presented to the external endpoint. If an access token is included in a Txn-Token, an attacker may extract the access token from the Txn-Token, and replay it to any Resource Server that can accept that access token. Txn-Token expiry does not protect against this attack since the access token may remain valid even after the Txn-Token has expired.</t>
        <t>Access tokens are typically short-lived but they can be invalidated before their expiration due to security or policy changes. In addition to standard access token validation, a TTS MAY, based on the risk profile of the deployment or transaction, verify whether the presented access token was invalidated. Where appropriate, implementations can use OAuth 2.0 Token Introspection <xref target="RFC7662"/> or similar mechanisms to obtain up-to-date token status from the authorization server.</t>
      </section>
      <section anchor="sec-sub-token-types">
        <name>Subject Token Types</name>
        <t>Identifies the token type of the <tt>subject_token</tt> which is generally a token the requesting workload received (e.g. an OAuth token or a SAML assertion). In the absence of an appropriate incoming token, the requesting service MAY use a self-signed JWT, an unsigned JSON object or any other format to represent the details of the requester and the transaction to the TTS.</t>
      </section>
      <section anchor="scope-processing">
        <name>Scope Processing</name>
        <t>The authorization model within a Trust Domain boundary may be quite different from the authorization model (e.g. OAuth scopes) used with clients external to the Trust Domain. This makes managing unintentional scope increase a critical aspect of the TTS. The TTS MUST ensure that the requested <tt>scope</tt> of the Txn-Token is equal or less than the scope(s) associated with the original <tt>subject_token</tt>.</t>
      </section>
      <section anchor="tts-discovery">
        <name>TTS Discovery</name>
        <t>A workload may use various mechanisms to determine the correct instance of a TTS with which to interact. Workloads MUST retrieve configuration information from a trusted source to minimize the risk of a threat actor providing malicious configuration data that points to an instance of a TTS under it's control which could be used to collect access tokens sent as part of the Transaction Token Request message.</t>
        <t>To mitigate this risk, workloads SHOULD authenticate the service providing the configuration information and verify the integrity of the configuration information. This ensures that no unauthorized entity can insert or alter configuration data. The workload SHOULD use Transport Layer Security (TLS) to authenticate the endpoint and secure the communication channel. Additionally, application-layer signatures or message authentication codes MAY be used to detect any tampering with the configuration information.</t>
      </section>
      <section anchor="workload-configuration-protection">
        <name>Workload Configuration Protection</name>
        <t>A deployment may include multiple instances of a TTS to improve resiliency, reduce latency and enhance scalability. A workload may be configured to access more than one instance of a TTS to ensure reliability or reduce latency for transaction token requests. The workload configuration should be protected against unauthorized addition or removal of TTS instances. An attacker may perform a denial of service attack or degrade the performance of a system by removing an instance of a TTS from the workload configuration.</t>
      </section>
      <section anchor="tts-authentication">
        <name>TTS Authentication</name>
        <t>A workload may accidently send a transaction token request to a service that is not a TTS, or an attacker may attempt to impersonate a TTS in order to gain access to transaction token requests which includes sensitive information like access tokens. To minimise the risk of leaking sensitive information like access tokens that are included in the transaction token request, the workload MUST ensure that it authenticates the TTS and only contacts instances of the TTS that is authorized to issue transaction tokens.</t>
      </section>
      <section anchor="tts-issuance-policies">
        <name>TTS Issuance Policies</name>
        <t>A TTS should be selective in which workloads can successfully request a Txn-Token. A TTS does not need to issue a Txn-Token to every workload that requests one. TTS token issuance decisions, including whether to issue a Txn-Token and the claims it contains, are typically subject to deployment-specific issuance policies and business logic. For example, an API gateway handling a user-initiated request might be permitted to obtain a Txn-Token carrying request context such as a transaction amount, while a downstream service in the same Call Chain might not. Such policies may vary based on system architecture, workload identity, transaction context, or risk, and may result in different Txn-Token contents or denial of issuance. The definition and management of these policies are deployment-specific and out of scope for this specification.</t>
      </section>
      <section anchor="tts-key-rotation">
        <name>TTS Key Rotation</name>
        <t>The TTS may need to rotate signing keys. When doing so, it MAY adopt the key rotation practices in Section 10.1.1 of <xref target="OpenIdConnect"/>.</t>
      </section>
      <section anchor="transaction-tokens-are-not-authentication-credentials">
        <name>Transaction Tokens Are Not Authentication Credentials</name>
        <t>A workload MUST NOT use a transaction token to authenticate itself to another workload, service or the TTS. Transaction tokens represents information relevant to authorization decisions and are not workload identity credentials. Authentication between the workload and the TTS is described in <xref target="Mutual-Authentication"/>.</t>
      </section>
      <section anchor="transaction-tokens-are-not-oauth-20-access-tokens">
        <name>Transaction Tokens Are Not OAuth 2.0 Access Tokens</name>
        <t>A workload MUST NOT use a transaction token as an OAuth 2.0 Access Token. An OAuth 2.0 Access Token represents a grant of authority to a client, a transaction token represents the context of a specific transaction. The separation of the transaction token from the OAuth 2.0 Access Token is a deliberate design choice as described in <xref target="introduction"/>.</t>
        <t>Transaction tokens support the principle of least privilege since they are narrowly scoped to a single transaction and have short lifetimes. This makes them less susceptible to broad replay attacks than the longer-lived access tokens. By maintaining a distinct token type, the protocol ensures that context propagation while minimizing the risk of lateral access if a transaction token is intercepted within the Trust Domain. This separation also reduces the need for including transaction context in the access token, reducing token size.</t>
        <t>Using a dedicated HTTP header from the <tt>Authorization: Bearer</tt> header for transaction tokens allows services to distinguish between an access token, which carries authorization delegation information, and the transaction token, which carries transaction context.</t>
      </section>
      <section anchor="unknown-subjecttoken-scope">
        <name>Unknown <tt>subject_token</tt> scope</name>
        <t>If the scope associated with a <tt>subject_token</tt> cannot be determined from the token or another trusted source, the TTS cannot ensure that the requested scope does not expand the authorization represented by that token. The TTS MUST reject the Txn-Token Request and MUST NOT treat an unknown scope as unconstrained.</t>
      </section>
      <section anchor="txn-token-as-a-subjecttoken">
        <name>Txn-Token as a <tt>subject_token</tt></name>
        <t>A TTS MUST exercise caution when receiving a Txn-token as a <tt>subject_token</tt>. Any Txn-Token issued in response to such a request is effectively a replacement Txn-Token. Replacing Txn-Tokens potentially negates the primary purpose of having Txn-Tokens. When issuing replacement Txn-Tokens, a TTS:</t>
        <ul spacing="normal">
          <li>
            <t>MAY enable modifications to asserted values that reduce the scope of permitted actions.</t>
          </li>
          <li>
            <t>MAY enable additional asserted values.</t>
          </li>
          <li>
            <t>MUST NOT enable modification to asserted values that expand the scope of permitted actions.</t>
          </li>
          <li>
            <t>MUST NOT modify <tt>txn</tt>, <tt>sub</tt>, and <tt>aud</tt> values of the Txn-Token in the request.</t>
          </li>
          <li>
            <t>MUST NOT issue a new Txn-Token when the Txn-Token being replaced has expired.</t>
          </li>
          <li>
            <t>MAY issue a replacement Txn-Token with a lifetime exceeding the lifetime of the input Txn-Token, subject to the policy of the TTS.</t>
          </li>
          <li>
            <t>SHOULD limit the number of times a Txn-Token is replaced if it allows extending the lifetime beyond that of the input Txn-Token to reduce replay risks.</t>
          </li>
          <li>
            <t>MUST maintain the Call Chain of workloads that requested the Txn-Token being replaced in the subsequently issued Txn-Token. The mechanism for maintaining this Call Chain is out of scope for this specification.</t>
          </li>
        </ul>
      </section>
      <section anchor="determining-signing-keys">
        <name>Determining signing keys</name>
        <t>The <tt>iss</tt> claim may be used to identify the signer of the Txn-Token in cases where the signing keys are not predetermined.</t>
      </section>
    </section>
    <section anchor="preserving-transaction-context-across-trust-domains">
      <name>Preserving transaction context across Trust Domains</name>
      <t>Txn-Tokens are only valid within the Trust Domain identified by the <tt>aud</tt> claim as defined in <xref target="txn-token-claims"/>. When a workload needs to access a resource in a different Trust Domain to complete a transaction, and the identity and authorization context from the Txn-Token needs to be preserved, it SHOULD use OAuth Identity and Authorization Chaining Across Domains <xref target="I-D.ietf-oauth-identity-chaining"/>.</t>
    </section>
    <section anchor="Privacy">
      <name>Privacy Considerations</name>
      <section anchor="handling-of-personal-information">
        <name>Handling of Personal Information</name>
        <t>Claims contained within transaction tokens may be considered personal information (PI) or personally identifying information (PII) in some jurisdictions and if so their values should be protected accordingly. For example, requester IP address (req_ip) is often considered personal information and therefore must be handled according to jurisdictional requirements.</t>
      </section>
      <section anchor="logging">
        <name>Logging</name>
        <t>Complete Txn-Tokens MUST NOT be logged verbatim. This is in order to prevent replay of tokens or leakage of PII or other sensitive information via log files. A hash of the Txn-Token may be logged to allow for correlation with the log files of the TTS that records issued tokens. Alternatively the JWS payload of a Txn-Token may be logged after the signature has been removed. If the Txn-Token contains PII, then care should be taken in logging the content of the Txn-Token so that the PII does not get logged.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>This specification registers the following token type identifiers to the "OAuth URI" subregistry of the "OAuth Parameters" <xref target="IANA.OAuth.Parameters"/> registry. It also registers the following claims defined in Section <xref target="txn-token-claims"/> in the IANA JSON Web Token Claims Registry defined in <xref target="RFC7519"/>. It also registers the Media Type <xref target="IANA.MediaTypes"/> "txntoken+jwt" as defined in the section <xref target="txn-token-header"/>.</t>
      <section anchor="oauth-uri-subregistry-contents">
        <name>OAuth URI Subregistry Contents</name>
        <ul spacing="normal">
          <li>
            <t>URN: urn:ietf:params:oauth:token-type:txn_token
            </t>
            <ul spacing="normal">
              <li>
                <t>Common Name: Transaction Token</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Specification Document Section <xref target="txn-token-request"/> of this specification</t>
              </li>
            </ul>
          </li>
          <li>
            <t>URN: urn:ietf:params:oauth:token-type:self_signed
            </t>
            <ul spacing="normal">
              <li>
                <t>Common Name: Token type for Self-signed JWT</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Specification Document: Section <xref target="self-signed-subject-token-type"/> of this specification</t>
              </li>
            </ul>
          </li>
          <li>
            <t>URN: urn:ietf:params:oauth:token-type:unsigned_json
            </t>
            <ul spacing="normal">
              <li>
                <t>Common Name: Token type for Unsigned JSON Object</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Specification Document: Section <xref target="unsigned-json-subject-token-type"/> of this specification</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="jwt-claims-registry-contents">
        <name>JWT Claims Registry Contents</name>
        <ul spacing="normal">
          <li>
            <t>Claim Name: <tt>tctx</tt>
            </t>
            <ul spacing="normal">
              <li>
                <t>Claim Description: The transaction authorization details</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Specification Document: Section <xref target="txn-token-claims"/> of this specification</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Claim Name: <tt>rctx</tt>
            </t>
            <ul spacing="normal">
              <li>
                <t>Claim Description: The requester context</t>
              </li>
              <li>
                <t>Change Controller: IETF</t>
              </li>
              <li>
                <t>Specification Document: Section <xref target="txn-token-claims"/> of this specification</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="iana-media-type-registration-contents">
        <name>IANA Media Type Registration Contents</name>
        <t>The following entry will be proposed using the IANA Media Type registration <xref target="IANA.MediaTypes"/> form.</t>
        <ul spacing="normal">
          <li>
            <t>Type Name: application</t>
          </li>
          <li>
            <t>Subtype Name: txntoken+jwt</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Required Parameters: N/A.</t>
          </li>
          <li>
            <t>Optional Parameters: N/A.</t>
          </li>
          <li>
            <t>Encoding Considerations: 7-bit text</t>
          </li>
          <li>
            <t>Security Considerations:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>The media type is used to identify JWTs that may be used as Transaction Tokens. It is a piece of data, and may not contain executable content.</t>
              </li>
              <li>
                <t>Transaction Tokens are short-lived tokens used within a trusted environment, so there are no privacy considerations. Transaction Tokens are unmodifiable tokens, which need integrity protection.</t>
              </li>
              <li>
                <t>The JWTs representing Transaction Tokens are signed, and therefore are integrity protected. A recipient of a Transaction Token must verify the signature on the Transaction Token before using it.</t>
              </li>
              <li>
                <t>There are no additional security considerations specific to the use of JWTs as Transaction Tokens.</t>
              </li>
              <li>
                <t>The Transaction Tokens format does not require the use of links within the token. If links are used by specific instances of Transaction Tokens, then their interpretation is usage specific.</t>
              </li>
            </ol>
          </li>
          <li>
            <t>Interoperability Considerations: Transaction Tokens inherit all interoperability properties of JWTs.</t>
          </li>
          <li>
            <t>Published Specification: this document (when published).</t>
          </li>
          <li>
            <t>Application Usage: Any application supporting the use of JWTs.</t>
          </li>
          <li>
            <t>Fragment Identifier Consideration: N/A.</t>
          </li>
          <li>
            <t>Restrictions on Usage: Any application supporting the use of JWTs.</t>
          </li>
          <li>
            <t>Intended Usage: Common</t>
          </li>
          <li>
            <t>Contact Person: Atul Tulshibagwale</t>
          </li>
        </ul>
      </section>
      <section anchor="http-header">
        <name>HTTP Header</name>
        <t>The header name <tt>Txn-Token</tt> is proposed to be added to the HTTP Field Name Registry <xref target="IANA.HTTP.FieldNames"/> as an unstructured Header Field. This header is defined in the section <xref target="txn-token-http-header"/>. The following entry will be proposed in the HTTP Field Name Registry. Note that this is an unstructured field, therefore the value of the Type field is left empty as shown below:</t>
        <ul spacing="normal">
          <li>
            <t>Field Name: <tt>Txn-Token</tt></t>
          </li>
          <li>
            <t>Type:</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Specification Document: Section <xref target="txn-token-http-header"/> of this document</t>
          </li>
          <li>
            <t>Comment: The <tt>Authorization</tt> header cannot be used for Txn-tokens because that header may be used for service-to-service authorization, and the services may simultaneously require the use of Txn-tokens to convey detailed immutable information such as user identity and details of fine-grained authorization that are included in the Txn-token.</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="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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="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="RFC7662">
          <front>
            <title>OAuth 2.0 Token Introspection</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <date month="October" year="2015"/>
            <abstract>
              <t>This specification defines a method for a protected resource to query an OAuth 2.0 authorization server to determine the active state of an OAuth 2.0 token and to determine meta-information about this token. OAuth 2.0 deployments can use this method to convey information about the authorization context of the token from the authorization server to the protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7662"/>
          <seriesInfo name="DOI" value="10.17487/RFC7662"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="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="RFC8417">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <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="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9111">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC9651">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </reference>
        <reference anchor="IANA.HTTP.FieldNames" target="https://www.iana.org/assignments/http-fields/">
          <front>
            <title>HTTP Authentication Schemes</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author initials="" surname="IANA" fullname="IANA">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.MediaTypes" target="http://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author initials="" surname="IANA" fullname="IANA">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="OpenIdConnect" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura" fullname="Nat Sakimura">
              <organization>NRI</organization>
            </author>
            <author initials="J." surname="Bradley" fullname="John Bradley">
              <organization>Ping Identity</organization>
            </author>
            <author initials="M." surname="Jones" fullname="Mike Jones">
              <organization>Microsoft</organization>
            </author>
            <author initials="B. de" surname="Medeiros" fullname="B. de Medeiros">
              <organization>Google</organization>
            </author>
            <author initials="C." surname="Mortimore" fullname="Chuck Mortimore">
              <organization>Salesforce</organization>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8176">
          <front>
            <title>Authentication Method Reference Values</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>The "amr" (Authentication Methods References) claim is defined and registered in the IANA "JSON Web Token Claims" registry, but no standard Authentication Method Reference values are currently defined. This specification establishes a registry for Authentication Method Reference values and defines an initial set of Authentication Method Reference values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8176"/>
          <seriesInfo name="DOI" value="10.17487/RFC8176"/>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io/docs/latest/spiffe-about/overview/">
          <front>
            <title>Secure Production Identity Framework for Everyone</title>
            <author>
              <organization>Cloud Native Computing Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of the Bundeswehr Munich</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as
   software executing for a specific purpose, potentially comprising one
   or more running instances.  This document discusses an architecture
   for designing and standardizing protocols and payloads for conveying
   workload identity and security context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-08"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-mutual-tls">
          <front>
            <title>Workload Authentication Using Mutual TLS</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones to complex multi-service, multi-cloud, multi-tenant
   deployments.  This document profiles a workload authentication based
   on X.509 workload identity certificates using mutual TLS (mTLS).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-mutual-tls-02"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-http-signature">
          <front>
            <title>WIMSE Workload-to-Workload Authentication with HTTP Signatures</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <date day="20" month="July" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from the
   most basic ones to complex multi-service, multi-cloud, multi-tenant
   deployments.  This document defines one of the mechanisms to provide
   workload authentication, using HTTP Signatures.  While only
   applicable to HTTP traffic, the protocol provides end-to-end
   protection of requests (and optionally, responses), even when service
   traffic is not end-to-end encrypted, that is, when TLS proxies and
   load balancers are used.  Authentication is based on the Workload
   Identity Token (WIT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-http-signature-05"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-wpt">
          <front>
            <title>WIMSE Workload Proof Token</title>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   The WIMSE architecture defines authentication and authorization for
   software workloads in a variety of runtime environments, from basic
   deployments to complex multi-service, multi-cloud, multi-tenant
   systems.  This document specifies the Workload Proof Token (WPT), a
   mechanism for workloads to prove possession of the private key
   associated with a Workload Identity Token (WIT).  The WPT is a signed
   JWT that binds the workload's authentication to a specific HTTP
   request, providing application-level proof of possession for
   workload-to-workload communication.  This specification is designed
   to work alongside the WIT credential format defined in draft-ietf-
   wimse-workload-creds and can be combined with other WIMSE protocols
   in multi-hop call chains.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-wpt-01"/>
        </reference>
      </references>
    </references>
    <?line 699?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank John Bradley, Kelley Burgin, Brian Campbell, Naveen CM, Andrii Deinega, Apoorva Deshpande, Daniel Fett, Evan Gilman, Joseph Heenan, Watson Ladd, Kai Lehmann, Jeff Lombardo, Dan Moore, Steinar Noem, Ashay Raut, Justin Richer, Joe Salowey, Dean Saxe, Arndt Schwenkschuster, Dag Sneeggen, Yaron Scheffer, Orie Steele, Dmitry Telegin, and Hannes Tschofenig for supporting, commenting, contributing and providing feedback on this specification.</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-10">
        <name>Since Draft 10</name>
        <ul spacing="normal">
          <li>
            <t>Fixed typo in document history</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-09">
        <name>Since Draft 09</name>
        <ul spacing="normal">
          <li>
            <t>Editorial text describing claims</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-08">
        <name>Since Draft 08</name>
        <ul spacing="normal">
          <li>
            <t>Added document history for changes from 07 to 08</t>
          </li>
          <li>
            <t>Added TTS Issuance Guidance policies (see issue https://github.com/oauth-wg/oauth-transaction-tokens/issues/321)</t>
          </li>
          <li>
            <t>Provide guidance on cross-domain access (see https://github.com/oauth-wg/oauth-transaction-tokens/issues/326)</t>
          </li>
          <li>
            <t>Added security consideration for invalidated tokens (see issue https://github.com/oauth-wg/oauth-transaction-tokens/issues/321)</t>
          </li>
          <li>
            <t>Added doublequotes around the "Txn-Token" header name to distinguish it from the usage of Txn-Token as a name for Transaction Tokens.</t>
          </li>
          <li>
            <t>Added Brian Campbell as a contributor.</t>
          </li>
          <li>
            <t>Renamed Requester-Context section to Request Context and removed specification of <tt>rctx</tt> specific claims (see issue https://github.com/oauth-wg/oauth-transaction-tokens/issues/323)</t>
          </li>
          <li>
            <t>Clarified how multiple workloads are represented in the <tt>req_wl</tt> claim (see issue https://github.com/oauth-wg/oauth-transaction-tokens/issues/331)</t>
          </li>
          <li>
            <t>Clarify transaction tokens vs OAuth 2.0 access tokens</t>
          </li>
          <li>
            <t>Merged Overview and Introduction sections (see https://github.com/oauth-wg/oauth-transaction-tokens/issues/327)</t>
          </li>
          <li>
            <t>Changed additionally defined request parameters from OPTIONAL to RECOMMENDED see https://github.com/oauth-wg/oauth-transaction-tokens/issues/332)</t>
          </li>
          <li>
            <t>Consistent cappitalisation of trust domain and call chain (see https://github.com/oauth-wg/oauth-transaction-tokens/issues)</t>
          </li>
          <li>
            <t>Updated JWT body claims from OPTIONAL to RECOMMENDED (see https://github.com/oauth-wg/oauth-transaction-tokens/issues/330)</t>
          </li>
          <li>
            <t>Clarified TTS behaviour wrt txtx and rctx, fixed examples (see https://github.com/oauth-wg/oauth-transaction-tokens/issues/349)</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-07">
        <name>Since Draft 07</name>
        <ul spacing="normal">
          <li>
            <t>Fixed author affiliation (https://github.com/oauth-wg/oauth-transaction-tokens/pull/318)</t>
          </li>
          <li>
            <t>Added details to the benefits section (https://github.com/oauth-wg/oauth-transaction-tokens/pull/316)</t>
          </li>
          <li>
            <t>Updated the definition of the <tt>req_wl</tt> claim (https://github.com/oauth-wg/oauth-transaction-tokens/pull/315)</t>
          </li>
          <li>
            <t>Editorial changes for grammar and clarity (https://github.com/oauth-wg/oauth-transaction-tokens/pull/307, https://github.com/oauth-wg/oauth-transaction-tokens/pull/308)</t>
          </li>
          <li>
            <t>Standardized terminology throughout the document (https://github.com/oauth-wg/oauth-transaction-tokens/pull/304)</t>
          </li>
          <li>
            <t>Revised handling of personal information in Privacy section (hhttps://github.com/oauth-wg/oauth-transaction-tokens/pull/306/)</t>
          </li>
          <li>
            <t>Clarified token replay risks (https://github.com/oauth-wg/oauth-transaction-tokens/pull/305)</t>
          </li>
          <li>
            <t>Fixed section numbering issue (https://github.com/oauth-wg/oauth-transaction-tokens/issues/352)</t>
          </li>
          <li>
            <t>Made <tt>iss</tt> optional in all circumstances, and added Seurity Consideration that provides guideance on using it when signing keys are not predetmined.</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-06">
        <name>Since Draft 06</name>
        <ul spacing="normal">
          <li>
            <t>Remove contradiction in "request_details" description and simplify normative langugage <eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/228">Clarify claim usage</eref>.</t>
          </li>
          <li>
            <t>Consistency in terms of expectations of input token (https://github.com/oauth-wg/oauth-transaction-tokens/issues/224)</t>
          </li>
          <li>
            <t>Replace StringOrURI with string <eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/195">Replace StringOrURI with String</eref></t>
          </li>
          <li>
            <t>Include token theft as a threat to be mitigated <eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/207">Consider information disclosure as a benefit</eref></t>
          </li>
          <li>
            <t>Remove definition of Authorization Context <eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/192">Be more specific on Authorization Context</eref></t>
          </li>
          <li>
            <t>Clarify text on use of empty parameter: https://github.com/oauth-wg/oauth-transaction-tokens/issues/235</t>
          </li>
          <li>
            <t>Clarify that workloads should ensure it is communicating with a legitimate instance of a transaction token service (https://github.com/oauth-wg/oauth-transaction-tokens/issues/233)</t>
          </li>
          <li>
            <t>Clarify need to validate signature on subject_token if it is signed.</t>
          </li>
          <li>
            <t>Clarify role of transaction tokens in call chain (https://github.com/oauth-wg/oauth-transaction-tokens/issues/203)</t>
          </li>
          <li>
            <t>Revise normative langugage for enforcement of token expiry (https://github.com/oauth-wg/oauth-transaction-tokens/issues/210)</t>
          </li>
          <li>
            <t>Remove exp field from unsigned token (https://github.com/oauth-wg/oauth-transaction-tokens/issues/201)</t>
          </li>
          <li>
            <t>Change document category from informational to standards track (https://github.com/oauth-wg/oauth-transaction-tokens/issues/169)</t>
          </li>
          <li>
            <t>Clarify that <tt>txn</tt>should remain unchanged when included in a replacement transaction token.</t>
          </li>
          <li>
            <t>Editorial updates (https://github.com/oauth-wg/oauth-transaction-tokens/issues/204)</t>
          </li>
          <li>
            <t>Removed the requirement to encode parameters in based64url format</t>
          </li>
          <li>
            <t>Rename the <tt>purpose</tt> claim to <tt>scope</tt></t>
          </li>
          <li>
            <t>Enhanced the description of the <tt>sub</tt> claim addressing issue #225</t>
          </li>
          <li>
            <t>Removed references to replacing transaction tokens, and added a note in the Security Considerations to clarify replacement concerns.</t>
          </li>
          <li>
            <t>Editorial updates identified by Dan Moore (https://github.com/oauth-wg/oauth-transaction-tokens/issues/236)</t>
          </li>
          <li>
            <t>Editorial comments from Joe Saloway (https://github.com/oauth-wg/oauth-transaction-tokens/issues/219)</t>
          </li>
          <li>
            <t>Clarify request_details (https://github.com/oauth-wg/oauth-transaction-tokens/issues/197)</t>
          </li>
          <li>
            <t>Add normative language for processing Txn-Tokens (https://github.com/oauth-wg/oauth-transaction-tokens/issues/270)</t>
          </li>
          <li>
            <t>Strengthen normative language for Txn-Token Requests (https://github.com/oauth-wg/oauth-transaction-tokens/issues/209)</t>
          </li>
          <li>
            <t>Aligned with WIMSE terminology (https://github.com/oauth-wg/oauth-transaction-tokens/issues/213)</t>
          </li>
          <li>
            <t>Updated Acknowledgement section (https://github.com/oauth-wg/oauth-transaction-tokens/issues/260)</t>
          </li>
          <li>
            <t>Rewrote the 'Handling of Personal Information' section of Privacy Considerations (https://github.com/oauth-wg/oauth-transaction-tokens/issues/290)</t>
          </li>
          <li>
            <t>Removed text related to replacement transaction tokens</t>
          </li>
          <li>
            <t>Updated references to call chain to be capitalized and fixed some definitions (https://github.com/oauth-wg/oauth-transaction-tokens/issues/284)</t>
          </li>
          <li>
            <t>Update definition of <tt>req_wl</tt> claim (https://github.com/oauth-wg/oauth-transaction-tokens/issues/311)</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-05">
        <name>Since Draft 05</name>
        <ul spacing="normal">
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/173">Strengthened prohibition on expanding TraT scope</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/170">Clarified that TraTs can exceed request token lifetime, but cannot use expired tokens in request</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/160">Improved abstract for clarity</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/176">Clarified that the HTTP header Txn-Token is unstructured</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/357">Scope Processing: behavior undefined when subject_token has no scope claim</eref></t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-04">
        <name>Since Draft 04</name>
        <ul spacing="normal">
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/153">Clarified Transaction Token Service discovery</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/148">Language improvements</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/150">Renamed azd claim to tctx claim</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/151">Fixed terminology captialization</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/156">Added key rotation guidance</eref></t>
          </li>
          <li>
            <t><eref target="https://github.com/oauth-wg/oauth-transaction-tokens/pull/157">Clarified text around external vs internal invocation</eref></t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="B." surname="Campbell" fullname="Brian Campbell">
        <organization>Ping Identity</organization>
        <address>
          <email>bcampbell@pingidentity.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
pmQY7NFj0EXQnM5khp5E+CECPzyue7OIChAic4yG21blkYRp/ulPfwLgHyUJ
DFR1OHhpF//z617wz6/x2R7HNtVfddyf//Gvf/6vUfAPPOhd/7oT/IL/Opuw
fRC89ruqWj9Sra2q61rv686tjiWt/4ObW9vU/NvW12rmbbu14VUnanQE//0v
4eOD6FJeHV0zSmPrNs6PX59memcbr61DZsPrWy/+ViuM7Arrj6MoDx89xEf4
x+GNn37CWP9e9hIQtPPxOLoX0gKO9vt6i4lHSzzHQLkbtq46nd2+xytnDWrY
r0bOtdnQObx80TBHqehl1kw6e22jNWwZ7GQTTTUcjeThbqCbbCsZuN/Z75MY
CE2rMpDMiCl7C7JzSmifdcMuTNZD2KqsVPYsa3cq+p2D0LKmdlBkC5wDcUdk
31kzois05oQic1yGi+93HmI0U81RAR3bwI5GtBhqcqRKxfONSjL10u8c9pFd
gp5OxubCBPafuvqt4iqUOh+e1HDt/G4IR0rnPvJDBaM0d/GzR+l3HilIG6Vk
D6OIRxkuFqtEaeyptoTysc3fIjTIUqdOYvSbSSkHnUHb2aKdMjM2wJCb1kyn
qG+LJor4K/rEaFkUhqyyofIMsuCSQhMXwJT5U69pk/hPYjx87syd2ikOoM7m
oaYltmFSDRTzNpm6xUtFbh7C/yCyra7ku/lwiN8sL9F6bI868GrQqZOlum5L
bpdQIhRS/vrn//bXP//jrf/979hqz9LcT2t6Pf3+Xzd38Zf/96kcJaq9bpV7
NjIcfH6d3KNb/+/a1P7HbbbkBg755/Dr/6N24p8bff1TdE3T6//9p3b+3xAr
DvyLQKKqA8Jf/kX9/L+fCgh/MynhUzf4lrsEj/7yL+0vPkEqw85z6Omfbz9q
y4sveTL/8K93Lv9w3ancBLtN4c4xF5HvbsGUULo7ZdYyTuJpEc/RS3xpuhEQ
eFCgH/aO2J1pBYSYLBQfPypdEwNPPh6XFVDYr7d2RV4ceII/Rh8GyFqmdPbw
jC1eAceztt82ay+xK8+KA46WzNluwwIO6PLTKUpde8y/WoQpb9E2pWUZbFx1
gTgZ8mV2wmmTdMPloGMar3G3B+KiD2rOF1ZY9h6ZmsfdGXlLJ7U6qawMBU0b
ep/9jeVaMfBUTdcL7coIp5JtkD4/TbINzCLPaZ87g9BHGEffnb1+FX1vhuIW
1TEo3keG5kL/JRqwYgmtkixSAGpanDfDWTeu33Xyw11SNhXbStxMjkkmRJ+N
JFBqR8SMHl1ZtPNfOWfp+2q9eG+b+nB/61qwPiDcOx/Ng33RZKD5h4yG+vVP
q+o92rh+a9ZRITGoznMCi8Z1YdCH2MOHnHGRFyr23ZpGGRnfXyTj5swQ/9Hc
VH2gYWWBV3weWZ71XAYwxhxhcJmdhNqi0EbOkttPIB12PhKR3II92TqG/6m1
bXX5VZxO8dXbs72Hh/YZTBSfOedwAbvfg7Vuda404QymbOmmhIOqrHiZJNI2
Odgn+XgdnaRxMi+D0x3Royt2bA7xo5rxn4EUelCQ2Y9OFQ2haM5hkrnjMh8S
lqGxGQ9Ah5+Zlf1pI2laQwzCKIShAYhGAu3nhA4XGV7TIukb1Y9r+0dVbZQs
UH9q+Do4GmCaYdQHGcm5Twr9HefsSswwTwerOQAgvU/K8j0GydmIZMYIfMpt
eTFuNhq/E56rw824rNs1m1byMNHAdy064/t4OXYDu+iqGv5w3xdZvspoBXFF
K7Ch28yHODoAE+xaXV8bV4U94iRqPaLzFmfV3dCsKzvP8L++IdyiJc4iBBDr
9JNA1gVpf5Iv0OzaIl3bNuJ6zIdFuJ5n6Ntaf87WAOaFXQ0AnpKflyEv82Sg
1tsZZ/tHe/09HJhDdw52j7jzcjnctO/oSmE6bD13SQY4gE6y1tBBBVd2zIP+
rhrVUoJzR8edK5nXo2JELduWoXh3w8DkVzmmC7/LUsxcDrO02eVHi5O1wKLw
cOOyzEcsJZJ8UoWYRzuCjqImdHMkjOssOC6/XFqsi43iOUaSdGoX7YJVfF8i
PTpgIiGIY+ACdKes3kog2hspeG6ZSDj8i/J+15xfiGDqbCgSHPEchb1GmEwE
TAGjJCgnFIf7+JG6Y6J/dYXgOKo+yPa4VAsASRI1cvHokuPPEnuRHyQandHH
iWcb888+YYayET35gmZZ3HKWocwTZqPVYLA9Tvz209TFa4Kpmp9/XKUBxCFp
Qp8dEF+GGdYqwjCw0IurZleLP7oH/PxMQe/He/pIiYsL0MsHEjXKGSouIFVF
sDJ6BSGxCRvjktEyjYtaGpmF/NKH/SoEkLTVBviXnv6wYNUasDvPxyZttG9k
LPIuinUvTSoKQEo5d7sEmMxskZ4xZvCT0RF9nl0bOOvkURsSzNuCcZGw+xQO
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
FbW7lKxpNjRd5qMvsC6ESPrn/wPmY0SGiOcAAA==

-->

</rfc>
