Skip to content

Commit efba25c

Browse files
committed
Improvements to text about PKCE / IAR vs PAR / security BCP.
Clarify that authorization code flow section now that we have a non-frontchannel method (IAE) to obtain authorization_code. Clarify that the recommendation to use PAR means PAR or IAE.
1 parent 78ee324 commit efba25c

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

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

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

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

274-
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).
274+
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).
275275

276276
(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).
277277

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

461461
# Authorization Endpoint {#authorization-endpoint}
462462

463-
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].
464-
465-
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.
463+
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.
466464

467465
## Authorization Request {#credential-authz-request}
468466

@@ -565,7 +563,7 @@ The Authorization Server MUST ignore any unrecognized parameters.
565563

566564
### Pushed Authorization Request {#pushed-authorization-request}
567565

568-
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.
566+
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.
569567

570568
Below is a non-normative example of a Pushed Authorization Request:
571569

@@ -630,7 +628,7 @@ Location: https://wallet.example.org/cb?
630628
&error_description=Unsupported%20response_type%20value
631629
```
632630

633-
# Interactive Authorization Endpoint
631+
# Interactive Authorization Endpoint {#interactive-authorization-endpoint}
634632

635633
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.
636634
A primary use case is requiring the Presentation of a Credential as a prerequisite for issuing a new Credential.
@@ -709,6 +707,8 @@ The initial request to the Interactive Authorization Endpoint is formed and sent
709707

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

710+
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.
711+
712712
The following non-normative example shows an initial request to the Interactive Authorization Endpoint:
713713

714714
```http
@@ -1023,7 +1023,7 @@ Cache-Control: no-cache, no-store
10231023

10241024
# Token Endpoint {#token-endpoint}
10251025

1026-
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].
1026+
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).
10271027

10281028
## Token Request {#token-request}
10291029

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

18351835
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.
18361836
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.
1837+
3. Pushed Authorization Requests: The Interactive Authorization Endpoint is permitted as alternative to Pushed Authorization Requests (PAR), see (see (#interactive-authorization-endpoint).
18371838

18381839
## Trust between Wallet and Issuer
18391840

0 commit comments

Comments
 (0)