Skip to content

Commit 2a89f0d

Browse files
committed
Apply "Improvements to text about PKCE / IAR vs PAR / security BCP" to 1.1
This pulls in the contents of #624 closes #613
1 parent 4f83194 commit 2a89f0d

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

openid-4-verifiable-credential-issuance-1_1.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ Figure: Issuance using Authorization Code Flow
277277

278278
(4) The Authorization Endpoint returns the Authorization Response with the Authorization Code upon successfully processing the Authorization Request.
279279

280-
Note: Steps (3) and (4) happen in the front channel, by redirecting the End-User via the User Agent. Those steps are defined in (#authorization-endpoint). The Authorization Server and the User Agent may exchange any further messages between the steps if required by the Authorization Server to authenticate the End-User. For example, the Authorization Server may request Credential presentation as a means to authenticate or identify the End-User during the issuance flow, as described in (#use-case-5).
280+
Note: Steps (3) and (4) may happen in the front channel, by redirecting the End-User via the User Agent. Those steps are defined in (#authorization-endpoint). The Authorization Server and the User Agent may exchange any further messages between the steps if required by the Authorization Server to authenticate the End-User. The Authorization Server may request Credential presentation as a means to authenticate or identify the End-User during the issuance flow, as described in (#use-case-5), by using the mechanism defined in (#interactive-authorization-endpoint).
281281

282282
(5) The Wallet sends a Token Request to the Token Endpoint with the Authorization Code obtained in Step (4). The Token Endpoint returns an Access Token in the Token Response upon successfully validating the Authorization Code. This step happens in the back-channel communication (direct communication between two systems using HTTP requests and responses without using redirects through an intermediary such as a browser). This step is defined in (#token-endpoint).
283283

@@ -466,9 +466,7 @@ The Wallet does not create a response. UX control stays with the Wallet after co
466466

467467
# Authorization Endpoint {#authorization-endpoint}
468468

469-
The Authorization Endpoint is used in the same manner as defined in [@!RFC6749]. Implementers SHOULD follow the best current practices for OAuth 2.0 Security given in [@!BCP240].
470-
471-
When the grant type `authorization_code` is used, it is RECOMMENDED to use PKCE [@!RFC7636] and Pushed Authorization Requests [@RFC9126]. PKCE prevents authorization code interception attacks. Pushed Authorization Requests ensure the integrity and authenticity of the authorization request.
469+
The Authorization is obtained using the `authorization_code` grant type defined in [@!RFC6749], optionally with either PAR ((#pushed-authorization-request)) or the Interactive Authorization Endpoint (#interactive-authorization-endpoint). Implementers SHOULD follow the best current practices for OAuth 2.0 Security given in [@!BCP240], see (#securitybcp). This includes the use of mechanisms like PKCE to prevent authorization code interception attacks and Pushed (or Interactive) Authorization Requests to ensure the integrity and authenticity of the authorization request.
472470

473471
## Authorization Request {#credential-authz-request}
474472

@@ -571,7 +569,7 @@ The Authorization Server MUST ignore any unrecognized parameters.
571569

572570
### Pushed Authorization Request {#pushed-authorization-request}
573571

574-
Use of Pushed Authorization Requests is RECOMMENDED to ensure confidentiality, integrity, and authenticity of the request data and to avoid issues caused by large requests sizes.
572+
Use of Pushed Authorization Requests or the Interactive Authorization Endpoint (see (#interactive-authorization-endpoint) is RECOMMENDED to ensure confidentiality, integrity, and authenticity of the request data and to avoid issues caused by large requests sizes.
575573

576574
Below is a non-normative example of a Pushed Authorization Request:
577575

@@ -636,7 +634,7 @@ Location: https://wallet.example.org/cb?
636634
&error_description=Unsupported%20response_type%20value
637635
```
638636

639-
# Interactive Authorization Endpoint
637+
# Interactive Authorization Endpoint {#interactive-authorization-endpoint}
640638

641639
This is an extension of the traditional Authorization Endpoint defined in [@!RFC6749], enabling complex authentication and authorization flows where interaction occurs directly with the Wallet rather than being intermediated by a browser.
642640
A primary use case is requiring the Presentation of a Credential as a prerequisite for issuing a new Credential.
@@ -715,6 +713,8 @@ The initial request to the Interactive Authorization Endpoint is formed and sent
715713

716714
Custom interaction types (see (#iar-custom-extensions)) MAY be defined by the Authorization Server and used in the `interaction_types_supported` parameter.
717715

716+
When the wallet includes `redirect_to_web` in `interaction_types_supported`, the `code_challenge` and `code_challenge_method` parameters (see (#securitybcp)) are included in the initial request.
717+
718718
The following non-normative example shows an initial request to the Interactive Authorization Endpoint:
719719

720720
```http
@@ -1029,7 +1029,7 @@ Cache-Control: no-cache, no-store
10291029

10301030
# Token Endpoint {#token-endpoint}
10311031

1032-
The Token Endpoint issues an Access Token and, optionally, a Refresh Token in exchange for the Authorization Code that Client obtained in a successful Authorization Response. It is used in the same manner as defined in [@!RFC6749]. Implementers SHOULD follow the best current practices for OAuth 2.0 Security given in [@!BCP240].
1032+
The Token Endpoint issues an Access Token and, optionally, a Refresh Token in exchange for the Authorization Code that Client obtained in a successful Authorization Response. It is used in the same manner as defined in [@!RFC6749]. Implementers SHOULD follow the best current practices for OAuth 2.0 Security given in [@!BCP240], see (#securitybcp).
10331033

10341034
## Token Request {#token-request}
10351035

@@ -1841,6 +1841,7 @@ The parts of [@!FAPI2_Security_Profile] that may not be applicable when using th
18411841

18421842
1. Client authentication: The private_key_jwt and MTLS client authentication methods may not be practical to implement in a secure way for native app Wallets. The use of Wallet Attestations as defined in (#walletattestation) is RECOMMENDED instead.
18431843
2. Sender-constrained access tokens: MTLS sender constrained access token may not be practical to implement in a secure way for native app Wallets. The use of DPoP [@!RFC9449] is RECOMMENDED.
1844+
3. Pushed Authorization Requests: The Interactive Authorization Endpoint is permitted as alternative to Pushed Authorization Requests (PAR), see (see (#interactive-authorization-endpoint).
18441845

18451846
## Trust between Wallet and Issuer
18461847

0 commit comments

Comments
 (0)