<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-tulshibagwale-oauth-transaction-tokens-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Tx-Tokens">Transaction Tokens</title>

    <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>Capital One</organization>
      <address>
        <email>george.fletcher@capitalone.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselman" fullname="Pieter Kasselman">
      <organization>Microsoft</organization>
      <address>
        <email>pieter.kasselman@microsoft.com</email>
      </address>
    </author>

    <date year="2023" month="July" day="07"/>

    <area>sec</area>
    <workgroup>oauth</workgroup>
    <keyword>Microservices</keyword> <keyword>OAuth</keyword> <keyword>JWT</keyword> <keyword>token exchange</keyword>

    <abstract>


<t>Transaction Tokens (Tx-Tokens) enable workloads in a trusted domain to ensure that user identity and authorization context of an external programmatic request, such as an API invocation, is preserved and available to all workloads that are invoked as part of processing such a request. Tx-Tokens also enable workloads within the trusted domain to optionally immutably assert to downstream workloads that they were invoked in the call chain of the request.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Modern computing architectures often use multiple independently running components called workloads. In many cases, external invocations through externally visible 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>

<t><list style="symbols">
  <t>Invocations of workloads in the network without any external invocation being present</t>
  <t>Arbitrary user impersonation</t>
  <t>Parameter modification or augmentation</t>
</list></t>

<t>The results of these actions are unauthorised access to resources.</t>

</section>
<section anchor="overview"><name>Overview</name>
<t>Transaction Tokens (Tx-Token) are a means to mitigate damage from such attacks or spurious invocations. A valid Tx-Token indicates a valid external invocation.
They ensure that the identity of the user or a workload that made the external request is preserved throughout subsequent workload invocations.
They preserve any context such as:</t>

<t><list style="symbols">
  <t>Parameters of the original call</t>
  <t>Environmental factors, such as IP address of the original caller</t>
  <t>Any computed 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>
</list></t>

<t>Cryptographically protected Tx-Token ensure that downstream workloads cannot make unauthorized modifications to such information, and cannot make spurious calls without the presence of an external trigger.</t>

<section anchor="what-are-transaction-tokens"><name>What are Transaction Tokens?</name>
<t>Tx-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 as it passes through multiple workloads.</t>

<t>When necessary, a Tx-Token may include embedded tokens, as described in <xref target="JWTEmbeddedTokens"/>. This is called Nested Tx-Token. This nesting enables workloads in a call chain to assert their invocation during the call chain to downstream workloads.</t>

</section>
<section anchor="creating-tx-tokens"><name>Creating Tx-Tokens</name>

<section anchor="leaf-tx-tokens"><name>Leaf Tx-Tokens</name>
<t>Tx-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"/> token or an OpenID Connect <xref target="OpenIdConnect"/> token. We call this token "Leaf Tx-Token". This workload then performs an OAuth 2.0 Token Exchange <xref target="RFC8693"/> to obtain a Tx-Token. To do this, it invokes a special Token Service (the Tx-Token Service) and provides context that is sufficient for it to generate a Tx-Token. This context MAY include:</t>

<t><list style="symbols">
  <t>The external authorization token (e.g. the OAuth access token)</t>
  <t>Parameters that are required to be bound for the duration of this call</t>
  <t>Additional context, such as the incoming IP address, User Agent information, or other context that can help the Tx-Token Service to issue the Tx-Token</t>
</list></t>

<t>The Tx-Token Service responds to a successful invocation by generating a Tx-Token. The calling workload then uses the Tx-Token to authorize its calls to subsequent workloads. Subsequent workloads may obtain Tx-Tokens of their own.</t>

</section>
<section anchor="nested-tx-tokens"><name>Nested Tx-Tokens</name>
<t>A workload within the call chain of such an external call MAY generate a new Nested Tx-Token. To generate the Nested Tx-Token, it creates a self-signed JWT Embedded Token <xref target="JWTEmbeddedTokens"/> that includes the received Tx-Token by value. Subsequent workloads can therefore know that the signing workload was in the path of the call chain.</t>

</section>
</section>
<section anchor="tx-token-lifetime"><name>Tx-Token Lifetime</name>
<t>Tx-Tokens are expected to be short-lived (order of minutes, e.g. 5 minutes), and as a result MAY be used only for the expected duration of an external invocation. If a long-running process such as an batch or offline task is involved, it can use a separate mechanism to perform the external invocation, but the resulting Tx-Token SHALL still be short-lived.</t>

