Skip to content

Commit 59371ca

Browse files
committed
Merge branch 'main' of github.com:aaronpk/draft-parecki-oauth-client-id-document
2 parents 18fdb09 + 55b78ea commit 59371ca

File tree

1 file changed

+67
-11
lines changed

1 file changed

+67
-11
lines changed

draft-parecki-oauth-client-id-metadata-document.md

Lines changed: 67 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "OAuth Client ID Metadata Document"
33
abbrev: "Client ID Document"
4-
category: info
4+
category: std
55

66
docname: draft-parecki-oauth-client-id-metadata-document-latest
77
submissiontype: IETF
@@ -34,6 +34,7 @@ normative:
3434
RFC6749:
3535
RFC6819:
3636
RFC7591:
37+
RFC8414:
3738
I-D.draft-ietf-oauth-security-topics:
3839

3940
informative:
@@ -54,6 +55,21 @@ informative:
5455
- name: elf Pavlik
5556
ins: elf Pavlik
5657
- name: Dmitri Zagidulin
58+
OpenID:
59+
title: "OpenID Connect Core 1.0"
60+
date: 2023-12-15
61+
target: https://openid.net/specs/openid-connect-core-1_0.html
62+
author:
63+
- name: N. Sakimura
64+
org: NAT.Consulting
65+
- name: J. Bradley
66+
org: Yubico
67+
- name: M. Jones
68+
org: Self-Issued Consulting
69+
- name: B. de Medeiros
70+
org: Google
71+
- name: C. Mortimore
72+
org: Disney
5773
OpenID.Federation:
5874
title: "OpenID Federation 1.0"
5975
date: 2024-05-17
@@ -72,6 +88,9 @@ informative:
7288
- name: V. Dzhuvinov
7389
org: Connect2id
7490

91+
entity:
92+
SELF: "[draft-parecki-oauth-client-id-metadata-document-latest]"
93+
7594
--- abstract
7695

7796
This specification defines a mechanism through which an OAuth client can
@@ -147,6 +166,10 @@ The client metadata document MAY define additional properties in the response.
147166
The client metadata document MAY also be served with more specific content types
148167
as long as the response is JSON and conforms to `application/<AS-defined>+json`.
149168

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.
172+
150173
Other specifications MAY place additional restrictions on the contents of the
151174
client metadata document accepted by authorization servers implementing their
152175
specification, for instance, preventing the registration of confidential clients
@@ -174,28 +197,37 @@ is valid?
174197
## Redirect URL Registration
175198

176199
According to {{I-D.draft-ietf-oauth-security-topics}}, the authorization server
177-
MUST require registration of redirect URLs, and compare redirect URLs with
178-
exact string matching. This client information discovery establishes a
179-
registered redirect URL with the authorization server which is used when
180-
comparing the redirect URL in an authorization request against the registered
181-
redirect URLs.
200+
MUST require registration of redirect URIs, and MUST ensure that the redirect URI
201+
in a request is an exact match of a registered redirect URI.
182202

183-
TBD: Is it exact string matching, or is it still using simple string comparison per [RFC3986]
203+
This method of client information discovery establishes a
204+
registered redirect URI with the authorization server which is used when
205+
comparing the redirect URI in an authorization request against the registered
206+
redirect URIs.
207+
208+
# Authorization Server Metadata {#as-metadata}
209+
210+
Authorization servers that publish Authorization Server Metadata {{RFC8414}} MUST include the following property to signal support for client metadata documents as described in this specification.
211+
212+
`client_id_metadata_document_supported`:
213+
: OPTIONAL. Boolean value specifying whether the authorization server supports retrieving client metadata from a `client_id` URL as described in this specification.
214+
215+
This enables clients to avoid sending the user to a dead end, by only redirecting the user to an authorization server that supports this specification. Otherwise, the client would redirect the user and the user would be met with an error about an invalid client as described by Section 4.1.2.1 of {{RFC6749}}.
184216

185217

186218
# Security Considerations
187219

188220
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.
189221

190-
## Public vs Confidential Clients
222+
## Client Authentication {#client_authentication}
191223

192224
Since the client establishes its own registration data at the authorization server,
193225
prior coordination of client credentials is not possible. However, clients MAY establish
194226
credentials at the authorization server by using authentication methods that use
195227
public/private key pairs, by publishing the public key in their metadata document.
196228

197229
For example, the client MAY include the following properties in its metadata document
198-
to establish a public key and the `private_key_jwt` authentication method:
230+
to establish a public key and the `private_key_jwt` authentication method defined in {{OpenID}}:
199231

200232
{
201233
...
@@ -221,9 +253,22 @@ If fetching the client metadata document fails for any reason, the `client_id` U
221253
Authorization servers fetching the client metadata document and resolving URLs located in the metadata document should be aware of possible SSRF attacks. Authorization servers SHOULD avoid fetching any URLs using private or loopback addresses and consider network policies or other measures to prevent making requests to these addresses. Authorization servers SHOULD also be aware of the possibility that URLs might be non-http-based URI schemes which can lead to other possible SSRF attack vectors.
222254

223255

256+
## Maximum Response Size for Client Metadata Documents
257+
258+
Authorization servers SHOULD limit the response size when fetching the client metadata document, as to avoid denial of service attacks against the authorization server by consuming excessive resources (memory, disk, database). The recommended maximum response size for client metadata documents is 5 kilobytes.
259+
260+
224261
# IANA Considerations
225262

226-
This document has no IANA actions.
263+
## OAuth Authorization Server Metadata Registry
264+
265+
The following authorization server metadata value is defined by this specification and registered in the IANA "OAuth Authorization Server Metadata" registry established in OAuth 2.0 Authorization Server Metadata [RFC8414].
266+
267+
* Metadata Name: `client_id_metadata_document_supported`:
268+
* Metadata Description: JSON boolean value specifying whether the authorization server supports retrieving client metadata from a `client_id` URL.
269+
* Change Controller: IETF
270+
* Specification Document: {{as-metadata}} of {{&SELF}}
271+
227272

228273

229274
--- back
@@ -233,4 +278,15 @@ This document has no IANA actions.
233278

234279
The idea of using URIs as the `client_id` in OAuth based authorization requests is not new, and has previously been specified in varying ways by [IndieAuth], [Solid-OIDC], and [OpenID.Federation]. This specification is largely inspired by the work of Aaron Coburn, elf Pavlik, and Dmitri Zagidulin in their [Solid-OIDC] specification which defined dereferenceable Client Identifier Documents.
235280

236-
TODO further acknowledgements?
281+
The authors would like to thank the following people for their contributions and reviews of this specification: Matthieu Sieben.
282+
283+
284+
# Document History
285+
{:numbered="false"}
286+
287+
(This appendix to be deleted by the RFC editor in the final specification.)
288+
289+
-00
290+
291+
* Initial draft
292+

0 commit comments

Comments
 (0)