You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-oauth-transaction-tokens.md
+14-13Lines changed: 14 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -122,27 +122,27 @@ informative:
122
122
- org: Cloud Native Computing Foundation
123
123
124
124
--- abstract
125
-
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 programmatic 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.
125
+
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.
126
126
--- middle
127
127
128
128
# Introduction
129
129
130
-
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:
130
+
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:
131
131
132
-
* Invocations of workloads in the network without any explicit transaction invocation (external or internal) being present.
132
+
* Invocations of workloads in the network without any explicit transaction invocation being present.
133
133
* Arbitrary user impersonation.
134
134
* Parameter modification or augmentation.
135
135
* Theft of tokens, such as OAuth access tokens, used to call external interfaces and passed to internal workloads to convey authorization context.
136
136
137
137
The results of these actions are unauthorized access to resources.
138
138
139
139
# Overview
140
-
Transaction Tokens (Txn-Token) are a means to mitigate damage 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. Transaction 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.
140
+
Transaction Tokens (Txn-Token) 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. Transaction 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.
141
141
They preserve any context such as:
142
142
143
143
* Parameters of the original call
144
144
* Environmental factors, such as IP address of the original caller
145
-
* 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.
145
+
* 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.
146
146
147
147
Cryptographically protected Txn-Tokens ensure that downstream workloads cannot make unauthorized modifications to such information, and cannot make spurious calls without the presence of an intentionally invoked transaction.
148
148
@@ -174,10 +174,10 @@ A service within a call chain may choose to replace the Txn-Token. This can typi
174
174
To get a replacement Txn-Token, a service will request a new Txn-Token from the Txn-Token Service and provide the current Txn-Token and other parameters in the request. The Txn-Token service must be careful about the types of replacement requests it supports to avoid undermining the entire value of Txn-Tokens.
175
175
176
176
## Txn-Token Lifetime
177
-
Txn-Tokens are expected to be short-lived (order of minutes, e.g., 5 minutes), 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 Txn-Token service when requesting a Txn-Token has an expiration time, then the Txn-Token Service 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.
177
+
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 Txn-Token service when requesting a Txn-Token has an expiration time, then the Txn-Token Service 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.
178
178
179
179
## Benefits of Txn-Tokens
180
-
Txn-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.
180
+
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.
181
181
182
182
## Txn-Token Issuance and Usage Flows
183
183
@@ -401,7 +401,7 @@ JWT claims as well as defines new claims. These claims are described below:
401
401
: REQUIRED A unique transaction identifier as defined in Section 2.2 of {{RFC8417}}.
402
402
403
403
`sub`:
404
-
: REQUIRED A unique identifier for the subject within the context of the `aud` Trust Domain. Unlike OpenID Connect, the `sub` claim is NOT associated with the `iss` claim.
404
+
: REQUIRED A unique identifier for the subject within the context of the `aud` Trust Domain.
405
405
406
406
`scope`:
407
407
: REQUIRED The scope claim is defined in {{Section 4.2 of RFC8693}}. Note that the value of this claim is determined by the Transaction Token Service and is not required to match the requested scope nor the scope in any supplied external token.
@@ -429,7 +429,7 @@ The Txn-Token SHOULD contain an `tctx` claim. The value of this claim is a JSON
429
429
430
430
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.
431
431
432
-
Whereas the `rctx` field contains environmental values related to the request, the `tctx` 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 `tctx` field is determined by the Txn-Token Service and they may be computed internally or from parameters it receives from the service that requests the Txn-Token.
432
+
Whereas the `rctx` field contains environmental values related to the request, the `tctx` field contains the actual authorizaton details that are determined by the Txn-Token Service. These values are used by services using the Txn-Token to reliably obtain specific parameters needed to perform their work. The content of the `tctx` field is determined by the Txn-Token Service and they may be computed internally or from parameters it receives from the service that requests the Txn-Token.
433
433
434
434
The following is a non-normative example of an `tctx` claim initiated by an external call:
435
435
@@ -580,7 +580,7 @@ The Transaction Token Service MUST set the `exp` claim to the expiry time of the
580
580
581
581
The Transaction Token Service MUST set the `txn` claim to a unique ID specific to this transaction.
582
582
583
-
The Transaction Token Service MAY set the `iss` claim of the Txn-Token to a value defining the entity that signed the Txn-Token. This claim MUST be omitted if not set.
583
+
The Transaction Token Service MAY set the `iss` claim of the Txn-Token to a value defining the entity that signed the Txn-Token.
584
584
585
585
The Transaction Token Service MUST evaluate the value specified in the `scope` parameter of the request to determine the `scope` claim of the issued Txn-Token. The value of this claim, as issued by the Transaction Token Service, does not need to match the requested `scope` value as the Txn-Token `scope` claim represents the intent or purpose of the transaction within the Trust Domain.
586
586
@@ -637,7 +637,7 @@ To request a replacement Txn-Token, the requester makes a Txn-Token Request as d
637
637
### Replacement Txn-Token Response
638
638
A successful response by the Txn-Token Service to a Replacement Txn-Token Request is a Txn-Token Response as described in {{txn-token-response}}
639
639
640
-
## Mutual Authentication of the Txn-Token Request
640
+
## Mutual Authentication of the Txn-Token Request {#Mutual-Authentication}
641
641
A workload and Transaction Token Service MUST perform mutual authentication.
642
642
643
643
A Txn-Token Service MUST ensure that it authenticates any workloads requesting Txn-Tokens. In order to do so:
@@ -701,7 +701,7 @@ A workload may accidently send a transaction token request to a service that is
701
701
The Transaction Token Service may need to rotate signing keys. When doing so, it MAY adopt the key rotation practices in Section 10.1.1 of {{OpenIdConnect}}.
702
702
703
703
## Transaction Tokens Are Not Authentication Credentials
704
-
A workload MUST NOT use a transaction token to authenticate itself to another workload, service or the transaction token service. Transaction tokens represents information relevant to authorization decisions and are not workload identity credentials. Authentication between the workload and the transaction token service is described in [Mutual Authentication of the Txn-Token Request]{Mutual-Authentication-of-the-Txn-Token-Request}. The mechanisms used by workloads to authenticate to other workloads, services or system components is out of scope of this specification.
704
+
A workload MUST NOT use a transaction token to authenticate itself to another workload, service or the transaction token service. Transaction tokens represents information relevant to authorization decisions and are not workload identity credentials. Authentication between the workload and the transaction token service is described in {{Mutual-Authentication}}. The mechanisms used by workloads to authenticate to other workloads, services or system components is out of scope of this specification.
705
705
706
706
# Privacy Considerations {#Privacy}
707
707
@@ -745,7 +745,7 @@ This specification registers the following token type identifiers to the "OAuth
745
745
* Claim Name: `rctx`
746
746
* Claim Description: The requester context
747
747
* Change Controller: IETF
748
-
* Specification Document: Section {{requester-context}} of this specification
748
+
* Specification Document: Section {{txn-token-claims}} of this specification
749
749
750
750
## IANA Media Type Registration Contents
751
751
The following entry will be proposed using the IANA Media Type registration {{IANA.MediaTypes}} form.
@@ -802,6 +802,7 @@ The authors would like to thank the contributors and the OAuth working group mem
802
802
* Remove exp field from unsigend token (https://github.com/oauth-wg/oauth-transaction-tokens/issues/201)
803
803
* Change document category from informational to standards track (https://github.com/oauth-wg/oauth-transaction-tokens/issues/169)
804
804
* Clarify that `txn`should remain unchanged when included in a replacement transaction token.
0 commit comments