<?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.31 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-transaction-tokens-08" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Txn-Tokens">Transaction Tokens</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-08"/>
    <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="March" day="02"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <keyword>Workloads</keyword>
    <keyword>OAuth</keyword>
    <keyword>JWT</keyword>
    <keyword>token exchange</keyword>
    <abstract>
      <?line 94?>
<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 96?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Modern computing architectures often use multiple independently running components called workloads. In many cases, external invocations through interfaces such as APIs result in a number of internal workloads being invoked in order to process the external invocation. These workloads often run in virtually or physically isolated networks. These networks and the workloads running within their perimeter may be compromised by attackers through software supply chain, privileged user compromise or other attacks. Workloads compromised through external attacks, malicious insiders or software errors can cause any or all of the following unauthorized actions:</t>
      <ul spacing="normal">
        <li>
          <t>Invocation of workloads in the network without any explicit transaction invocation being present.</t>
        </li>
        <li>
          <t>Arbitrary user impersonation.</t>
        </li>
        <li>
          <t>Parameter modification or augmentation.</t>
        </li>
        <li>
          <t>Theft of tokens, such as OAuth access tokens, used to call external interfaces and passed to internal workloads to convey authorization context.</t>
        </li>
      </ul>
      <t>The result of these actions are unauthorized access to resources.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <t>Transaction Tokens (Txn-Tokens) reduce the risks from such attacks or spurious invocations. A valid Txn-Token indicates a valid transaction invocation. Note that while many transactions are initiated via an external event (e.g. internet-facing API invocation) other transactions are initiated from within the trusted domain. Txn-Tokens apply to both externally triggered and internally invoked transactions and ensure that the user or workload identity that made the request is preserved throughout subsequent workload invocations.</t>
      <t>They preserve any context such as:</t>
      <ul spacing="normal">
        <li>
          <t>Parameters of the original call</t>
        </li>
        <li>
          <t>Environmental factors, such as IP address of the original caller</t>
        </li>
        <li>
          <t>Any context that needs to be preserved in the Call Chain. This includes information that was not in the original request to the external endpoint.</t>
        </li>
      </ul>
      <t>Cryptographically protected Txn-Tokens ensure that downstream workloads cannot make unauthorized modifications to such information and cannot make spurious calls.</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:
* The identification of the trust domain in which the issued Txn-Token is valid.
* A token which identifies the subject of the Txn-Token (e.g. an OAuth access token, a self-issued JWT, etc).
* The desired authorization scope for the issued Txn-Token.</t>
        <t>Additional contextual information MAY be provided such as:
* Parameters that are required to be integrity protected for the duration of this call.
* 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>
        <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 transaction token body follows the JWT format and includes existing
JWT claims as well as defines new claims. These claims are described below:</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. The <tt>iss</tt> claim MUST be used in cases where the signing keys are not predetermined.</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.</t>
          </dd>
          <dt><tt>tctx</tt>:</dt>
          <dd>
            <t>OPTIONAL A JSON object that contains values that remain immutable throughout the Call Chain.</t>
          </dd>
          <dt><tt>rctx</tt>:</dt>
          <dd>
            <t>OPTIONAL A JSON object that describes the environmental context of the requested transaction.</t>
          </dd>
          <dt><tt>req_wl</tt>:</dt>
          <dd>
            <t>REQUIRED. A string value that identifies the workload that requested the Txn-Token. The value SHOULD contain a single workload identifier. In some circumstances, the value MAY contain multiple workload identifiers with each identifier separated by a comma (,).</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="requester-context">
          <name>Requester Context</name>
          <t>The Txn-Token SHOULD contain an <tt>rctx</tt> claim. This MAY include the IP address information of the originating requestor, as well as information about the computational entity that requested the Txn-Token and contextual attributes of the originating request itself.</t>
          <t>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. The following claims are defined so that if they are included, they have the following meaning:</t>
          <ul spacing="normal">
            <li>
              <t><tt>req_ip</tt> The IP address of the requester. This MAY be for the end-user or a process that initiated the Transaction.</t>
            </li>
            <li>
              <t><tt>authn</tt> The authentication method used to identify the requester. Its value is a string that uniquely identifies the method used.</t>
            </li>
          </ul>
          <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", // env context of external call
      "authn": "urn:ietf:rfc:6749" // env context of external call
    }
}
]]></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": "urn:ietf:rfc:6749", // env context of the external call
  },
  "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 RECOMMENDED to be present in a Txn-Token Request:</t>
        <ul spacing="normal">
          <li>
            <t><tt>request_context</tt> OPTIONAL. This parameter contains a JSON object which represents the context of this transaction.</t>
          </li>
          <li>
            <t><tt>request_details</tt> OPTIONAL. 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>txct</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=http%3A%2F%2Ftrust-domain.example
&scope=finance.watchlist.add
&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%2F
%2F%20env%20context%20of%20external%20call%0A%20%20%20%20%20%20%22authn%22%3A%20%22urn
%3Aietf%3Arfc%3A6749%22%2C%20%2F%2F%20env%20context%20of%20external%20call%0A%20%20%20
%20%20%20%22workload3.trust-domain.example%22%20%5D%0A%20%20%20%20%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). 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. This claim MUST be omitted if not set.</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 data SHOULD be added to the <tt>rctx</tt> object of the Txn-Token.</t>
          </li>
          <li>
            <t>If a <tt>request_details</tt> parameter is present in the Txn-Token Request, then the TTS SHOULD propagate the data from the <tt>request_details</tt> object into the claims in the <tt>tctx</tt> object as authorized by the TTS authorization policy for the requesting client.</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 <tt>Txn-Token</tt> 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>
      </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) identified in the <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-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 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 remove any of the existing requesting workload identifiers from the <tt>req_wl</tt> claim.</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 append the workload identifier of the workload requesting the replacement to the <tt>req_wl</tt> claim using the character <tt>,</tt> as the separator between individual workload identifiers.</t>
            </li>
          </ul>
        </section>
      </section>
    </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: Txn-Token</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="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="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="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>CyberArk</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 Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="30" month="September" year="2025"/>
            <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 a
   running instance of software executing for a specific purpose.  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-06"/>
        </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>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <date day="2" month="November" year="2025"/>
            <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-00"/>
        </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>CyberArk</organization>
            </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <date day="8" month="January" 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-01"/>
        </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="3" month="November" year="2025"/>
            <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-00"/>
        </reference>
      </references>
    </references>
    <?line 682?>

<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 ]]
* 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>.
* Editorial review fixing spelling, grammer and other non-normative wording changes
* Resolve micoservice vs workload issue (https://github.com/oauth-wg/oauth-transaction-tokens/issues/309)</t>
      <section numbered="false" anchor="since-draft-06">
        <name>Since Draft 06</name>
        <ul spacing="normal">
          <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>
        </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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