</section>
<section anchor="benefits-of-tx-tokens"><name>Benefits of Tx-Tokens</name>
<t>Tx-Tokens help prevent spurious invocations by ensuring that a workload receiving an invocation can independently verify the user or workload on whose behalf an external call was made and any context relevant to the processing of the call. Through the presence of additional signatures on the Tx-Token, a workload receiving an invocation can also independently verify that specific workloads were within the path of the call before it was invoked.</t>

</section>
<section anchor="tx-token-issuance-and-usage-flows"><name>Tx-Token Issuance and Usage Flows</name>

<t><xref target="fig-arch"/> shows how Tx-Tokens are used in an a multi-workload environment.</t>

<figure title="Use of Tx-Tokens in Multi-Workload Environments" anchor="fig-arch"><artwork type="ascii-art"><![CDATA[
                    | (A) Access Token
                    | via external API
                    v
             +--------------+ (B) Tx-Token Request  +---------------+
             |  Resource    |---------------------->|               |
             |   Server     | (C) Leaf Tx-Token     |  Transaction  |
             | (Workload 1) |<----------------------|     Token     |
             +--------------+                       |    Server     |
                    |                               |               |
                    | (D) Send Request              |               |
                    |     with Leaf Tx-Token        |               |
                    |     for Workload 1            |               |
                    v                               |               |
             +--------------+                       |               |
             |  Workload 2  |                       |               |
             |              |                       |               |
             |              |                       |               |
             +--------------+                       |               |
                    |  (E) Use unmodified           |               |
                    |      Leaf Tx-Token            |               |
                    |      for Workload 1           |               |
                    v                               |               |
             +--------------+                       |               |
             |  Workload 3  |---+ (F) Create        |               |
             |              |   |     Nested        |               |
             |              |<--+     Tx-Token      |               |
             +--------------+                       |               |
                    |  (G) Send request with        |               |
                    |      Nested Tx-Token for      |               |
                    |      Workload 3               |               |
                    v                               |               |
             +--------------+ (H) Tx-Token Request  |               |
             |  Workload 4  |---------------------->|               |
             |              | (I) Tx-Token Response |  Transaction  |
             |              |<----------------------|     Token     |
             +--------------+                       |    Server     |
                    |  (J) Send request with        |               |
                    |      Leaf Tx-Token for        |               |
                    |      Workload 5               |               |
                    :                               |               |
                    :                               |               |
                    |                               |               |
                    |                               |               |
                    |                               |               |
                    v                               |               |
             +--------------+                       |               |
             |  Workload n  | (K) Tx-Token verified |               |
             |              |     by last workload  |               |
             |              |     in call chain     |               |
             +--------------+                       +---------------+
]]></artwork></figure>

<t><list style="symbols">
  <t>(A) The user accesses a resource server and present an Access Token obtained from an Authorization Server using an OAuth 2.0 or an OpenID Connect flow.</t>
  <t>(B) The resource server is implemented as a workload (Workload 1) and requests a Leaf Tx-Token from the Transaction Token Server using the Token Exchange protocol <xref target="RFC8693"/>.</t>
  <t>(C) The Transaction Token Service returns a Leaf Tx-Token containing the requested claims that establish the identity of the original caller as well as additional claims that can be used to make authorization decisions and establish the call chain.</t>
  <t>(D) The Resource Server (Workload 1) calls Workload 2 and passes the Leaf Tx-Token for Workload 1. Workload 2 validates the Tx-Token and makes an authorization decision by combining contextual information at its disposal with information in the Tx-Token to make an authorization decision to accept or reject the call.</t>
  <t>(E) Workload 2 is not required to add aditional information to the Tx-Token and passes the unmodified Tx-Token for Workload 1 to Workload 3. Workload 3 validates the Tx-Token and makes an authorization decision by combining contextual information at its disposal with information in the Tx-Token to make an authorization decision to accept or reject the call.</t>
  <t>(F) Workload 3 generates a Nested Tx-Token that includes additional call chain information.</t>
  <t>(G) Workload 3 sends the Nested Tx-Token to Workload 4. Workload 4 validates the Nested Tx-Token and makes an authorization decision by combining contextual information at its disposal with information in the Nested Tx-Token to make an authorization decision to accept or reject the call.</t>
  <t>(H) Workload 4 needs a Tx-Token containing information from the Authroization Server and requests a new Leaf Transaction Token (Leaf Tx-Token) from the Transaction Token Server using the Token Exchange protocol <xref target="RFC8693"/>.</t>
  <t>(I) The Transaction Token Service returns a Leaf Transaction Token (Leaf Tx-Token) containing the requested claims that include the call chain information included in the Tx-Token as well as additional claims needed.</t>
  <t>(J) Workload 4 sends the Tx-Token to the Workload 5, who verifies it and extracts claims and combine it with contextual information for use in authroization decisions. Other workloads continue to pass Tx-Tokens, generate Nested Tx-Tokens or request new Tx-Tokens.</t>
  <t>(K) Workload n is the final workload in the call chain. It verifies the received Tx-Token, extracts claims and combine it with contextual information for use in authroization decisions.</t>
