Skip to content

Commit 214d749

Browse files
committed
updates based on WG feedback
* require IdPs to support public clients (no requirement for RPs to be public or confidential) * require registered redirect URLs and exact match * remove PAR from SL1 profile
1 parent 409c079 commit 214d749

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

draft-openid-ipsie-sl1-profile.md

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,17 @@ OpenID Providers:
155155

156156
* shall distribute discovery metadata (such as the authorization endpoint) via the metadata document as specified in [OpenID.Discovery];
157157
* shall reject requests using the resource owner password credentials grant;
158-
* shall only support confidential clients as defined in [RFC6749];
159-
* shall authenticate clients using `private_key_jwt` as specified in Section 9 of [OpenID];
160-
* shall only issue sender-constrained access tokens using DPoP [RFC9449];
158+
* shall support public clients as defined in [RFC6749];
161159
* shall not expose open redirectors {{Section 4.11 of RFC9700}};
162160
* shall only accept its issuer identifier value (as defined in [RFC8414]) as a string in the `aud` claim received in client authentication assertions;
163161
* shall issue authorization codes with a maximum lifetime of 60 seconds;
164162
* shall require clients to be preregistered, and shall not support unauthenticated Dynamic Client Registration requests (see Note 1);
163+
* shall require clients to pre-register their redirect URIs
164+
165+
Access Tokens issued by OpenID Providers:
166+
167+
* shall only be used by the RP to retrieve identity claims at the OpenID Provider;
168+
* shall only issue sender-constrained access tokens using DPoP [RFC9449];
165169

166170
ID Tokens issued by OpenID Providers:
167171

@@ -174,29 +178,23 @@ Note 1: The requirement for preregistered clients corresponds to Section 3.4 "Tr
174178

175179
Note 2: The audience value must be a single string to meet the audience restriction of [NIST.FAL].
176180

177-
Note 3: This claim is not currently defined in OpenID Connect, this maybe should be pulled out into its own spec in OpenID Core instead of being defined here.
181+
Note 3: This claim is not currently defined in OpenID Connect, and should be pulled out into its own spec in OpenID Core instead of being defined here.
178182

179183

180184
For the authorization code flow, OpenID Providers:
181185

182186
* shall require the value of `response_type` described in [RFC6749] to be `code`;
183187
* shall require PKCE [RFC7636] with S256 as the code challenge method (see Note 1 below);
188+
* shall require an exact match of a registered redirect URI as described in {{Section 2.1 of RFC9700}};
184189
* shall issue authorization codes with a maximum lifetime of 60 seconds;
185190
* shall support "Authorization Code Binding to DPoP Key" (as required by {{Section 10.1 of RFC9449}});
186191
* shall return an iss parameter in the authorization response according to [RFC9207];
187-
* shall not transmit authorization responses over unencrypted network connections, and, to this end, shall not allow redirect URIs that use the "http" scheme except for native clients that use loopback interface Redirection as described in Section 7.3 of [RFC8252];
192+
* shall not transmit authorization responses over unencrypted network connections, and, to this end, shall not allow redirect URIs that use the "http" scheme;
188193
* shall reject an authorization code (Section 1.3.1 of [RFC6749]) if it has been previously used;
189194
* shall not use the HTTP 307 status code when redirecting a request that contains user credentials to avoid forwarding the credentials to a third party accidentally (see {{Section 4.12 of RFC9700}});
190195
* should use the HTTP 303 status code when redirecting the user agent using status codes;
191196
* shall support `nonce` parameter values up to 64 characters in length, may reject `nonce` values longer than 64 characters.
192197

193-
TBD: Should PAR be required at level SL1?
194-
195-
* shall support client-authenticated pushed authorization requests according to [RFC9126];
196-
* shall reject authorization requests sent without [RFC9126];
197-
* shall reject pushed authorization requests without client authentication;
198-
* shall issue pushed authorization requests request_uri with expires_in values of less than 600 seconds;
199-
200198

201199
Note 1: while both nonce and PKCE can provide protection from authorization code injection, nonce relies on the client (RP) to implement and enforce the check, and the IdP is unable to verify that it has been implemented correctly, and only stops the attack after tokens have already been issued. Instead, PKCE is enforced by the IdP and stops the attack before tokens are issued.
202200

@@ -207,7 +205,6 @@ Note 1: while both nonce and PKCE can provide protection from authorization code
207205
OpenID Relying Parties:
208206

209207
* shall support third-party initiated login as defined in Section 4 of [OpenID];
210-
* shall support client authentication using `private_key_jwt` as specified in Section 9 of [OpenID];
211208
* shall use the authorization server's issuer identifier value (as defined in [RFC8414]) in the `aud` claim in client authentication assertions. The issuer identifier value shall be sent as a string not as an item in an array;
212209
* shall not expose open redirectors (see {{Section 4.11 of RFC9700}});
213210
* shall only use authorization server metadata (such as the authorization endpoint) retrieved from the metadata document as specified in [OpenID.Discovery] and [RFC8414];
@@ -217,7 +214,7 @@ OpenID Relying Parties:
217214
OpenID Relying Parties making resource requests to the OpenID Provider:
218215

219216
* shall support sender-constrined access tokens using DPoP as described in [RFC9449];
220-
* shall support the server provided nonce mechanism (as defined in {{Section 8 of RFC9449}});
217+
* shall support the server-provided nonce mechanism (as defined in {{Section 8 of RFC9449}});
221218
* shall send access tokens in the HTTP header as described in {{Section 7.1 of RFC9449}};
222219
* shall support refresh tokens and their rotation;
223220

@@ -229,11 +226,6 @@ For the authorization code flow, Relying Parties:
229226
* shall check the iss parameter in the authorization response according to [RFC9207] to prevent mix-up attacks;
230227
* should not use `nonce` parameter values longer than 64 characters;
231228

232-
TBD: Should PAR be required at level SL1?
233-
234-
* shall use Pushed Authorization Requests according to [RFC9126];
235-
* shall only send `client_id` and `request_uri` request parameters to the authorization endpoint (all other authorization request parameters are sent in the pushed authorization request according to [RFC9126]);
236-
237229

238230
# Security Considerations
239231

0 commit comments

Comments
 (0)