Thanks for the feedback!  Inline...

On Mon, Mar 22, 2010 at 5:11 AM, Manger, James H
<james.h.man...@team.telstra.com> wrote:
> Thanks for writing this draft for OAuth 2.0, David.
> A couple of comments.
>
> 1. CLIENT SECRET
> Client authentication needs to be independent of OAuth.
> The Web Server Flow sends oauth_client_secret to the access token request 
> endpoint along with other oauth_ parameters. This is a poor design.
>
> Consider, for instance, a service that authenticates clients with TLS client 
> certs. Such clients don't have a shared secret to put in the 
> oauth_client_secret parameter so they cannot perform protocol in this OAuth 2 
> draft.
> Even if client certs are rare, the issue is that there is no reason why 
> client certs should prevent OAuth 2 from working.
>
> Servers that can authenticate clients are likely to offer them various APIs 
> in addition to the OAuth get-a-token calls. The same client authentication 
> mechanism used for those calls should be reused for the get-a-token calls.
>
> I suggest dropping the oauth_client_secret, perhaps adding text such as:
> "Servers that require clients to be pre-registered may require this client 
> request to be authenticated."

Agreed with Luke.  This should be a new flow if you're using TLS client certs.


> 2. STATE
> OAuth has various parameter that are used to carry state for another party in 
> a message, which is helpful for building scalable systems. OAuth should avoid 
> duplicating these fields or defining their semantics when they are opaque to 
> the party carrying them. This will keep the protocol simpler, without losing 
> any functionality.
>
> oauth_client_state is unnecessary as it is always accompanied by 
> oauth_callback_url that can encode the state directly. The examples could 
> include, say, 
> ...callback_url=http://client.example.com/cb%3Fstate=FSR63fs&oauth_mode=... 
> to reflect likely cases. It is still simple to compare the callback to a 
> pre-register value if required (eg compare suffix, or compare ignoring 
> additional query params).

Has there been any discussion of the oauth_client_state parameter on
the list?  I don't really remember it.


> oauth_scope is unnecessary as it is server-specific and can be encoded 
> directly in the server-specific URIs. A client with no server-specific 
> knowledge has no way of using oauth_scope, which is a sign it is better 
> omitted from the spec and left to specific servers when describing their 
> access/authz URIs. I have no problems with a service saying its user authz 
> URI is, say, http://example.com/authz?scope={all|blog}.

Scope is something that we've seen used by many OAuth 1.0 providers so
adding a consistant parameter to represent it makes sense.  There's
still not alignment on what individual scopes actually mean, but
hopefully we'll get there (outside of this spec).


> And a few minor issues:
>
> 3. If you want to return error params in the body of a 401 the important 
> feature is setting Content-Type to application/x-www-form-urlencoded. This 
> isn't mentioned in the text or example.

hmm, I'll double check but I think it's mentioned in the flows which
contain explicit error parameters.  There's an entire other debate
about if it's too difficult to parse form encoded parameters in a HTTP
response (versus a request where they normally are).  I've also been
asking folks to start documenting the error conditions they'd like to
see represented.


> 4. The Username and Password Flow has oauth_client_secret in the example but 
> not in the expected list of parameters.

Fixed, thanks!


> 5. Just call it TLS (not TLS/SSL).

+1 to what Luke said.  SSL means something to far more people than TLS does.

>
>
> --
> James Manger
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to