BTW, making this change includes dropping the client state parameter and 
allowing clients to add their own state parameter to the callback.

EHL


On 4/16/10 7:34 AM, "Eran Hammer-Lahav" <e...@hueniverse.com> wrote:

First, this argument only holds for callbacks, not for the authorization 
endpoint. Since this problem is easily solved with a simple web server 
configuration, I don't think it is as bad as you make it sound. I'm sure that 
the Drupal community will find a solution if there are valuable OAuth 2.0 
resources they want to access.

However, I don't have an objection to a prefix for callback parameters since 
those are not purely protocol endpoints but client endpoints with potential 
existing semantics. We already have oauth_token for accessing a protected 
resource using query parameters (for the same reason).

But this argument does not extent to the authorization endpoint.

EHL


On 4/15/10 9:10 PM, "Marius Scurtescu" <mscurte...@google.com> wrote:

On Thu, Apr 15, 2010 at 6:39 PM, Evan Gilbert <uid...@google.com> wrote:
>
> On Thu, Apr 15, 2010 at 6:31 PM, Marius Scurtescu <mscurte...@google.com>
> wrote:
>>
>> OK, here is a concrete example:
>>
>> A Drupal (popular PHP based CMS) based web site wants to become an
>> OAuth 2 client. Among other things it needs to implement a callback
>> endpoint.
>>
>> Ideally this endpoint would look something like:
>> http://example.com/oauth/back
>>
>> Depending on what web server is used and how it is configured, the
>> above URL may not be possible. Drupal is dispatching all requests
>> through the main script and the path of the endpoint is passed as a
>> query parameter. Normally the above URL is seen as:
>> http://example.com/index.php?q=oauth/back
>>
>> The cleaner http://example.com/oauth/back is achieved with Apache URl
>> rewriting, but if Apache is not available or configured to support
>> that, you are stuck with the ugly query parameters.
>>
>> In the unlucky case the registered callback, and the actual callback
>> used in messages, is "http://example.com/index.php?q=oauth/back";. This
>> callback has a query parameter, it is not used for state, and it is
>> not an extension.
>>
>> It so happens that "q" will not conflict with any of the existing
>> OAuth 2 parameters, but you can see the potential issue.
>>
>> Now, even if Apache is available and URL rewrites work, so the nice
>> callback is used, a collision would still happen if "q" was used by
>> OAuth 2. Apache rewrites "/oauth/back", but the Drupal dispatcher
>> always sees "/index.php?q=oauth/back", so another q parameter would
>> break things.
>
> We should ask Drupal to change their query parameter to drupal_q.

And every single framework that does dispatching based on query parameters :-)


>> I do realize that a prefix will not solve ALL collisions and it is
>> also not solving the extension question, but I still think makes a big
>> difference.
>
> This use case makes sense, but do we know of any existing conflicts?
> Very few web servers have this restrictive a URL parameter policy - I think
> I'm OK losing compatibility with future web servers that reserve the
> "callback" parameter for other purposes.

My guess is that most PHP frameworks will have a similar problem, they
will require query parameters.  This is not a web server issue, but a
framework issue.

Not only "callback" can cause a collision, but every single OAuth 2 parameter.


Marius


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

Reply via email to