Re: [OAUTH-WG] Versioning

"William Mills" <wmills@yahoo-inc.com> Thu, 01 July 2010 21:37 UTC

Return-Path: <wmills@yahoo-inc.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 6D20B3A68A0 for <oauth@core3.amsl.com>; Thu, 1 Jul 2010 14:37:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.288
X-Spam-Level:
X-Spam-Status: No, score=-17.288 tagged_above=-999 required=5 tests=[AWL=0.311, BAYES_00=-2.599, USER_IN_DEF_WHITELIST=-15]
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 Z6eIlS6Uzikp for <oauth@core3.amsl.com>; Thu, 1 Jul 2010 14:36:56 -0700 (PDT)
Received: from mrout1.yahoo.com (mrout1.yahoo.com [216.145.54.171]) by core3.amsl.com (Postfix) with ESMTP id 63FDE3A63CB for <oauth@ietf.org>; Thu, 1 Jul 2010 14:36:54 -0700 (PDT)
Received: from SNV-EXPF01.ds.corp.yahoo.com (snv-expf01.ds.corp.yahoo.com [207.126.227.250]) by mrout1.yahoo.com (8.13.8/8.13.8/y.out) with ESMTP id o61LabQp029432; Thu, 1 Jul 2010 14:36:37 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; s=serpent; d=yahoo-inc.com; c=nofws; q=dns; h=received:x-mimeole:content-class:mime-version: content-type:content-transfer-encoding:subject:date:message-id: in-reply-to:x-ms-has-attach:x-ms-tnef-correlator:thread-topic: thread-index:references:from:to:return-path:x-originalarrivaltime; b=GmH/XDQjXJK6awO3V2ajtlohmxqevEkpsPJ5TQIcYU+JVt3Das1Z+KoFepPqYcVj
Received: from SNV-EXVS08.ds.corp.yahoo.com ([207.126.227.8]) by SNV-EXPF01.ds.corp.yahoo.com with Microsoft SMTPSVC(6.0.3790.4675); Thu, 1 Jul 2010 14:36:37 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable
Date: Thu, 01 Jul 2010 14:36:09 -0700
Message-ID: <012AB2B223CB3F4BB846962876F47217059B696F@SNV-EXVS08.ds.corp.yahoo.com>
In-Reply-To: <90C41DD21FB7C64BB94121FBBC2E72343B3ED4C515@P3PW5EX1MB01.EX1.SECURESERVER.NET>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: [OAUTH-WG] Versioning
Thread-Index: AcsZTElmAmpwoxk6TFekQiB+TeOGJwAEMKqwAAH2BSA=
References: <4C2C6D4A.5010401@cdatazone.org><90C41DD21FB7C64BB94121FBBC2E72343B3ED4C3E6@P3PW5EX1MB01.EX1.SECURESERVER.NET><012AB2B223CB3F4BB846962876F47217059B693B@SNV-EXVS08.ds.corp.yahoo.com><90C41DD21FB7C64BB94121FBBC2E72343B3ED4C454@P3PW5EX1MB01.EX1.SECURESERVER.NET><AANLkTikjW5OqYJIzwxrooAmHoWR5tNX1522TTBLH5rBT@mail.gmail.com><90C41DD21FB7C64BB94121FBBC2E72343B3ED4C475@P3PW5EX1MB01.EX1.SECURESERVER.NET><AANLkTilTDOVNjJw9K0ZismTzbbNeuVcEBktE-8ojDfVR@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72343B3ED4C515@P3PW5EX1MB01.EX1.SECURESERVER.NET>
From: William Mills <wmills@yahoo-inc.com>
To: Eran Hammer-Lahav <eran@hueniverse.com>, oauth@ietf.org
X-OriginalArrivalTime: 01 Jul 2010 21:36:37.0152 (UTC) FILETIME=[7BEA1200:01CB1965]
Subject: Re: [OAUTH-WG] Versioning
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: Thu, 01 Jul 2010 21:37:01 -0000

In re:

	1. Token syntax
	2. Presence of 'oauth_signature_method'
	3. Presence of 'oauth_signature'
	4. Presence of no other 'oauth_' parameter than 'oauth_token' 

We can certainly do better than this.  Yeah, the server should be smart
enough, but this seems unneccesary when we could be a lot simpler.

Can we require the presence of the Authorization header with "Token",
and if nothing else is there you have to go to the query params or post
body?

