Re: [OAUTH-WG] Native applications capable of handling callbacks

Luke Shepard <lshepard@facebook.com> Thu, 15 April 2010 23:08 UTC

Return-Path: <lshepard@facebook.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 D22903A6830 for <oauth@core3.amsl.com>; Thu, 15 Apr 2010 16:08:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.851
X-Spam-Level:
X-Spam-Status: No, score=-2.851 tagged_above=-999 required=5 tests=[AWL=0.159, BAYES_00=-2.599, FU_ENDS_2_WRDS=0.255, IP_NOT_FRIENDLY=0.334, RCVD_IN_DNSWL_LOW=-1]
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 xcsEFk0h1uXe for <oauth@core3.amsl.com>; Thu, 15 Apr 2010 16:08:11 -0700 (PDT)
Received: from mailout-snc1.facebook.com (mailout-snc1.facebook.com [69.63.179.25]) by core3.amsl.com (Postfix) with ESMTP id E90233A6949 for <oauth@ietf.org>; Thu, 15 Apr 2010 16:08:10 -0700 (PDT)
Received: from mail.thefacebook.com ([192.168.18.198]) by pp01.snc1.tfbnw.net (8.14.3/8.14.3) with ESMTP id o3FN7iPA004712 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Thu, 15 Apr 2010 16:07:44 -0700
Received: from sc-hub06.TheFacebook.com (192.168.18.83) by sc-hub03.TheFacebook.com (192.168.18.198) with Microsoft SMTP Server (TLS) id 14.0.689.0; Thu, 15 Apr 2010 16:08:01 -0700
Received: from SC-MBXC1.TheFacebook.com ([192.168.18.102]) by sc-hub06.TheFacebook.com ([192.168.18.83]) with mapi; Thu, 15 Apr 2010 16:08:00 -0700
From: Luke Shepard <lshepard@facebook.com>
To: Eran Hammer-Lahav <eran@hueniverse.com>, OAuth WG <oauth@ietf.org>
Date: Thu, 15 Apr 2010 16:09:05 -0700
Thread-Topic: [OAUTH-WG] Native applications capable of handling callbacks
Thread-Index: AcrYIt9HqbEa8GrhW0eQRvN1PulFkwARc/duACAIQsAAw54l0AAzG0IgAAsONWA=
Message-ID: <2513A610118CC14C8E622C376C8DEC93D54D66DCBC@SC-MBXC1.TheFacebook.com>
References: <2513A610118CC14C8E622C376C8DEC93D54D66DB82@SC-MBXC1.TheFacebook.com> <C7EC9F3E.32327%eran@hueniverse.com>
In-Reply-To: <C7EC9F3E.32327%eran@hueniverse.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="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5, 1.2.40, 4.0.166 definitions=2010-04-15_15:2010-02-06, 2010-04-15, 2010-04-15 signatures=0
Subject: Re: [OAUTH-WG] Native applications capable of handling callbacks
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, 15 Apr 2010 23:08:11 -0000

Thanks for the response Eran, that helps clarify things.

I'm hoping to have some in-person discussions with some Googlers tomorrow to hopefully sort out the technical details of these flows. Will report back to the list with any findings.

-----Original Message-----
From: Eran Hammer-Lahav [mailto:eran@hueniverse.com] 
Sent: Thursday, April 15, 2010 10:47 AM
To: Luke Shepard; OAuth WG
Subject: Re: [OAUTH-WG] Native applications capable of handling callbacks




On 4/14/10 10:32 AM, "Luke Shepard" <lshepard@facebook.com> wrote:

> Sorry, I missed this thread. It dovetails with my objections raised in the
> other thread (³Combining the native application and user-agent flows²)
>  
> The question of whether OAuth should support custom URL protocols seems a bit
> academic. In practice, major providers will probably allow them if there is
> demand from developers. The goal of this group is to establish a pragmatic,
> widely adopted authentication protocol ­ not to wage a IETF campaign against
> browser vendors to force compliance to standards.

It's not a question of an "IETF campaign" but of what an IETF specification
can say about it. WRAP explicitly mentions custom URI schemes which is
something we cannot do in an IETF spec because clearly violates IETF
standards.

The questions are "do we want to mention custom URI schemes? Do we think it
is a useful pattern?" and I suspect the answer is yes given how widely this
technique is used on the iPhone and other platforms. So then the question is
how to do this within the context of an IETF specification or leave it for
people to figure out on their own (or in books and articles).

Creating a scheme for this isn't hard and is one simple way to accomplish
the same thing. It also allows us to mention how it is done today and
encourage people to seek the other way when possible. This is how we make
progress in standards (document the bad practice and offer better
solutions).

> Additionally, in my email I laid out a few ways for an entirely client app to
> handle a callback without using custom protocols. For instance:
> -         Use a scheme like ³about:blank² (does that count as a custom scheme
> or is it supported by the IETF?)

There is a proposed RFC for 'about:' but it seems stuck due to lack of
authors time.

> -         Host a static callback themselves. For many apps it¹s much easier to
> host a single, static callback than a dynamic server endpoint.

I assume you mean host a fixed document on a server.

> -         Use a callback hosted by the provider (i.e.,
> http://facebook.com/universal_callback

Sure, as long as it doesn't end up as an open redirector with the known
security issues.

> In practice, this is how desktop and mobile clients work to access Facebook
> today. The Native Application flow is basically like  the third option above
> (callback hosted by provider), but without the flexibility of the first two.
> We should just get rid of that flow and use the ³User-agent² flow. (I would
> prefer something like ³Client-side App flow² but I understand that the naming
> here is pretty difficult)

If we end up with one flow, I am sure I can come up with another name.

EHL