Many of my comments have probably been covered by other folks on the list, but I'm going to repeat things along here anyway:

Preamble:

Does this document actually obsolete 5849? Since OAuth2 is explicitly not backwards compatible, is this WG really making the claim that we're updating OAuth, or rather defining a newer (and better) way of doing it?

1.4.2 (et al)

I still don't like the word "implicit" being used here, since there's really nothing implicit about it. The grant being made is explicit as far as the end user is concerned, and could even have an intermediary "do you authorize this?" screen in the middle. I'm still failing to come up with a better term than the original "user-agent" wording. What we're really talking about here is a way for an end user to directly authorize a client as opposed to doing a traditional double-redirect. So it's direct like client-credentials and username-and-password, but it's on behalf of a user and the client still never sees the user's credentials to the AS. We need, and have needed for some time, a better way to say this.

2.0

The phrase "extension grant types MAY define" should probably be the more encompasing "extensions MAY define".

2.1

The wording on implicit and explicit makes even less sense here, since if the client is getting back a token directly then the grant is even more explicit than if the client has to trade the code for something. Think about it this way: if the AS is giving you a code, it's implied that that code is good for you to get a token that you can actually do something with. The AS hasn't actually granted the client access to the PR yet, though, just provided a means for doing so. On the other hand, the client that gets a token directly is being granted explicit access to the PR directly. The server's not implying anything here, it's saying "hey, go get stuff with this token".

3.

With 'client_id' required on most steps, the phrase that the AS should not issue credentials to untrustworthy clients is incongruous. Perhaps better would be to say that the AS shouldn't trust the credentials issued to clients without the ability to keep secrets. Basically, we need a way of saying that the client identifier is necessary but the assumption of it being kept a secret can only go so far. I'm sure the security considerations will cover this more deeply, but this is something that should be clarified up front here, especially because this section is referenced throughout the document.

4.1.2 (and other flows)

Rephrase: "The clients should avoid making assumptions about code value sizes. The authorization server should document the size of any value it issues." as "Clients should avoid making assumptions about code value sizes, and the authorization server should document the size of any value it issues."

4.1.3

"Validate the client credentials and ensure they match the authorization code." makes it sound like the client credentials and the authorization code are the same, or derived from each other. Suggest: "Validate the client credentials and ensure that the client presenting the code is the same one the code was originally issued to." This phrasing also implies an architecture decision: access codes need to be bound to client id's.

4.1.4 (and other flows)

What's with the "example_parameter" bit in all the examples? I think we only need this in 5.1's example. It's confusing when peppered throughout the spec without context.

4.2

Remove "or native applications", add language about the saved round-trip, which is the real reason for this flow, not security concerns over saved secrets. Javascript clients could easily use the auth code flow with their security profile (and an untrusted client password, which is allowed).

5

This section should probably point out that the poorly-named implicit flow doesn't use the format in here, and that the reader should go check out section 4.2 instead.

5.2

Provide a mechanism for extensions to put different error codes onto the wire, either through a registry, URIs, or language saying how to update this RFC.

6

Do we need to say that downscoping an access token doesn't change the issued scope for the refresh token? It seems obvious to me, but I'm wondering if we want to head off questions about this behavior. In general, I'd still like to see an explicit section about this behavior apart from the (well-written) paragraph about the scope parameter. Particularly since we've had someone propose a rescoping proposal already (but I can't seem to find this in my email archives now.) I can propose text if the WG agrees this is of use; otherwise it probably belongs in developer guides.




Overall, -13 is in decent shape, and modulo a little polishing as enumerated here it's basically ready, in my opinion.

 -- Justin


_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to