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: 1.0/openid-4-verifiable-credential-issuance-1_0.md
+12-1Lines changed: 12 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1503,6 +1503,17 @@ An attacker might leverage the Credential issuance process and the End-User's tr
1503
1503
1504
1504
In order to cope with that issue, the Wallet is RECOMMENDED to interact with trusted Credential Issuers only. In that case, the Wallet would not process a Credential Offer with an untrusted issuer URL. The Wallet MAY also show the End-User the endpoint of the Credential Issuer it will be sending the Transaction Code to and ask the End-User for confirmation.
1505
1505
1506
+
### Transaction Code Guessing
1507
+
1508
+
When the Pre-Authorized Code Flow is used together with a Transaction Code (`tx_code`), the Transaction Code is typically short, low-entropy, and intended for one-time use. As a result, it may be susceptible to online guessing or brute-force attacks if an attacker can repeatedly submit Token Requests using the same Pre-Authorized Code.
1509
+
1510
+
To mitigate this risk, the Authorization Server SHOULD limit the number of failed Transaction Code verification attempts associated with a Pre-Authorized Code or issuance transaction. Once a configurable maximum number of failed attempts is exceeded, the Authorization Server SHOULD invalidate the Pre-Authorized Code and reject further Token Requests for that transaction.
1511
+
1512
+
Transaction Codes SHOULD be short-lived and SHOULD be treated as single-use. Upon successful verification, a Transaction Code SHOULD NOT be accepted again.
1513
+
1514
+
When a valid Pre-Authorized Code is presented with an incorrect Transaction Code, the Authorization Server SHOULD return an error indicating that the provided Transaction Code is invalid.
1515
+
If the Pre-Authorized Code has expired, has been invalidated (including due to too many failed attempts), or is otherwise no longer valid, the Authorization Server SHOULD return the `invalid_grant` error.
1516
+
1506
1517
## Credential Lifecycle Management
1507
1518
1508
1519
The Credential Issuer is supposed to be responsible for the lifecycle of its Credentials. This means the Credential Issuer will invalidate Credentials when it deems appropriate, e.g., if it detects fraudulent behavior.
@@ -3026,7 +3037,7 @@ The technology described in this specification was made available from contribut
3026
3037
3027
3038
-19
3028
3039
3029
-
*TBD
3040
+
*Add security consideration on transaction code guessing
Copy file name to clipboardExpand all lines: 1.1/openid-4-verifiable-credential-issuance-1_1.md
+16-2Lines changed: 16 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1167,13 +1167,16 @@ The following additional clarifications are provided for some of the error codes
1167
1167
1168
1168
`invalid_grant`:
1169
1169
1170
-
- The Authorization Server expects a Transaction Code in the Pre-Authorized Code Flow but the Client provides the wrong Transaction Code.
1171
-
- The End-User provides the wrong Pre-Authorized Code or the Pre-Authorized Code has expired.
1170
+
- The End-User provides the wrong Pre-Authorized Code or the Pre-Authorized Code has expired or is no longer valid.
1172
1171
1173
1172
`invalid_client`:
1174
1173
1175
1174
- The Client tried to send a Token Request with a Pre-Authorized Code without a Client ID but the Authorization Server does not support anonymous access.
1176
1175
1176
+
`invalid_tx_code`:
1177
+
1178
+
- The Authorization Server expects a Transaction Code in the Pre-Authorized Code Flow but the Client provides the wrong Transaction Code.
1179
+
1177
1180
Below is a non-normative example of a Token Error Response:
1178
1181
1179
1182
```
@@ -1928,6 +1931,16 @@ An attacker might leverage the Credential issuance process and the End-User's tr
1928
1931
1929
1932
In order to cope with that issue, the Wallet is RECOMMENDED to interact with trusted Credential Issuers only. In that case, the Wallet would not process a Credential Offer with an untrusted issuer URL. The Wallet MAY also show the End-User the endpoint of the Credential Issuer it will be sending the Transaction Code to and ask the End-User for confirmation.
1930
1933
1934
+
### Transaction Code Guessing
1935
+
1936
+
When the Pre-Authorized Code Flow is used together with a Transaction Code (`tx_code`), the Transaction Code is typically short, low-entropy, and intended for one-time use. As a result, it may be susceptible to online guessing or brute-force attacks if an attacker can repeatedly submit Token Requests using the same Pre-Authorized Code.
1937
+
1938
+
To mitigate this risk, the Authorization Server SHOULD limit the number of failed Transaction Code verification attempts associated with a Pre-Authorized Code or issuance transaction. Once a configurable maximum number of failed attempts is exceeded, the Authorization Server SHOULD invalidate the Pre-Authorized Code and reject further Token Requests for that transaction.
1939
+
1940
+
Transaction Codes SHOULD be short-lived and SHOULD be treated as single-use. Upon successful verification, a Transaction Code SHOULD NOT be accepted again.
1941
+
1942
+
When a valid Pre-Authorized Code is presented with an incorrect Transaction Code, the Authorization Server SHOULD return the `invalid_tx_code` error. If the Pre-Authorized Code has expired, has been invalidated (including due to too many failed attempts), or is otherwise no longer valid, the Authorization Server SHOULD return the `invalid_grant` error.
1943
+
1931
1944
## Credential Lifecycle Management
1932
1945
1933
1946
The Credential Issuer is supposed to be responsible for the lifecycle of its Credentials. This means the Credential Issuer will invalidate Credentials when it deems appropriate, e.g., if it detects fraudulent behavior.
@@ -3672,5 +3685,6 @@ The technology described in this specification was made available from contribut
3672
3685
* use derived origin for `expected_origins` in IAE flow
3673
3686
* add require_interactive_authorization_request to AS metadata
3674
3687
* add interactive_authorization_endpoint to AS metadata section
3688
+
* add invalid_tx_code to Pre-Authz Code Flow
3675
3689
* add URNs for IAE type identifiers
3676
3690
* add iana registration for an openid foundation urn
0 commit comments