<?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-10" 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-10"/>
    <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="29"/>
    <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-08">
        <name>Since Draft 08</name>
        <ul spacing="normal">
          <li>
            <t>Editorial text describing claims</t>
          </li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-08-1">
        <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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
f3+bKaNA5wAA

-->

</rfc>
