Re: [OAUTH-WG] Issue: 'username' parameter proposal

Joseph Smarr <jsmarr@gmail.com> Tue, 20 April 2010 16: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 C2D053A6B18 for <oauth@core3.amsl.com>; Tue, 20 Apr 2010 09:36:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.398
X-Spam-Level:
X-Spam-Status: No, score=-2.398 tagged_above=-999 required=5 tests=[AWL=0.200, BAYES_00=-2.599, 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 wZ+WCPyXg42W for <oauth@core3.amsl.com>; Tue, 20 Apr 2010 09:36:38 -0700 (PDT)
Received: from mail-pz0-f191.google.com (mail-pz0-f191.google.com [209.85.222.191]) by core3.amsl.com (Postfix) with ESMTP id BA48A3A69DF for <oauth@ietf.org>; Tue, 20 Apr 2010 09:36:38 -0700 (PDT)
Received: by pzk29 with SMTP id 29so5304364pzk.29 for <oauth@ietf.org>; Tue, 20 Apr 2010 09:36:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:reply-to:in-reply-to :references:from:date:received:message-id:subject:to:cc:content-type; bh=/LYX+jgqQxJHl31geN9vJywKqsYGeHKH235kqL5GbLE=; b=kyp8lBGEEdSdoMn34kgEaDBufmQfcXcueFE9BIiJcb/wnAqnRwYhdBClfF1zz0toDA QZOO5wfeN2RnoofqrU/pwcwwkALS71mhAqEE+TLb9ZzXoIq+WP8LKUYCDPNVIgctW5u9 0FeErpg10J0lq37/IYqvv/rk1fy/KqASYjzbM=
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=qNXBBtEOPmLaoBHqoCso8qc1+YXB2z9NwOzugcShqvGui5NrasX9CUxNixAR/R0A7E 89ihQdu+ppval8K/GIU+l9EBvkjCvKOZVVnAotHNFWJJXIJJyQZ/xU/mHqWxK2cQ+W2R 7q4b4H4zOn0QLhD1L7oCZ1QrUDz98esflZbL4=
MIME-Version: 1.0
Received: by 10.143.164.14 with HTTP; Tue, 20 Apr 2010 09:36:07 -0700 (PDT)
In-Reply-To: <90C41DD21FB7C64BB94121FBBC2E723438E5C7F45A@P3PW5EX1MB01.EX1.SECURESERVER.NET>
References: <r2pc8689b661004190833tf46085bayb92b840acf080bb4@mail.gmail.com> <C7F1C6AC.327EE%eran@hueniverse.com> <u2jc8689b661004191006hc3c7fb3eid09feafd57d2fd8a@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E723438E5C7F163@P3PW5EX1MB01.EX1.SECURESERVER.NET> <o2wc8689b661004191716o69966d5di900c07737d3be568@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E723438E5C7F45A@P3PW5EX1MB01.EX1.SECURESERVER.NET>
From: Joseph Smarr <jsmarr@gmail.com>
Date: Tue, 20 Apr 2010 09:36:07 -0700
Received: by 10.143.27.33 with SMTP id e33mr2957307wfj.54.1271781387289; Tue, 20 Apr 2010 09:36:27 -0700 (PDT)
Message-ID: <z2xc334d54e1004200936s57f06dedt8e0e46df3480f8d4@mail.gmail.com>
To: Eran Hammer-Lahav <eran@hueniverse.com>
Content-Type: multipart/alternative; boundary="00504502c5c8d246bf0484adad25"
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Issue: 'username' parameter proposal
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: Tue, 20 Apr 2010 16:36:45 -0000

Just to add some more context from experience, this "two users getting mixed
together" problem happens a lot in practice, esp. when you have a mix of
server-side and client-side auth. For instance, we saw this in our Facebook
Connect integration in Plaxo--normally the user connects and Plaxo stores
their session key in our databases, so when the user returns and logs in as
plaxo-user-123, we look it up and know that he's also facebook-user-456. But
some of Facebook Connect's UI widgets just look at the browser cookies on
facebook.com, where facebook-user-789 may be currently logged in (happens
all the time with shared computers at home). Thus we often had pages that
pulled some Facebook info server-side (as facebook-user-456) and some
client-side (as facebook-user-789) and it was very confusing and potentially
harmful (e.g. easy to accidentally post a story to the wrong account). The
solution would be for Plaxo to be able to pass facebook-user-456 down to the
JavaScript library, so it wouldn't just "silently auth" as a different
user--presumably, it would just treat it as if no one was logged into
facebook, if the passed-in user is not logged in. I think this is what Evan
is proposing we enable for OAuth, especially if we want it to work
client-side with immediate-mode (which I think we do).

Another related example of this problem we saw was with our photo-uploader
plug-in inside Picasa Desktop for sharing photos on Plaxo. During the upload
flow, it embeds a web browser, which lets you log in as plaxo-user-123, but
when it's done uploading, it opens a default web browser, where you might be
logged in as plaxo-user-456, leading again to a confusing mix-up of
identities. We solved this by appending the session-info of the user from
the embedded web browser on the URL of the main browser that gets opened, so
it can clobber the session as needed and maintain continuity of session.

Hope these experiences provide some useful and concrete context for
evaluating whether/how to support a username parameter in OAuth.

Thanks, js

On Tue, Apr 20, 2010 at 8:08 AM, Eran Hammer-Lahav <eran@hueniverse.com>wrote:

> This attack is why the flow requires the client to present the callback it
> used again when getting the token.
>
>
>
> EHL
>
>
>
>
>
> *From:* Evan Gilbert [mailto:uidude@google.com]
> *Sent:* Monday, April 19, 2010 5:17 PM
>
> *To:* Eran Hammer-Lahav
> *Cc:* OAuth WG
> *Subject:* Re: [OAUTH-WG] Issue: 'username' parameter proposal
>
>
>
>
>
> On Mon, Apr 19, 2010 at 10:58 AM, Eran Hammer-Lahav <eran@hueniverse.com>
> wrote:
>
> Thanks. That makes sense.
>
>
>
> My concern is that the client will ask for a specific username but an
> attacker will change that request before it hits the server. The server then
> asks the (wrong) user to authenticate and returns a token. The client has no
> way of knowing it got an access token for the wrong user. Does requiring
> that the server returns the token with the username solves this? Is this a
> real issue?
>
>
>
> This particular attack wasn't of concern to me, for a few of reasons:
>
> - The request is HTTPS, hard to modify the request before it hits the
> server
>
> - There are probably other, more dangerous attacks if you can modify
> request parameters (for example, you can modify the client_id and get the
> user to authorize the wrong app)
>
>
> I'm willing to be convinced otherwise
>
>
>
> I have no objections to this proposal but wanted to see some discussion and
> support from others before adding it to the spec.
>
>
>
> EHL
>
>
>
> *From:* Evan Gilbert [mailto:uidude@google.com]
> *Sent:* Monday, April 19, 2010 10:06 AM
> *To:* Eran Hammer-Lahav
> *Cc:* OAuth WG
>
>
> *Subject:* Re: [OAUTH-WG] Issue: 'username' parameter proposal
>
>
>
> User 1 is logged into Client site
>
> User 2 is logged into IDP site
>
>
>
> This can happen quite frequently, as client sites often have long-lived
> cookies and may only be visited by one user on a shared computer.
>
>
>
> Right now client site has no way to ask for a token for User 1, and end
> result will be that User 1 starts seeing User 2's data.
>
>
>
> On Mon, Apr 19, 2010 at 8:37 AM, Eran Hammer-Lahav <eran@hueniverse.com>
> wrote:
>
> How can they both be logged in? I have never seen a case where two users
> can be both logged into to the same service at the same time...
>
> EHL
>
>
>
>
> On 4/19/10 8:33 AM, "Evan Gilbert" <uidude@google.com> wrote:
>
> More details on this enhancement.
>
> Goal: Make sure you get an access token for the right user in immediate
> mode.
>
> Use case where we have problems if we don't have username parameter:
>
>    1. Bob is logged into a web site as bob@IDP.com.
>    2. Mary (his wife) is logged into IDP on the same computer as
>    mary@IDP.com
>    3. A request is made to get an access token via the User-Agent flow in
>    immediate mode (or with any redirect without prompting the user)
>    4. -ob now has an access token for Mary and (posts activities,
>    schedules events, gets contacts) as Mary
>    5. Hilarity ensues
>
>
> Secondary goal: Provide a hint for non-immediate mode
>
> On Thu, Apr 15, 2010 at 11:55 AM, Eran Hammer-Lahav <eran@hueniverse.com>
> wrote:
>
> Evan Gilbert proposed a 'username' request parameter to allow the client to
> limit the end user to authenticate using the provided authorization server
> identifier. The proposal has not been discussed or supported by others, and
> has not received a security review.
>
> Proposal: Obtain further discussion and support from others, as well as a
> security review of the proposal. Otherwise, do nothing.
>
> EHL
>
> _______________________________________________
> 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
>
>