Re: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?

Eran Hammer-Lahav <eran@hueniverse.com> Fri, 25 June 2010 18:15 UTC

Return-Path: <eran@hueniverse.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BEFB028C14E for <oauth@core3.amsl.com>; Fri, 25 Jun 2010 11:15:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.222
X-Spam-Level:
X-Spam-Status: No, score=-2.222 tagged_above=-999 required=5 tests=[AWL=0.377, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id joPlyJW3lLSe for <oauth@core3.amsl.com>; Fri, 25 Jun 2010 11:15:09 -0700 (PDT)
Received: from p3plex1out01.prod.phx3.secureserver.net (p3plex1out01.prod.phx3.secureserver.net [72.167.180.17]) by core3.amsl.com (Postfix) with SMTP id BF5763A6A12 for <oauth@ietf.org>; Fri, 25 Jun 2010 11:15:06 -0700 (PDT)
Received: (qmail 29031 invoked from network); 25 Jun 2010 18:15:15 -0000
Received: from unknown (HELO smtp.ex1.secureserver.net) (72.167.180.21) by p3plex1out01.prod.phx3.secureserver.net with SMTP; 25 Jun 2010 18:15:15 -0000
Received: from P3PW5EX1MB01.EX1.SECURESERVER.NET ([10.6.135.20]) by P3PW5EX1HT003.EX1.SECURESERVER.NET ([72.167.180.21]) with mapi; Fri, 25 Jun 2010 11:15:10 -0700
From: Eran Hammer-Lahav <eran@hueniverse.com>
To: Dick Hardt <dick.hardt@gmail.com>, "Tschofenig, Hannes (NSN - FI/Espoo)" <hannes.tschofenig@nsn.com>
Date: Fri, 25 Jun 2010 11:14:53 -0700
Thread-Topic: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
Thread-Index: AcsUfhXUk/ktt6NIQ7KrslszLvt3aQAE7yxQ
Message-ID: <90C41DD21FB7C64BB94121FBBC2E72343B3EC84994@P3PW5EX1MB01.EX1.SECURESERVER.NET>
References: <3D3C75174CB95F42AD6BCC56E5555B4502BE07CC@FIESEXC015.nsn-intra.net><E7A7F197-3BBC-43F2-8242-D0164057A39A@gmail.com><AANLkTild51WHVcXxYFCygL8sGSGiN3HILDFwIbym6Lfi@mail.gmail.com> <3D3C75174CB95F42AD6BCC56E5555B4502869858@FIESEXC015.nsn-intra.net> <012AB2B223CB3F4BB846962876F47217059B663D@SNV-EXVS08.ds.corp.yahoo.com> <3D3C75174CB95F42AD6BCC56E5555B450286986B@FIESEXC015.nsn-intra.net> <9BBAE9AB-A0CD-448F-B817-21389C1BBCAF@gmail.com>
In-Reply-To: <9BBAE9AB-A0CD-448F-B817-21389C1BBCAF@gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 18:15:32 -0000

I like the idea of an extensibility mechanism for standard scopes, but I am not sure I like the idea of a prefix or reserved characters. Using URIs as scope values was a requirement (and something that is currently deployed by Google). We defined space-delimited to make simple strings and URIs possible as values.

My question is, why isn't URIs enough for standard scopes? Define simple strings as server-specific and allow URIs to be used in standards (which will solve potential name collisions). It might make standard scopes a bit less cool but that's not a technical argument. I also think scopes are likely to be extended a lot more than other extension types and would like to keep the process as light as possible (i.e. no registration at all).

EHL

> -----Original Message-----
> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] On Behalf
> Of Dick Hardt
> Sent: Friday, June 25, 2010 8:50 AM
> To: Tschofenig, Hannes (NSN - FI/Espoo)
> Cc: OAuth WG
> Subject: Re: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
> 
> To clarify, the goal is to reserve a namespace for future use so that near term
> implementations won't collide?
> 
> I expect the standardization of scope values to not be in OAuth, but in
> standardized APIs that use OAuth, so a namespace mechanism that
> differentiates between a standardized scope and an implementation specific
> scope may be useful.
> 
> From what I have gathered, implementors are leaning towards simple strings
> rather than URIs to declare scope. Perhaps reserving the ":" character from
> being in a scope string unless the scope prefix has been registered with
> IANA?
> 
> -- Dick
> On 2010-06-25, at 12:59 AM, Tschofenig, Hannes (NSN - FI/Espoo) wrote:
> 
> > Dick pointed me to the Facebook API on how scope is used.
> > The main page is here:
> > http://developers.facebook.com/docs/authentication/
> >
> > It describes the basic functionality and also lists an example:
> >
> > "
> > https://graph.facebook.com/oauth/authorize?
> >    client_id=...&
> >    redirect_uri=http://www.example.com/callback&
> >    scope=user_photos,user_videos,publish_stream
> > "
> >
> > The values of the scope parameter are then explained here:
> > http://developers.facebook.com/docs/authentication/permissions
> >
> > Example: user_photos ... Provides access to the photos the user has
> > uploaded
> >
> > I think it provides a good example that the scope values are not opaque.
> > Opaque (in this context) means that only the entity creating it needs to
> understand it and nobody else. Here the client needs to understand and set
> them.
> >
> > However, one could argue that the scope values are already bound to the
> specific entity the client requests to obtain the assertion from. In this specific
> case it would be "https://graph.facebook.com".
> >
> > To respond to the statement Dick made about having standardized values
> later there would still be the need to decide about the structure of the
> values now. One possibility is to just add a prefix for standardized values that
> are not allowed to be used in other cases, such as "std:".
> >
> > Ciao
> > Hannes
> >
> >
> >> -----Original Message-----
> >> From: ext William Mills [mailto:wmills@yahoo-inc.com]
> >> Sent: Thursday, June 24, 2010 8:15 PM
> >> To: Tschofenig, Hannes (NSN - FI/Espoo); ext Lukas Rosenstock; Dick
> >> Hardt
> >> Cc: OAuth WG
> >> Subject: RE: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
> >>
> >> I'm in favor of having a spaces separated list of tokens.
> >> The only case I can think of where the client needs to handle the
> >> scope as anything other than opaque is when it is accessing multiple
> >> services.  To reduce the numebr of login events the client will have
> >> to poll all the endpoints it wants to access and get all the scopes
> >> advertized by them and submit them all, and once it has them it needs
> >> to submit all of them in it's auth request, so we need something
> >> that's easy for the client to put together.
> >>
> >>
> >> -bill
> >>
> >>> -----Original Message-----
> >>> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org]
> >>> On Behalf Of Tschofenig, Hannes (NSN - FI/Espoo)
> >>> Sent: Thursday, June 24, 2010 3:58 AM
> >>> To: ext Lukas Rosenstock; Dick Hardt
> >>> Cc: OAuth WG
> >>> Subject: Re: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
> >>>
> >>> The question is whether one would ever want to have a
> >>> standardized semantic for the scope parameter.
> >>> If the answer to that question is "no" then it does not
> >>> matter what the format is. It can well be a list of
> >>> space-delimited strings (as it is currently defined).
> >>>
> >>> An evironment specific semantic works well in cases where
> >>> entity X sets the value and later it receives the value
> >>> again. Only entity X needs to understand what it means.
> >>>
> >>> In some environments the use case is slightly different,
> >>> namely entity X and entity Y are from the same organization
> >>> and agree on the semantic. Usage of OAuth within an
> >>> enterprise might be such a case.
> >>>
> >>> Now, the usage of the scope parameter is, however, a bit
> >>> different in the spec. Section 4, for example, describes how
> >>> a client obtains an access token. How does the client know
> >>> what scope parameters to set and what the semantic is?
> >>>
> >>> Ciao
> >>> Hannes
> >>>
> >>>> -----Original Message-----
> >>>> From: ext Lukas Rosenstock [mailto:lr@lukasrosenstock.net]
> >>>> Sent: Thursday, June 24, 2010 10:49 AM
> >>>> To: Dick Hardt
> >>>> Cc: Tschofenig, Hannes (NSN - FI/Espoo); OAuth WG
> >>>> Subject: Re: [OAUTH-WG] Scope :: Was: Extensibility for OAuth?
> >>>>
> >>>> Wasn't there some concensus that URIs would be good for
> >> scope? They
> >>>> have "in-built namespacing" ...
> >>>>
> >>>> Lukas
> >>>>
> >>>> 2010/6/23 Dick Hardt <dick.hardt@gmail.com>:
> >>>>>
> >>>>> On 2010-06-22, at 11:07 PM, Tschofenig, Hannes (NSN -
> >>>> FI/Espoo) wrote:
> >>>>>
> >>>>>> "
> >>>>>>   scope
> >>>>>>         OPTIONAL.  The scope of the access request
> >>>> expressed as a list
> >>>>>>         of space-delimited strings.  The value of the
> >>>> "scope" parameter
> >>>>>>         is defined by the authorization server.  If the
> >>>> value contains
> >>>>>>         multiple space-delimited strings, their order does
> >>>> not matter,
> >>>>>>         and each string adds an additional access range to the
> >>>>>>         requested scope.
> >>>>>> "
> >>>>>>
> >>>>>> Do folks think it would be useful to have standardized values?
> >>>>>
> >>>>> Not at this time. The semantics of scope are all over the
> >>>> place. If standardized, people will feel they need to pick
> >>> one that is
> >>>> close to what they want, but is not exactly what they mean.
> >>> I think it
> >>>> is better for the AS to define what they mean by a scope
> >>> and give it a
> >>>> name that makes sense in that context.
> >>>>>
> >>>>>>
> >>>>>> If the answer is "yes", then it would be useful to
> >>>> differentiate the
> >>>>>> standardized values from those values that are purely
> >>>> defined locally by
> >>>>>> the authorization server.
> >>>>
> >>> _______________________________________________
> >>> 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