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: draft-parecki-oauth-client-id-metadata-document.md
+21-5Lines changed: 21 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,8 +131,7 @@ This specification defines the client identifier as a URL with the following
131
131
restrictions. Client identifier URLs MUST have an "https" scheme, MUST contain a
132
132
path component, MUST NOT contain single-dot or double-dot path segments, MUST
133
133
NOT contain a fragment component and MUST NOT contain a username or password
134
-
component. Client identifier URLs MAY contain a query string component and MAY
135
-
contain a port.
134
+
Client identifier URLs SHOULD NOT include a query string component, and MAY contain a port.
136
135
137
136
This specification places no restrictions on what URL is used as
138
137
a client identifier. A short URL is RECOMMENDED, since the URL may
@@ -166,15 +165,23 @@ The client metadata document MAY define additional properties in the response.
166
165
The client metadata document MAY also be served with more specific content types
167
166
as long as the response is JSON and conforms to `application/<AS-defined>+json`.
168
167
169
-
The `token_endpoint_auth_method` property MUST NOT include `client_secret_post`
170
-
or `client_secret_basic`, as there is no way to establish a shared secret to be
171
-
used with these authentication methods. See {{client_authentication}} for more details.
168
+
As there is no way to establish a shared secret to be used with client metadata
169
+
documents, the following restrictions apply on the contents of the
170
+
client metadata document:
171
+
172
+
* the `token_endpoint_auth_method` property MUST NOT include `client_secret_post`
173
+
or `client_secret_basic`
174
+
* the `client_secret` and `client_secret_expires_at` properties MUST NOT be used
175
+
176
+
See {{client_authentication}} for more details.
172
177
173
178
Other specifications MAY place additional restrictions on the contents of the
174
179
client metadata document accepted by authorization servers implementing their
175
180
specification, for instance, preventing the registration of confidential clients
176
181
by requiring the `token_endpoint_auth_method` property be set to `"none"`.
177
182
183
+
TBD: We may want a property such as `client_id_expires_at` for indicating that the client is ephemeral and not valid after a given timestamp, especially for documents issued by a service for development purposes.
184
+
178
185
## Metadata Discovery Errors
179
186
180
187
If fetching the metadata document fails, the authorization server SHOULD abort the
@@ -219,6 +226,12 @@ This enables clients to avoid sending the user to a dead end, by only redirectin
219
226
220
227
In addition to the security considerations in OAuth 2.0 Core {{RFC6749}}, and OAuth 2.0 Threat Model and Security Considerations {{RFC6819}}, and {{I-D.draft-ietf-oauth-security-topics}} the additional considerations apply.
221
228
229
+
## Client ID Metadata Documents for Development Purposes {#documents_for_development}
230
+
231
+
When developing applications against a service that uses Client ID Metadata Documents, developers often encounter the issue of "how do I serve a Client ID Metadata Document at a https URL whilst developing my application?".
232
+
233
+
For this purpose, it is recommended to either host a document on a webserver somewhere that describes the application under development (e.g., using localhost redirect URIs), or to use a service which can generate and host a Client ID Metadata Document for you. Such a service should issue URLs that are stable.
234
+
222
235
## Client Authentication {#client_authentication}
223
236
224
237
Since the client establishes its own registration data at the authorization server,
@@ -295,6 +308,9 @@ The authors would like to thank the following people for their contributions and
295
308
-02
296
309
297
310
* Added security consideration around displaying logos to end users
311
+
* Changed query string parameters in Client ID Metadata Document URLs to "SHOULD NOT", since this encourages bad security practices (e.g., minting documents based on query string parameters)
312
+
* Added prohibition on the `client_secret_expires_at` property, as it is not relevant for Client ID Metadata Documents.
313
+
* Added security consideration for development use-cases.
0 commit comments