Skip to main content

Last Call Review of draft-ietf-oauth-rar-15

Request Review of draft-ietf-oauth-rar
Requested revision No specific revision (document currently at 23)
Type Last Call Review
Team General Area Review Team (Gen-ART) (genart)
Deadline 2022-11-17
Requested 2022-10-27
Authors Torsten Lodderstedt , Justin Richer , Brian Campbell
I-D last updated 2022-11-17
Completed reviews Genart Last Call review of -15 by Robert Sparks (diff)
Secdir Last Call review of -15 by Carl Wallace (diff)
Artart Last Call review of -14 by Thomas Fossati (diff)
Opsdir Last Call review of -23 by Qin Wu
Assignment Reviewer Robert Sparks
State Completed
Request Last Call review on draft-ietf-oauth-rar by General Area Review Team (Gen-ART) Assigned
Posted at
Reviewed revision 15 (document currently at 23)
Result Ready w/issues
Completed 2022-11-17
(-00 was essentially empty, apologies)

I am the assigned Gen-ART reviewer for this draft. The General Area
Review Team (Gen-ART) reviews all IETF documents being processed
by the IESG for the IETF Chair.  Please treat these comments just
like any other last call comments.

For more information, please see the FAQ at


Document: draft-ietf-oauth-rar-14
Reviewer: Robert Sparks
Review Date: 2022-11-17
IETF LC End Date: 2022-11-17
IESG Telechat date: Not scheduled for a telechat


Major issues: Essentially ready for publication as a Proposed Standard RFC, but
with issues to discuss before publication

I have two major issues that I think need discussion:

Major Issue 1) The document seems to be specifying a new way of comparing json
names, claiming it is what RFC8259 requires, but I disagree that RFC8259 says
what this document is claiming. If I'm correct, the document is trying to rely
on the text in section 7 of RFC8259 to support the idea that implementation
MUST NOT alter the json names (such as applying Unicode normalization) before
comparison and that the comparison MUST be performed octet-by-octet. Rather,
section 7 says something more like "you better escape and unescape stuff
correctly if you’re going to do unicode codepoint by codepoint comparison"
which is a completely different statement.

If I'm right, and this is a new comparison rule that goes beyond what JSON
itself defines, I think the group should seek extra guidance from Unicode
experts. If I'm wrong and this behavior is defined somewhere else, please
provide a better pointer to the definition.

In many environments, its unusual for an implementation relying on a stack
below it to have any say at all on whether normalization is going to be applied
to the unicode before the application gets to look. Rather than trying to work
around the problem you've identified with normalization by specifying the
comparison algorithm, consider just making stronger statements about the
strings used in the json names the document defines. Why _can't_ you restrict
the authorization_details values to ascii? If it's because you want to present
the string to a user, consider putting a presentation string elsewhere in the
json that is not used for comparison.

Major Issue 2) The suggested pattern demonstrated starting in figure 16 (using
[] to mean "let the user choose") seems underspecified. If the point is that
different APIs may invent different mechanics _like_ this, and that this is
only an example. Make it much clearer that this is an example. If this is a
pattern you expect all APIs to follow, then more description is warranted. Is
it intended that a user could add and remove things arbitrarily to such lists?
For instance is it intended that this support an interaction where the client
is asking for permission to operate on account A, and the user can say "no, but
you can operate on account B"?

Minor issues:

Section 2: What does "The AS MUST ensure that there is no collision between
different authorization details types that it supports." mean? How is this a
2119 requirement? I _think_ you're trying to point out that the
authorization_details string is a unique-key at any AS and that that has
consequences on the API _designer_, but I don't know what is expected of an AS
coder here. Some clearer words are needed.

Section 7: Please expand on, or rephrase, "if these are deemed of no intended
use for the client." Could you just delete the phrase? If you are only
explaining why an AS might do this, make it clear that it's an example (and
split the example into a separate sentence). If this is the _only_ reason an AS
might omit values in the token Response, then more detail is needed.

Nits/editorial comments:

Throughout the document, there is a mix of "authorization_details" and
"authorization details". It is not completely consistent using one when talking
about the parameter and the other when talking about the general concept of
details about authorization. Please inspect each occurrence and verify that it
is using the correct form.

Introduction: suggest changing 'defines the parameter scope' to 'defines the
parameter "scope"'

Introduction just after figure 1 - expand AS (first use).

Section 2.2: Please rework the sentence where you mention "the cartesian
product" and remove the reference - it is not helpful. Instead of "That is to
say," just say it.

Section 6.1, discussion just after Figure 13. Consider rewriting the sentence
to avoid the term "non-subsuming". Think about translation into other languages.

Section 9.2 intro to Figure 21: something is missing from this sentence. The
RS: at the end is either not needed or needs more words?

Section 10: Please reconsider the first sentence. Write it in a way that
doesn't imply the AS has agency (the AS can't "want"), and avoid the current
"If...then MUST" construction. It would be better to say something like "To
signal (foo) the AS (does these things)".

Section 10 just before Figure 23: Please clarify what it means for a client to
announce types that they "use"? Do you mean "support"? Do you mean "intend to
use in this interaction"? Or something else? Consider saying more about why
allowing the client to announce these things is useful.

Appendix A.1 : expand ACR

Figure 30 caption : typo at eHaelth.