<?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.29 (Ruby 3.4.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-transaction-tokens-07" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="Txn-Tokens">Transaction Tokens</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-transaction-tokens-07"/>
    <author initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
      <organization>SGNL</organization>
      <address>
        <email>atul@sgnl.ai</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="January" day="24"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <keyword>Microservices</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 and authorization context across workloads within a trusted domain during the processing of external requests, such as API calls. They ensure that this context is preserved throughout the call chain, even when new transactions are initiated internally, 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>Invocations 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 results 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's identity or a workload that made the request is preserved throughout subsequent workload invocations.
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 acccessed 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>A sequence of invocations that results from the invocation of an external endpoint.</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 assert an authorization context. The authorization context provides information expected to remain constant during the execution of a call chain as it passes through multiple workloads.</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 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 it 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 authorisation 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 generates a self-signed JWT and passes 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 on 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. The expectation is that since Txn-Tokens are short lived and are authorizing a specific transaction, extending beyond the lifetime of the presented expiration time is not a security risk. 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.</t>
    </section>
    <section anchor="benefits-of-txn-tokens">
      <name>Benefits of Txn-Tokens</name>
      <t>Txn-Tokens prevent unauthorized or unintended 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.</t>
    </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 workloads 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-6 are the same as in <xref target="basic-flow"/>.</t>
        <ol spacing="normal" type="1" start="1"><li>
            <t>A microservice 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 microservice 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 microservice then contacts another internal microservice 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 StringOrURI value that identifies the workload that requested the Txn-Token.</t>
          </dd>
        </dl>
        <section anchor="scope-claim">
          <name>Scope claim</name>
          <t>The <tt>scope</tt> claim captures, as narrowly as possible, the purpose of this particular transaction. The values used for this claim are defined by the TTS as representative of the authorization model defined by the Trust Domain. The value may be literately and semantically different from, and represent an intent narrower, than a scope value issued to an external client. How a given deployment represents the authorization model within the Trust Domain is at its discretion and not prescribed by this specification.</t>
        </section>
        <section anchor="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 interesting 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 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 name/value pairs (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 they 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 if it issues 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. The 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 txct 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="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>Next, 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 by a TTS is called a Txn-Token Response. The following values defined in <xref target="RFC8693"/> MUST be included in the Txn-Token Response:</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"/>.</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:
* validate the Txn-Token JWS signature
* verify the <tt>aud</tt> claim identifies the trust domain of the workload
* verify the Txn-Token is not expired</t>
        <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 Lifetime</name>
        <t>A Txn-Token is not resistant to replay attacks. A long-lived Txn-Token therefore represents a risk if it is stored in a file, discovered by an attacker, and then replayed. For this reason, a Txn-Token lifetime must be kept short, not exceeding the lifetime of a call-chain. Even for long-running "batch" jobs, a longer-lived access token should be used to initiate the request to the batch endpoint. It then obtains short-lived Txn-Tokens that may be used to authorize the call to downstream services in the call-chain.</t>
        <t>Because Txn-Tokens are short-lived, the Txn-Token response from the TTS does not contain the <tt>refresh_token</tt> field. A Txn-Token cannot be issued by presenting a <tt>refresh_token</tt>.</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>A service requesting a Txn-Token SHOULD provide an incoming token if it has one that it used itself to authorize a caller, and if it directly correlates with the downstream call chain it needs the Txn-Token for. 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 to the TTS.</t>
      </section>
      <section anchor="use-of-actortoken">
        <name>Use of 'actor_token'</name>
        <t>If using the <tt>actor_token</tt> and <tt>actor_token_type</tt> parameters of the OAuth 2.0 Token Exchange specification <xref target="RFC8693"/>, both parameters MUST be present in the request. The <tt>actor_token</tt> can authenticate the identity of the requesting workload.</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="unique-transaction-identifier">
        <name>Unique Transaction Identifier</name>
        <t>A transaction 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>
      </section>
      <section anchor="tts-discovery">
        <name>TTS Discovery</name>
        <t>A workload may use various mechanisms to determine which instance of a TTS to interact with. 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. Such a service 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 contact 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"/>. The mechanisms used by workloads to authenticate to other workloads, services or system components is out of scope of this specification.</t>
      </section>
      <section anchor="replacing-transaction-tokens">
        <name>Replacing Transaction Tokens</name>
        <t>A service within a call chain may choose to replace the Txn-Token. This can typically happen if the service wants to change (add to, remove, or modify) the context of the current Txn-Token</t>
        <t>To get a replacement Txn-Token, a service will request a new Txn-Token from the TTS and provide the current Txn-Token and other parameters in the request.</t>
        <section anchor="tts-responsibilities">
          <name>TTS Responsibilities</name>
          <t>A TTS MUST exercise caution when issuing replacement Txn-Tokens, since replacing Txn-Tokens with arbitrary values 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>SHOULD NOT issue replacement Txn-token with lifetime exceeding the lifetime of the originally presented token</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="obfuscation-of-personal-information">
        <name>Obfuscation of Personal Information</name>
        <t>Some <tt>rctx</tt> and <tt>tctx</tt> claims may be considered personal information in some jurisdictions
and if so their values need to be obfuscated. For example, originating IP address
(<tt>req_ip</tt>) is often considered personal information and in that case must be
protected through some obfuscation method (e.g. salted SHA256).</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 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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8417.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <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 678?>

<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 simpliffy normative langugage <eref target="https://github.com/oauth-wg/oauth-transaction-tokens/issues/228">Clarify claim usage</eref>.</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">Relace 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 unsigend 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 Acknpwledgement section (https://github.com/oauth-wg/oauth-transaction-tokens/issues/260)</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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
4GMhlaBA+8GHJlx8YDmqM7qQc+SiPaILmMiuzcjudAI+P9S5q7gxlxJ9bZK8
cnFlfu1tZcc3VxX++sF10nyV+IAHEAxoGn5dTYstXtQySSu5Ovs8uknl3M1e
V1ng2DrDN2TKnXzr8GIdEV6GIgPN3aTSFG71nd1R/RjEP1dE5qiR6u2vdSji
HRESQ31S9q+rxOTTlz8NWLUtbhdleue+7fn1WybiL7X1cQJn82aOnwbvKI6h
3mjO+we2O2EIUhMonZa8tv7q/Vpsw0KFWS4S0UW9M0m5A8y+zCiUPdTMaewy
XboR2cP88P2YD+Nk8FqG7o+Bpp8GCxl+FkpXa5NQI1k1uv1CpCZfBjPqJDIO
o3hCphgMhDgpvCrX53tfVzUHr3GFUQoud7njMaJowT2qDZLxBYw+7s1nH3Ml
Tr4ldVXwRYguV37deY0iIMHrYtzCsijxjkkoQbYJde808NUrScN21+91qGuR
rSJrWRi7C3RNHLasOcM/mkRk01TymK8/fyNTbO8OXzmOSHss1jGph/7hjnvz
sXFk3HUG8Il3BzULanHFDrygWuqW8xVG4bLhIy453yjtjmus+PCoMLOUKtUr
Cy8qLlJuHGOe+yQX45XmPhzS3ZDsTf+Fv0RpiDXAnLUR/WP96ID7gvqLFd06
lVxgMAAVou8LkuP1AM5Epuvvpyp5d4hXtDNZiGrrb1Ep/a3kp3KEfgl6aSqB
Q3SBRbiHymeku/J3DTMY/uQK/f72OwyaoFWz+d92V9K3bY7TYv+u1HBX9QB1
udzAlTp5Irys69IDdwNbjP5ew/MmKjLau8s9tA+rqcmTfycuYSQ3nPp8DEQI
ZeFOm33IRWhapGSHzrh9qVZz5p6R6znqrtoXYbQvKiQzYBE3C9fQThohnX2N
3bRz0CNe7NgeO4BTN3a3iUmSEhKxt3LVs9Mr/IU5XAKKf+uuVf6OM7/77ZJq
eUk6Q7wT37m73yxzVDeaKLu4id/wJc94cUOSTmvTTLTB+zyEyQyvC0UyY3T9
xqFIRz7peUMeSrCdsi2yCPXCJYiGCBDOoSycm72WGmJcDyA6PalcSSyXolHj
SYa+D7x4Db0gOemk3henjpi60C8UwIxAAZRFfNAw0si6uzNx15Zo/q2IUsQr
iNzU+jacjcEv/Y2u8ZLdKHG8dtkIrncxtM16HjpmlvbxHaft/Irue+aT+Su0
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

-->

</rfc>
