Skip to content

Commit be70794

Browse files
authored
Merge pull request #790 from openid/clarify-terminate-reject-error
Clarify terminate/reject/return error behaviours including for unsupported transaction_data
2 parents 003e1b3 + c8916e7 commit be70794

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

‎1.0/openid-4-verifiable-presentations-1_0.md‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,8 @@ The Verifier communicates a Client Identifier Prefix that indicates how the Wall
284284
Depending on the Client Identifier Prefix, the Verifier can communicate a JSON object with its metadata using the `client_metadata` parameter which contains name/value pairs.
285285

286286
Additional request parameters, other than those defined in this section, MAY be defined and used, as described in [@!RFC6749].
287-
The Wallet MUST ignore any unrecognized parameters, other than the `transaction_data` parameter.
288-
One exception to this rule is the `transaction_data` parameter. Wallets that do not support this parameter MUST reject requests that contain it.
287+
The Wallet MUST ignore any unrecognized parameters.
288+
One exception to this rule is the `transaction_data` parameter: a Wallet that does not support this parameter MUST reject requests that contain it, as defined in (#transaction_data).
289289

290290
## New Parameters {#new_parameters}
291291
This specification defines the following new request parameters:
@@ -682,6 +682,8 @@ The Wallet MUST process the request as defined in [@RFC9101]. The Wallet SHOULD
682682

683683
The Wallet MUST extract the set of Authorization Request parameters from the Request Object. The Wallet MUST only use the parameters in this Request Object, even if the same parameter was provided in an Authorization Request query parameter. The Client Identifier value in the `client_id` Authorization Request parameter and the Request Object `client_id` claim value MUST be identical, including the Client Identifier Prefix. If any of these conditions are not met, the Wallet MUST terminate request processing.
684684

685+
When this specification requires the Wallet to terminate request processing (or terminate the process), the Wallet stops processing the request and MUST NOT return an Authorization Response or Authorization Error Response to the Verifier. In these situations, the Wallet was unable to obtain an authentic Authorization Request, so there is no trusted endpoint to which an Authorization Error Response could be sent.
686+
685687
The Wallet then validates the request as specified in OAuth 2.0 [@RFC6749].
686688

687689
### Request URI Error Response
@@ -1491,7 +1493,7 @@ The transaction data mechanism enables a binding between the user's identificati
14911493

14921494
The Wallet that received the `transaction_data` parameter in the request MUST include a representation or reference to the data in the respective Credential presentation. How this is done is transaction data type specific. Credential Formats can give recommendations of how to handle transaction data, such as those in (#format_specific_parameters).
14931495

1494-
If the Wallet does not support `transaction_data` parameter, it MUST return an error upon receiving a request that includes it.
1496+
If the Wallet does not support the `transaction_data` parameter, it MUST reject a request that includes it: the Wallet MUST NOT return a VP Token for such a request, and any response returned SHOULD be an error response using the error code `invalid_transaction_data` (see (#error-response)). As described in (#error-responses), the Wallet MAY instead cancel the flow without returning a response to the Verifier.
14951497

14961498
## Error Response {#error-response}
14971499

@@ -1527,6 +1529,7 @@ This document also defines the following additional error codes and error descri
15271529

15281530
`invalid_transaction_data`:
15291531

1532+
- the Wallet does not support the `transaction_data` parameter, or
15301533
- any of the following is true for at least one object in the `transaction_data` structure:
15311534
- contains an unknown or unsupported transaction data type value,
15321535
- is an object of a known type but containing unknown fields,
@@ -3671,6 +3674,8 @@ The technology described in this specification was made available from contribut
36713674

36723675
-31
36733676

3677+
* Clarify that a Wallet terminating request processing does not return a response to the Verifier
3678+
* Clarify that a Wallet rejecting a request containing an unsupported `transaction_data` parameter uses the `invalid_transaction_data` error code if it returns an error response
36743679
* Clarify that a W3C Verifiable Credential requested without Cryptographic Holder Binding is returned directly in the VP Token, without a Verifiable Presentation
36753680
* add security considerations on untrusted input
36763681
* Clarify that the Wallet does not follow HTTP redirects

‎1.1/openid-4-verifiable-presentations-1_1.md‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,8 @@ The Verifier communicates a Client Identifier Prefix that indicates how the Wall
280280
Depending on the Client Identifier Prefix, the Verifier can communicate a JSON object with its metadata using the `client_metadata` parameter which contains name/value pairs.
281281

282282
Additional request parameters, other than those defined in this section, MAY be defined and used, as described in [@!RFC6749].
283-
The Wallet MUST ignore any unrecognized parameters, other than the `transaction_data` parameter.
284-
One exception to this rule is the `transaction_data` parameter. Wallets that do not support this parameter MUST reject requests that contain it.
283+
The Wallet MUST ignore any unrecognized parameters.
284+
One exception to this rule is the `transaction_data` parameter: a Wallet that does not support this parameter MUST reject requests that contain it, as defined in (#transaction_data).
285285

286286
## New Parameters {#new_parameters}
287287
This specification defines the following new request parameters:
@@ -678,6 +678,8 @@ The Wallet MUST process the request as defined in [@RFC9101]. The Wallet SHOULD
678678

679679
The Wallet MUST extract the set of Authorization Request parameters from the Request Object. The Wallet MUST only use the parameters in this Request Object, even if the same parameter was provided in an Authorization Request query parameter. The Client Identifier value in the `client_id` Authorization Request parameter and the Request Object `client_id` claim value MUST be identical, including the Client Identifier Prefix. If any of these conditions are not met, the Wallet MUST terminate request processing.
680680

681+
When this specification requires the Wallet to terminate request processing (or terminate the process), the Wallet stops processing the request and MUST NOT return an Authorization Response or Authorization Error Response to the Verifier. In these situations, the Wallet was unable to obtain an authentic Authorization Request, so there is no trusted endpoint to which an Authorization Error Response could be sent.
682+
681683
The Wallet then validates the request as specified in OAuth 2.0 [@RFC6749].
682684

683685
### Request URI Error Response
@@ -1551,7 +1553,7 @@ The transaction data mechanism enables a binding between the user's identificati
15511553

15521554
The Wallet that received the `transaction_data` parameter in the request MUST include a representation or reference to the data in the respective Credential presentation. How this is done is transaction data type specific. Credential Formats can give recommendations of how to handle transaction data, such as those in (#format_specific_parameters).
15531555

1554-
If the Wallet does not support `transaction_data` parameter, it MUST return an error upon receiving a request that includes it.
1556+
If the Wallet does not support the `transaction_data` parameter, it MUST reject a request that includes it: the Wallet MUST NOT return a VP Token for such a request, and any response returned SHOULD be an error response using the error code `invalid_transaction_data` (see (#error-response)). As described in (#error-responses), the Wallet MAY instead cancel the flow without returning a response to the Verifier.
15551557

15561558
## Error Response {#error-response}
15571559

@@ -1587,6 +1589,7 @@ This document also defines the following additional error codes and error descri
15871589

15881590
`invalid_transaction_data`:
15891591

1592+
- the Wallet does not support the `transaction_data` parameter, or
15901593
- any of the following is true for at least one object in the `transaction_data` structure:
15911594
- contains an unknown or unsupported transaction data type value,
15921595
- is an object of a known type but containing unknown fields,
@@ -3746,6 +3749,8 @@ The technology described in this specification was made available from contribut
37463749

37473750
-01
37483751

3752+
* Clarify that a Wallet terminating request processing does not return a response to the Verifier
3753+
* Clarify that a Wallet rejecting a request containing an unsupported `transaction_data` parameter uses the `invalid_transaction_data` error code if it returns an error response
37493754
* Clarify that a W3C Verifiable Credential requested without Cryptographic Holder Binding is returned directly in the VP Token, without a Verifiable Presentation
37503755
* Clarify that the Wallet does not follow HTTP redirects
37513756
* Clarify jwks use parameter

0 commit comments

Comments
 (0)