</list></t>

</section>
</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>An independent computational unit that can autonomously receive and process invocations, and can generate invocations of other workloads. Examples of workloads include containerized microservices, monolithic services and infrastructure services such as managed databases.</t>
  </dd>
  <dt>Trust Domain:</dt>
  <dd>
    <t>A virtually or physically separated network, which contains two or more workloads. The workloads within an Trust Domain may be invoked only through published interfaces. A Trust Domain must have a name that is used as the <spanx style="verb">aud</spanx> (audience) value in Tx-Tokens.</t>
  </dd>
  <dt>External Endpoint:</dt>
  <dd>
    <t>A published interface to an Trust Domain that results in the invocation of a workload within the Trust Domain.</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 (Tx-Token):</dt>
  <dd>
    <t>A signed JWT that has a short lifetime, which provides immutable information about the user or workload, certain parameters of the call and certain contextual attributes of the call. A Tx-Token may contain a nested Tx-Token.</t>
  </dd>
  <dt>Leaf Tx-Token:</dt>
  <dd>
    <t>A Tx-Token that does not contain a <spanx style="verb">tx_token</spanx> claim in its JWT body.</t>
  </dd>
  <dt>Nested Tx-Token:</dt>
  <dd>
    <t>A JWT Embedded Token <xref target="JWTEmbeddedTokens"/> that embeds a Tx-Token by value.</t>
  </dd>
  <dt>Authorization Context:</dt>
  <dd>
    <t>A JSON object containing a set of claims that represent the immutable context of a call chain.</t>
  </dd>
  <dt>Transaction Token Service (Tx-Token Service):</dt>
  <dd>
    <t>A special service within the Trust Domain, which issues Tx-Tokens to requesting workloads.</t>
  </dd>
</dl>

</section>
<section anchor="tx-token-format"><name>Tx-Token Format</name>
<t>A Tx-Token is a JSON Web Token <xref target="RFC7519"/> protected by a JSON Web Signature <xref target="RFC7515"/>. The following is true in a Tx-Token:</t>

<section anchor="tx-token-header"><name>JWT Header</name>
<t>In the JWT Header:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">typ</spanx> claim MUST be present and MUST have the value <spanx style="verb">tx_token</spanx>.</t>
  <t>Key rotation of the signing key SHOULD be supported through the use of a <spanx style="verb">kid</spanx> claim.</t>
</list></t>

<t><xref target="figtxtokenheader"/> is a non-normative example of the JWT Header of a Tx-Token</t>

<figure title="Example: Tx-Token Header" anchor="figtxtokenheader"><sourcecode type="json"><![CDATA[
{
    "typ": "tx_token",
    "alg": "RS256",
    "kid": "identifier-to-key"
}
]]></sourcecode></figure>

</section>
<section anchor="tx-token-body"><name>JWT Body</name>

<section anchor="common-claims"><name>Common Claims</name>
<t>The JWT body MUST have the following claims regardless of whether the Tx-Token is a Leaf Tx-Token or a Nested Tx-Token:</t>