> -----Original Message-----
> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] 
> On Behalf Of Eran Hammer-Lahav
> Sent: Thursday, July 01, 2010 2:24 PM
> To: oauth@ietf.org
> Subject: Re: [OAUTH-WG] Versioning
> 
> [Replying to everything at once...]
> 
> > -----Original Message-----
> > From: Marius Scurtescu [mailto:mscurtescu@google.com]
> > Sent: Thursday, July 01, 2010 11:36 AM
> 
> > Not sure about the future, but looking at OAuth 1 vs OAuth 2. A 
> > protected resource request filter may want to decide early what 
> > protocol it deals with so it can call the appropriate 
> handler, or to 
> > enforce HTTPS for OAuth 2 for example. Sure, it can apply 
> heuristics 
> > right now, but it would be nice to have a more 
> deterministic way which 
> > can also be extended in the future. You can always embed 
> the protocol 
> > version inside the token I guess, so I don't think this is 
> a huge issue.
> 
> First, this is limited to non-header methods. Look for 
> 'oauth_signature_method'.
> 
> If it is not there, assume this is a 2.0 request. I don't buy 
> the suggestion that in practice, developers are likely to 
> omit *this* parameter in a malformed 1.0 requests. If an 
> existing 1.0 provider can demonstrate how this is a problem 
> from experience, I might reconsider.
> 
> > I was not part of the 1.0 vs 1.0a discussions, so not sure what was 
> > the conclusion there.
> 
> The conclusion was that beyond "this sounds like a good idea" 
> we didn't know what the heck we were doing. Blaine at the 
> time strongly opposed it and lost the argument to me. Since 
> the 1.0a discussions, I have changed my view and am no 
> decidedly against version parameters because they are 
> impossible to design.
> 
> 
> > -----Original Message-----
> > From: Rob Richards [mailto:rrichards@cdatazone.org]
> > Sent: Thursday, July 01, 2010 11:43 AM
> 
> > Exactly. While it might be needed in the future, there is a need to 
> > differentiate OAuth 1.0 from 2.0 on resource endpoints right now.
> > Outside of requiring an oauth_version parameter (or equivalent) all 
> > other suggestions leave versioning as a grey area, where 
> things can be 
> > interpreted one way or another with no consistency. Grey 
> areas in specs are a bad thing.
> > You end up with different languages/libraries dealing with 
> things in 
> > completely different and incompatible ways because 
> something was not 
> > clearly spelled out.
> 
> This is an area that is clearly on the server side, not the 
> client. Since the core specification leaves discovery out, 
> client developers need to know what version of OAuth is 
> supported by the server and use the right one. Without 
> discovery, the client must know ahead of time what to do. 
> With discovery, the client can choose the right protocol. 
> Either way, the client never just sends a 1.0 or 2.0 requests 
> and hopes for the best.
> 
> On the server side, the challenge isn't that significant. 
> When not using a header, the server can use multiple methods 
> to differentiate the version used by the client:
> 
> 1. Token syntax
> 2. Presence of 'oauth_signature_method'
> 3. Presence of 'oauth_signature'
> 4. Presence of no other 'oauth_' parameter than 'oauth_token'
> 
> > With this the spec needs to including some wording to explicitly 
> > define how to handle the case when running an endpoint 
> supporting both 
> > OAuth 1.0 and 2.0 and the oauth2_token is missing then the call is 
> > handled according to the OAuth 1.0/a spec. Whatever is 
> decided, be it 
> > a version parameter, the use of oauth2_token or the check for the 
> > existence of the oauth_signature_method parameter, etc///, the spec 
> > needs to define and be explicit on how a resource endpoint 
> determines 
> > between a 1.0 and 2.0 call when both are supported.
> 
> The damage done by interpreting a malformed 1.0 request (the 
> odd attempt to use 1.0 by only including 'oauth_token') is at 
> most returning an 'invalid-token' response. I hope every 
> server developer understands that they should not share 
> tokens between 1.0 and 2.0 with completely different security 
> properties.
> 
> I think there are more issue with regard to 1.0 to 2.0 
> migration that should be addressed, and I have asked those 
> who care about this to propose a draft. Given that such a 
> draft will not be useful for a long time, given that the vast 
> majority of OAuth implementation 1-2 years from now will be 
> 2.0, I do not want to include it in the core specification.
> 
> In order for your argument to stand, you need to show how the 
> current setup leads to interoperability problems. Given the 4 
> options above, and the fact that a malformed 1.0 request will 
> still fail, I do not agree that interop is affected.
> 
> 
> > -----Original Message-----
> > From: Justin Richer [mailto:jricher@mitre.org]
> > Sent: Thursday, July 01, 2010 11:50 AM
> 
> > An easy fix here is to use oauth2_token instead of 
> oauth_token here, 
> > since that's the only place we seem to be using the oauth_ 
> namespace now.
> > Makes figuring out the two completely deterministic since it's a 
> > different parameter name when passed as a GET or POST 
> variable, and a 
> > different header name when passed as a header (using the 
> current Token 
> > scheme or an OAuth2 scheme or whatever).
> 
> Yes, we can rename the 'oauth_token' parameter to something 
> else. I might be included to support such an idea but not to 
> 'oauth2_token', but to something that would use the same 
> parameter name across the header and query/body. At the same 
> time, I consider using the query/body parameters as hacks so 
> I'm generally not sympathetic to changes there.
> 
> EHL
> 
> 
> 
> 
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>