Hi Orie,

Per our discussion, I've created 
https://github.com/oauth-wg/draft-ietf-oauth-resource-metadata/pull/59, which 
is intended to satisfy your DISCUSS by allowing resource identifiers to contain 
query parameters.  It also applies the other changes that I agreed to below.

My apologies that the PR is also somewhat littered with language changes to 
consistently use the term "metadata parameter" instead of other terms that were 
sometimes used for the same thing.

Please let me know if you'd like any changes before it's merged.

                                Thanks again,
                                -- Mike

-----Original Message-----
From: Michael Jones 
Sent: Tuesday, October 1, 2024 3:49 PM
To: Orie Steele <orie@transmute.industries>; The IESG <i...@ietf.org>
Cc: draft-ietf-oauth-resource-metad...@ietf.org; oauth-cha...@ietf.org; 
oauth@ietf.org; rifaat.s.i...@gmail.com
Subject: RE: Orie Steele's Discuss on draft-ietf-oauth-resource-metadata-10: 
(with DISCUSS and COMMENT)

Hi Orie,

Thanks for your review.  My replies are inline below, prefixed by "Mike>".

-----Original Message-----
From: Orie Steele via Datatracker <nore...@ietf.org>
Sent: Tuesday, October 1, 2024 12:11 PM
To: The IESG <i...@ietf.org>
Cc: draft-ietf-oauth-resource-metad...@ietf.org; oauth-cha...@ietf.org; 
oauth@ietf.org; rifaat.s.i...@gmail.com; rifaat.s.i...@gmail.com
Subject: Orie Steele's Discuss on draft-ietf-oauth-resource-metadata-10: (with 
DISCUSS and COMMENT)

Orie Steele has entered the following ballot position for
draft-ietf-oauth-resource-metadata-10: Discuss

When responding, please keep the subject line intact and reply to all email 
addresses included in the To and CC lines. (Feel free to cut this introductory 
paragraph, however.)

Please refer to 
https://datatracker.ietf.org/doc/statement-iesg-handling-ballot-positions-20220121/
 for more information about how to handle DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-oauth-resource-metadata/


----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

## Discuss

### Forbidden Query & Fragment

```
175           The Protected resource's resource identifier, which is a URL that
176           uses the https scheme and has no query or fragment components.
```

I can understand the decision to keep fragment off, per:

https://url.spec.whatwg.org/#url-equivalence

But I don't understand why query is forbidden, especially considering:

https://datatracker.ietf.org/doc/html/rfc3986#section-3.4

I would expect query to be allowed, and for some comment about canonical URI 
encoding based on query ordering to be made.

I assume query is omitted to make processing rules described in Section 3 
simpler... This also restricts the set of existing resources which this 
specification could apply to... and implies that resource identifiers that are 
URLs do not contain queries.

It seems like a specification should be able to describe transformation rules 
that use query or hostname rewriting, even if the current spec sees no need to 
use query or hostname structures, why should other specifications be forbidden 
from doing so?

For an example:

https://example.com/oauth-protected-resource
https://example.com/.well-known/oauth-protected-resource

vs

https://oauth-protected.example.com/.well-known/fancy-index?key=value
https://example.com/.well-known/oauth-protected?key=value...

I searched github and the mailing list to see if there was discussion regarding 
this, please point it out if I somehow missed it.

Mike> I know of no examples of .well-known URIs being combined with query 
parameters in practice.  That seems like a theoretical possibility that's best 
avoided for complexity reasons in the real world.  The same restriction in the 
sister specification RFC 8414 has stood up well in practice.  
https://www.rfc-editor.org/rfc/rfc8414.html#section-2 prohibits query 
parameters in issuer identifier.  I'm reluctant to diverge from this OAuth 
identifier precedent without a compelling reason to do so.

Mike> For completeness, yes, https://www.rfc-editor.org/rfc/rfc8615#section-3 
does say that "Registrations MAY also contain additional information, such as 
the syntax of additional path components, query strings, and/or fragment 
identifiers to be appended to the well-known URI, or protocol- specific 
details".  However, the general treatment of query parameters with .well-known 
URIs you're asking about wouldn't result in a registration defining the syntax 
of specific query strings.  Rather, it would require a .well-known registration 
allowing *any* query parameters, which seems beyond the scope for what was 
intended in RFC 8615.