<t><list style="symbols">
  <t>An <spanx style="verb">iss</spanx> claim, whose value is a URN <xref target="RFC8141"/> that uniquely identifies the workload or the Tx-Token Service that created the Tx-Token.</t>
  <t>An <spanx style="verb">iat</spanx> claim, whose value is the time at which the Tx-Token was created.</t>
  <t>An <spanx style="verb">exp</spanx> claim, whose value is the time at which the Tx-Token expires. Note that if this claim is in a Nested Tx-Token, then this <spanx style="verb">exp</spanx> value MUST NOT exceed the <spanx style="verb">exp</spanx> value of the Tx-Token included in the JWT Body.</t>
</list></t>

</section>
<section anchor="leaf-tx-token-claims"><name>Leaf Tx-Token Claims</name>
<t>The following claims MUST be present in the JWT body of a Leaf Tx-Token:</t>

<t><list style="symbols">
  <t>A <spanx style="verb">tid</spanx> claim, whose value is the unique identifier of entire call chain.</t>
  <t>A <spanx style="verb">sub_id</spanx> claim, whose value is the unique identifier of the user or workload on whose behalf the call chain is being executed. The format of this claim MAY be a Subject Identifier as specified in <xref target="SubjectIdentifiers"/>.</t>
  <t>An <spanx style="verb">azc</spanx> claim, whose value is a JSON object that contains values that remain constant in the call chain.</t>
</list></t>

<t><xref target="figleaftxtokenbody"/> shows a non-normative example of the JWT body of a Leaf Tx-Token:</t>

<figure title="Example: Leaf Tx-Token Body" anchor="figleaftxtokenbody"><sourcecode type="json"><![CDATA[
{
    "iss": "https://trust-domain.example/tx-token-service",
    "iat": "1686536226000",
    "exp": "1686536526000",
    "tid": "97053963-771d-49cc-a4e3-20aad399c312",
    "sub_id": {
        "format": "email",
        "email": "user@trust-domain.example"
    },
    "azc": {
        "action": "BUY", // parameter of external call
        "ticker": "MSFT", // parameter of external call
        "quantity": "100", // parameter of external call
        "user_ip": "69.151.72.123", // env context of external call
        "user_level": "vip" // computed value not present in external call
    }
}
]]></sourcecode></figure>

</section>
<section anchor="nested-tx-token-claim"><name>Nested Tx-Token Claim</name>
<t>A Nested Tx-Token is a JWT Embedded Token <xref target="JWTEmbeddedTokens"/>, which embeds a Tx-Token by value. The following claims MUST be present in a Nested Tx-Token:</t>

<t><list style="symbols">
  <t>A <spanx style="verb">type</spanx> claim, whose value is <spanx style="verb">urn:ietf:params:oauth:token-type:tx_token</spanx>.</t>
  <t>A <spanx style="verb">token</spanx> claim, whose value is an encoded JWT representation of a Tx-Token.</t>
</list></t>

<t><xref target="fignestedtxtokenbody"/> shows a non-normative example the JWT body of a nested Tx-Token</t>

