Re: [OAUTH-WG] Open Issues: Group Survey (respond by 5/13)

Joseph Smarr <jsmarr@gmail.com> Mon, 10 May 2010 22:36 UTC

Return-Path: <jsmarr@gmail.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 AC7363A68A9 for <oauth@core3.amsl.com>; Mon, 10 May 2010 15:36:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.798
X-Spam-Level:
X-Spam-Status: No, score=-0.798 tagged_above=-999 required=5 tests=[AWL=-0.800, BAYES_50=0.001, HTML_MESSAGE=0.001]
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 CQDltdRuHdN6 for <oauth@core3.amsl.com>; Mon, 10 May 2010 15:35:59 -0700 (PDT)
Received: from mail-pz0-f200.google.com (mail-pz0-f200.google.com [209.85.222.200]) by core3.amsl.com (Postfix) with ESMTP id A937B3A68BC for <oauth@ietf.org>; Mon, 10 May 2010 15:35:57 -0700 (PDT)
Received: by pzk38 with SMTP id 38so2144684pzk.31 for <oauth@ietf.org>; Mon, 10 May 2010 15:35:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:reply-to :in-reply-to:references:from:date:message-id:subject:to:cc :content-type; bh=rzO+or+q7USTCt9zakuxrQY/Y9VmlbiU06sjTqJSQWw=; b=IS1vzcvUTmX99O3L/mMegel7+cJCbAztkbpt9qs9sayMNyDP6+mWPS+6M2c4/akc4X rvSwbTAEHH3gc4y6iTMfNhGl586w/ODyfZOLVDgdpkOgeP7u4hPEMfcZzqIkdJ9Pi3Xm NPZfBzhxVkaqUqagc9QXwQWwaAjuc3QhbUIMo=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; b=twmthdGrB50I7KZYfiOGqYpAOJLlWnYS4MnoaG9585QriFtyEyNVyAGZtUGScfKej5 y8XyTB7pRaVRXheeGtJqUQ+l9vCWv/2tZzJCZU3LWsCbY79evx4Ha/86DNOSQPfM82Zm 3Tugn/xpek/DBr9d4aKfbqiUTjuPwHdkpCkhQ=
Received: by 10.142.119.26 with SMTP id r26mr2975446wfc.257.1273530944119; Mon, 10 May 2010 15:35:44 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.143.2.7 with HTTP; Mon, 10 May 2010 15:35:24 -0700 (PDT)
In-Reply-To: <4BE85186.1080401@pidster.com>
References: <90C41DD21FB7C64BB94121FBBC2E72343B3AB46E1C@P3PW5EX1MB01.EX1.SECURESERVER.NET> <C2C2CB2C-F8A9-4713-A74F-558CC7278D1C@alkaline-solutions.com> <v2mc334d54e1005092357xa9a5fa2en78210a50221815df@mail.gmail.com> <4BE7BF9A.2050209@pidster.com> <1222443C-7C2C-49C4-B03A-4E760538B4BB@gmail.com> <4BE85186.1080401@pidster.com>
From: Joseph Smarr <jsmarr@gmail.com>
Date: Mon, 10 May 2010 15:35:24 -0700
Message-ID: <AANLkTinGoYkCVO54eHCjPJmkYAC_IEmki_lJMCNPHseB@mail.gmail.com>
To: pid@pidster.com
Content-Type: multipart/alternative; boundary="001636e0b72288e47204864507a5"
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Open Issues: Group Survey (respond by 5/13)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: jsmarr@stanfordalumni.org
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: Mon, 10 May 2010 22:36:00 -0000

Let me try to offer some of those "logical, positive statements in favour of
the technical merits of JSON over the original format choice" for those that
aren't familiar or haven't gleaned them from the thread thus far:

- unambiguous spec for encoding/decoding (including how to represent spaces
and unicode chars, both of which are common points of ambiguity in
url-encoding that lead to bugs, confusion, and lack of ability to use
built-in libraries, if available). For example, the OAuth PHP library does
the following: return str_replace('+', ' ', str_replace('%7E', '~',
rawurlencode($input)) -- yuck!

- easier to read the encoded format (because it has clear sentinel braces,
quoted attributes, and no url-encoding of parameters; only some backslashing
of reserved chars)

- widely available libraries with good track records in the wild, and
increasingly built in to many platforms

- extensible support for more representing more complex data structures in
the future, if needed

- simple enough that it's easy to understand, but just complex enough that
it's not too tempting to roll your own parser (which leads empirically to
better compliance due to use of common libraries)