Mike> For these reasons, I'd ask that you please withdraw your DISCUSS on this 
basis.

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

# Orie Steele, ART AD, comments for draft-ietf-oauth-resource-metadata-10
CC @OR13

* line numbers:
  -
  
https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-oauth-resource-metadata-10.txt&submitcheck=True

* comment syntax:
  - https://github.com/mnot/ietf-comments/blob/main/format.md

* "Handling Ballot Positions":
  - https://ietf.org/about/groups/iesg/statements/handling-ballot-positions/

## Comments

Thanks to Arnt Gulbrandsen for the ART ART review.

### JSON Serialization Forbidden?

```
158        Compact Serialization or the JWE Compact Serialization; the JWS JSON
159        Serialization and the JWE JSON Serialization are not used.
```

This is descriptive, but I wonder if there is an intention to enable better 
interoperability by explicitly forbidding JSON Serialization.

Mike> This is the same language as in 
https://www.rfc-editor.org/rfc/rfc8414.html#section-1.1.  Yes, the intent is to 
facilitate interoperability by making choices.  Let us know if you'd like us to 
say that explicitly, going beyond the parallel RFC 8414 language.

### signed_metadata in JWT claims

```
346           JWT.  A signed_metadata metadata value SHOULD NOT appear as a
347           claim in the JWT.
```

When this should is ignored what happens? Raise and error or ignore?

Mike> Roman raised the same question.  Text is added in 
https://github.com/oauth-wg/draft-ietf-oauth-resource-metadata/pull/58 to 
answer it.  The addition recommends rejecting the metadata when this occurs.

### media type of response

```
425        configuration.  A successful response MUST use the 200 OK HTTP status
426        code and return a JSON object using the application/json content type
427        that contains a set of claims as its members that are a subset of the
428        metadata values defined in Section 2.  Other claims MAY also be
429        returned.
```

Based on the last sentence, it seems like the metadata resource is intended to 
be extended, should it be possible to negotiate its extended representations?

Mike> This is the standard OAuth extensibility mechanism that has stood the 
test of time by enabling non-breaking extensibility.  The pattern is that 
additional parameter values MAY be used and MUST be ignored if not understood.  
That means that when a new extension is deployed by one party it doesn't break 
deployments of other parties that it interacts with that don't understand the 
extension.  It's just ignored.

Mike> Imagine the opposite behavior where not-understood parameters cause an 
error.  That would mean that any extension using a new parameter would break 
deployments.  That means no OpenID Connect, FAPI, PKCE, or RAR on top of OAuth. 
 Allowing non-breaking extensions is essential.

Mike> https://www.rfc-editor.org/rfc/rfc8414.html#section-3.2 also uses exactly 
the same language.  That said, I'd be glad to expand the exposition to say that 
not-understood metadata parameters MUST be ignored.

Why restrict the media type to "application/json" ?

Mike> This is the same media type as used for other OAuth metadata data 
structures, for instance, it is used in 
https://www.rfc-editor.org/rfc/rfc8414.html#section-3.2 and 
https://www.rfc-editor.org/rfc/rfc7591.html#section-3.2.  It makes sense to do 
the same here.

### Identical URIs

```
460        metadata.  If these values are not identical, the data contained in
461        the response MUST NOT be used.
```

Consider being more precise regarding what "identical" means here, see the URL 
equivalence section of WHATWG URL spec for example:

https://url.spec.whatwg.org/#url-equivalence

I also wonder if URL patterns are useful here...

https://urlpattern.spec.whatwg.org/

You might also consider calling out Section 6 here.

Mike> This is the same language as used in 
https://www.rfc-editor.org/rfc/rfc8414.html#section-3.3.  I'm truly reluctant 
to introduce the notion of requiring URL canonicalization, as is implied by 
https://url.spec.whatwg.org/#url-equivalence.  No harm is done when rejecting 
values that are not byte-for-byte equivalent.  To me, the existing OAuth 
language is already sufficient.

## Nits

### Missing owner?

```
627        At any point, for any reason determined by the protected resource,
628        the protected resource MAY respond with a new WWW-Authenticate
```

Mike> Actually, I think it would be better to change "protected resource" to 
"resource server" rather than "protected resource owner".  The resource owner 
is unlikely to be involved.

Thanks for your useful review!

                                -- Mike

_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to