<figure title="Example: Nested Tx-Token Body" anchor="fignestedtxtokenbody"><sourcecode type="json"><![CDATA[
{
    "iss": "https://trust-domain.example/fraud-detection",
    "iat": "1686536236000",
    "exp": "1686536526000",
    "type": "urn:ietf:params:oauth:token-type:tx_token",
    "token": "eyJ0eXAiOiJ0cmF0Iiwi...thwd8"
}
]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="requesting-leaf-tx-tokens"><name>Requesting Leaf Tx-Tokens</name>
<t>A workload requests a Tx-Token from a Transaction Token Service using OAuth 2.0 Token Exchange <xref target="RFC8693"/>. The request to obtain a Tx-Token using this method is called a Tx-Token Request, and a success response is called a Tx-Token Response. A Tx-Token Request is a Token Exchange Request, as described in Section 2.1 of <xref target="RFC8693"/> with additional parameters. A Tx-Token Response is a OAuth 2.0 token endpoint response, as described in Section 5 of <xref target="RFC6749"/>, where the <spanx style="verb">token_type</spanx> in the response has the value <spanx style="verb">tx_token</spanx>.</t>

<t>The Transaction Token Service acts as an OAuth 2.0 <xref target="RFC6749"/> Authorization Server. The requesting workload acts as the OAuth 2.0 Client, which authenticates itself to the Transaction Token Service through mechanisms defined in OAuth 2.0.</t>

<section anchor="tx-token-request"><name>Tx-Token Request</name>
<t>A Tx-Token Request is an OAuth 2.0 Token Exchange Request, as described in Section 2.1 of <xref target="RFC8693"/>, with an additional parameter in the request. The following is true of the Tx-Token Request:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">audience</spanx> value MUST be set to the Trust Domain name.</t>
  <t>The <spanx style="verb">requested_token_type</spanx> value MUST be <spanx style="verb">urn:ietf:params:oauth:token-type:tx_token</spanx>.</t>
  <t>The <spanx style="verb">subject_token</spanx> value MUST be the external token received by the workload that authorized the call.</t>
  <t>The <spanx style="verb">subject_token_type</spanx> value MUST be present and indicate the type of the authorization token present in the <spanx style="verb">subject_token</spanx> parameter.</t>
</list></t>

<t>The following additional parameter MUST be present in a Tx-Token Request:</t>

<t><list style="symbols">
  <t>A parameter named <spanx style="verb">azc</spanx> , whose value is a JSON object. This object contains any information the Transaction Token Service needs to understand the context of the incoming request.</t>
</list></t>

<t><xref target="figtxtokenrequest"/> shows a non-normative example of a Tx-Token Request.</t>

<figure title="Example: Tx-Token Request" anchor="figtxtokenrequest"><sourcecode type="http"><![CDATA[
POST /tx-token-service/token_endpoint HTTP 1.1
Host: tx-token-service.trust-domain.example
Content-Type: application/x-www-form-urlencoded

requested_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Atx_token
&audience=http%3A%2F%2Ftrust-domain.example
&subject_token=eyJhbGciOiJFUzI1NiIsImtpZC...kdXjwhw
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
&azc=%7B%22param1%22%3A%22value1%22%2C%22param2%22%3A%22value2%22%2C%22ip_address%22%3A%2269.151.72.123%22%7D
]]></sourcecode></figure>

</section>
<section anchor="tx-token-response"><name>Tx-Token Response</name>
<t>A successful response to a Tx-Token Request by a Transaction Token Service is called a Tx-Token Response. If the Transaction Token Service responds with an error, the error response is as described in Section 5.2 of <xref target="RFC6749"/>. The following is true of a Tx-Token Response:</t>

<t><list style="symbols">
  <t>The <spanx style="verb">token_type</spanx> value MUST be set to <spanx style="verb">tx_token</spanx>.</t>
  <t>The <spanx style="verb">access_token</spanx> value MUST be the Tx-Token.</t>
  <t>The response MUST NOT include the values <spanx style="verb">expires_in</spanx>, <spanx style="verb">refresh_token</spanx> and <spanx style="verb">scope</spanx>.</t>
</list></t>

<t><xref target="figtxtokenresponse"/> shows a non-normative example of a Tx-Token Response.</t>

<figure title="Example: Tx-Token Response" anchor="figtxtokenresponse"><sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: non-cache, no-store

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:tx_token",
  "access_token": "eyJCI6IjllciJ9...Qedw6rx"
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="creating-nested-tx-tokens"><name>Creating Nested Tx-Tokens</name>
<t>A workload within a call chain MAY create a Nested Tx-Token. It does so by embedding the Tx-Token it receives by value in a JWT Embedded Token <xref target="JWTEmbeddedTokens"/>. Nested Tx-Tokens are self-signed and not requested from a separate service.</t>

<t>The expiration time of a enclosing Tx-Token MUST NOT exceed the expiration time of an embedded Tx-Token.</t>

</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This memo includes no request to IANA.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<section anchor="mutual-authentication-of-the-tx-token-request"><name>Mutual Authentication of the Tx-Token Request</name>
<t>A Transaction Token Service MUST ensure that it authenticates any workloads requesting Tx-Tokens. In order to do so:</t>

<t><list style="symbols">
  <t>It MUST name a limited, pre-configured set of workloads that MAY request Tx-Tokens.</t>
  <t>It MUST individually authenticate the requester as being one of the name requesters.</t>
  <t>It SHOULD rely on mechanisms, such as <xref target="Spiffe"/>, to securely authenticate the requester.</t>
  <t>It SHOULD NOT rely on insecure mechanisms, such as long-lived shared secrets to authenticate the requesters.</t>
</list></t>

<t>The requesting workload MUST have a pre-configured location for the Transaction Token Service. It SHOULD rely on mechanisms, such as <xref target="Spiffe"/>, to securely authenticate the Transaction Token Service before making a Tx-Token Request.</t>

</section>
<section anchor="sender-constrained-tokens"><name>Sender Constrained Tokens</name>
<t>Although Tx-Tokens are short-lived, they may be sender constrained as an additional layer of defence to prevent them from being re-used by a compromised or malicious workload under the control of a hostile actor.</t>

</section>
<section anchor="access-tokens"><name>Access Tokens</name>
<t>When creating Tx-Tokens, the Tx-Token MUST NOT contain the Access Token presented to the resource server. If an Access Token is included in a Tx-Token, an attacker may obtain a Tx-Token, extract the Access Token, and replay it to the Resource Server. Tx-Token expiry does not protect against this attack since the Access Token may remain valid even after the Tx-Token has expired.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC6749' target='https://www.rfc-editor.org/info/rfc6749'>
  <front>
    <title>The OAuth 2.0 Authorization Framework</title>
    <author fullname='D. Hardt' initials='D.' role='editor' surname='Hardt'/>
    <date month='October' year='2012'/>
    <abstract>
      <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6749'/>
  <seriesInfo name='DOI' value='10.17487/RFC6749'/>
</reference>

<reference anchor='RFC7519' target='https://www.rfc-editor.org/info/rfc7519'>
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname='M. Jones' initials='M.' surname='Jones'/>
    <author fullname='J. Bradley' initials='J.' surname='Bradley'/>
    <author fullname='N. Sakimura' initials='N.' surname='Sakimura'/>
    <date month='May' year='2015'/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7519'/>
  <seriesInfo name='DOI' value='10.17487/RFC7519'/>
</reference>

<reference anchor='RFC7515' target='https://www.rfc-editor.org/info/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='RFC8141' target='https://www.rfc-editor.org/info/rfc8141'>
  <front>
    <title>Uniform Resource Names (URNs)</title>
    <author fullname='P. Saint-Andre' initials='P.' surname='Saint-Andre'/>
    <author fullname='J. Klensin' initials='J.' surname='Klensin'/>
    <date month='April' year='2017'/>
    <abstract>
      <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8141'/>
  <seriesInfo name='DOI' value='10.17487/RFC8141'/>
</reference>

<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>

<reference anchor='RFC8693' target='https://www.rfc-editor.org/info/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="OpenIdConnect" target="https://openid.net/specs/openid-connect-core-1_0.html">
  <front>
    <title>OpenID Connect Core 1.0 incorporating errata set 1</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>
<reference anchor="SubjectIdentifiers" target="https://datatracker.ietf.org/doc/html/draft-ietf-secevent-subject-identifiers">
  <front>
    <title>Subject Identifiers for Security Event Tokens</title>
    <author initials="A." surname="Backman" fullname="Annabelle Backman">
      <organization>Amazon</organization>
    </author>
    <author initials="M." surname="Scurtescu" fullname="Martin Scurtescu">
      <organization>Coinbase</organization>
    </author>
    <author initials="P." surname="Jain" fullname="Prachi Jain">
      <organization>Fastly</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="JWTEmbeddedTokens" target="https://www.ietf.org/archive/id/draft-yusef-oauth-nested-jwt-06.html">
  <front>
    <title>JSON Web Token (JWT) Embedded Tokens</title>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>E&amp;Y</organization>
    </author>
    <author initials="D." surname="Hardt" fullname="Dick Hardt">
      <organization>Hellō</organization>
    </author>
    <author initials="G. D." surname="Marco" fullname="Giuseppe De Marco">
      <organization>Dipartimento per la trasformazione digitale della Presidenza del Consiglio dei Ministri Italy</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>

    <references title='Informative References'>

<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 year="n.d."/>
  </front>
</reference>


    </references>


<section numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="E." surname="Gilman" fullname="Evan Gilman">
      <organization>SPIRL</organization>
      <address>
        <email>evan@spirl.com</email>
      </address>
    </contact>
    <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>Arm Ltd.</organization>
      <address>
        <email>Hannes.Tschofenig@arm.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
bl+6RR/PrzNUyQ8bE5ka7x39D+/HtnrFXAAA

-->

</rfc>