- more likely to be recognized and understood by developers, since they've
seen it elsewhere in API response formats

I think that about covers it. Again, it's an objective fact that
url-encoding has caused confusion and bugs in OAuth 1.0 implementations, and
it's also an objective fact that JSON has had a very high "just works" rate
in the wild, to the point that it's the default API response format for many
widely used APIs from large providers targeting many platforms. So this is
not a choice based on "fashion", but based on trying to learn from history
to increase developer success and remove the opportunity for subtle bugs,
which was one of the major problems with OAuth 1.0a that prompted us to work
on OAuth 2.0 in the first place.

Thanks, js

On Mon, May 10, 2010 at 11:33 AM, Pid <pid@pidster.com> wrote:

> On 10/05/2010 15:56, Dick Hardt wrote:
> >
> > On 2010-05-10, at 1:11 AM, Pid wrote:
> >
> >> On 10/05/2010 07:57, Joseph Smarr wrote:
> >>>> 1. Server Response Format
> >>>
> >>> I vote for B, though I could live with C. (A would make me sad though)
> >>>
> >>> We've had a healthy and reasonable debate about the trade-offs here,
> but
> >>> I think the main counterargument for requiring JSON support is that
> it's
> >>> not quite yet a "no-brainer" to have JSON support in all environments
> >>> (e.g. iPhone libraries currently would need to statically link in an
> >>> available JSON library), whereas the counterarguments for A are the
> >>> well-documented problems properly decoding url-encoded params from
> OAuth
> >>> 1.0, plus the fact that it's not a common response format, whereas JSON
> >>> (and XML) are. Since I think JSON will continue to increase in use for
> >>> at least the next several years, the pain associated with requiring
> JSON
> >>> is likely to be  higher now than it will be in the future, and it's
> >>> already low enough that we've had this debate about whether it's
> already
> >>> acceptable or not-quite-yet. And JSON has been proven to "just work" in
> >>> terms of avoiding encoding/decoding headaches in the wild, which for
> >>> something like OAuth is really critical.
> >>
> >> I don't believe this is an accurate summary.
> >
> > Are you saying the information is not accurate or not a complete summary?
> >
> >>
> >> I asked for someone in the pro-JSON camp to describe the technical
> >> merits of that format over url encoded, but to date, there's no one who
> >> has responded.
> >
> > per http://www.ietf.org/mail-archive/web/oauth/current/msg01992.html
>
> Is that the right message?  There's not much in the way of positive
> arguments for JSON in that one.
>
>
> > client libraries exist to parse JSON responses
>
> Meaning a dependency.
>
>
> > client libraries do NOT exist to parse url encoded responses
>
> There aren't libraries to perform that type of decoding because it's
> trivial, (as you acknowledged).
>
>
> > Implementations of both OAuth 1.0 and WRAP improperly decoded the
> responses.
> > Also with reference to: "many developers have been caught just
> splitting the parameters and forgetting to URL decode the token"
>
> With respect, I think this is pretty close to a straw man.  It would be
> just as easy to argue that developers will make a mess of parsing JSON.
>
>
>
> Everyone seems to have, (in some cases grudgingly), agreed that it's
> easier to decode/parse urlencoded data than JSON.
>
> There are definitely occasions when using JSON for data description &
> transmission is advantageous, I just don't think this is one of them.
> It's a proverbial sledgehammer for a tiny OAuth nut.
>
>
> There should be something positive to say about JSON that establishes
> why it is a better format for this purpose.
>
>
> >> The options we've been offered seem contrived to support JSON,
> >
> > would you elaborate on why you think the options presented by the editor
> were contrived?
>
> Sure.  Two of them offer JSON as the default, including the putative
> 'compromise' option.
>
> JSON and XML add complexity, as the editor states.  IMHO it's odd
> therefore not to select the least complex as the default, if multiple
> formats are offered.
>
>
>
> I appreciate that JSON is popular and there is a degree of devil's
> advocacy to my position here, (as I've already said), but if it's not
> possible to make a list of logical, positive statements in favour of the
> technical merits of JSON over the original format choice then it
> shouldn't be selected as the default.
>
>
> p
>
>
>
>
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth
>
>