Re: [OAUTH-WG] proposal: multiple access tokens from a single authorization flow

Eran Hammer-Lahav <eran@hueniverse.com> Fri, 11 June 2010 20:12 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 D16FC3A69A8 for <oauth@core3.amsl.com>; Fri, 11 Jun 2010 13:12:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.974
X-Spam-Level:
X-Spam-Status: No, score=-1.974 tagged_above=-999 required=5 tests=[AWL=0.625, 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 1ls-gnHejFN1 for <oauth@core3.amsl.com>; Fri, 11 Jun 2010 13:12:43 -0700 (PDT)
Received: from p3plex1out02.prod.phx3.secureserver.net (p3plex1out02.prod.phx3.secureserver.net [72.167.180.18]) by core3.amsl.com (Postfix) with SMTP id 4F5193A6A56 for <oauth@ietf.org>; Fri, 11 Jun 2010 13:12:42 -0700 (PDT)
Received: (qmail 24290 invoked from network); 11 Jun 2010 20:12:45 -0000
Received: from unknown (HELO smtp.ex1.secureserver.net) (72.167.180.19) by p3plex1out02.prod.phx3.secureserver.net with SMTP; 11 Jun 2010 20:12:45 -0000
Received: from P3PW5EX1MB01.EX1.SECURESERVER.NET ([10.6.135.20]) by P3PW5EX1HT001.EX1.SECURESERVER.NET ([72.167.180.19]) with mapi; Fri, 11 Jun 2010 13:12:36 -0700
From: Eran Hammer-Lahav <eran@hueniverse.com>
To: Torsten Lodderstedt <torsten@lodderstedt.net>
Date: Fri, 11 Jun 2010 13:12:35 -0700
Thread-Topic: [OAUTH-WG] proposal: multiple access tokens from a single authorization flow
Thread-Index: AcsJn1xY9EmUmWPHTSCOBO44uKYUYgAAwyUA
Message-ID: <90C41DD21FB7C64BB94121FBBC2E72343B3EAF76BD@P3PW5EX1MB01.EX1.SECURESERVER.NET>
References: <4BFAA6AB.8040809@lodderstedt.net> <4BFC3142.6010506@lodderstedt.net> <AANLkTilRireowt1v8SidOiMJ-7ilBfvSqAiNfecA7uwR@mail.gmail.com> <4BFC371A.5040109@lodderstedt.net> <AANLkTikF1wk5eqme-N4RHviB5M7HzGYzy0p1mGuaux5g@mail.gmail.com> <4C07F407.4050305@lodderstedt.net> <1275663845.7068.94.camel@localhost.localdomain> <4C09732B.5040800@lodderstedt.net> <4C0F6A9C.2060607@lodderstedt.net> <4C1108C4.9040501@lodderstedt.net> <AANLkTils4bwYtv5u9yXJycqTQ_NFt0BUtA7P0kBTITpX@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72343B3EAF7473@P3PW5EX1MB01.EX1.SECURESERVER.NET> <4C129387.1090703@lodderstedt.net>
In-Reply-To: <4C129387.1090703@lodderstedt.net>
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)" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] proposal: multiple access tokens from a single authorization flow
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, 11 Jun 2010 20:12:47 -0000

I'll let you know when I see the I-D :-)

EHL

> -----Original Message-----
> From: Torsten Lodderstedt [mailto:torsten@lodderstedt.net]
> Sent: Friday, June 11, 2010 12:51 PM
> To: Eran Hammer-Lahav
> Cc: David Recordon; OAuth WG (oauth@ietf.org)
> Subject: Re: [OAUTH-WG] proposal: multiple access tokens from a single
> authorization flow
> 
> Hi,
> 
> thanks for your advice. I described the new parameter in my proposal.
> What additional text/information would you expect in an I-D?
> 
> regards,
> Torsten.
> 
> Am 11.06.2010 01:02, schrieb Eran Hammer-Lahav:
> > I strongly believe that it should be first presented as an I-D. This is true in
> general for most proposed changes of this size. It is hard to tell how big of an
> impact a change like this will have without some actual text. Once proposed,
> the WG can decide if this is of interest as a WG item. If it is, we discuss the
> technical details. Then, we can have a chat about editorial work and how to
> best fit it within the OAuth specifications framework.
> >
> > Hope this helps.
> >
> > EHL
> >
> >
> >> -----Original Message-----
> >> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] On
> >> Behalf Of David Recordon
> >> Sent: Thursday, June 10, 2010 8:54 AM
> >> To: Torsten Lodderstedt
> >> Cc: OAuth WG (oauth@ietf.org)
> >> Subject: Re: [OAUTH-WG] proposal: multiple access tokens from a
> >> single authorization flow
> >>
> >> I strongly believe that it should be an extension. Even optional
> >> response parameters increase the complexity for client developers and
> >> this in particular affects the data model used to store access tokens.
> >>
> >> --David
> >>
> >>
> >> On Thu, Jun 10, 2010 at 8:46 AM, Torsten Lodderstedt
> >> <torsten@lodderstedt.net>  wrote:
> >>
> >>> no one in the WG having an opinion on this topic?
> >>>
> >>> Am 09.06.2010 12:19, schrieb Torsten Lodderstedt:
> >>>
> >>>> Hi all,
> >>>>
> >>>> I would like to see support in OAuth2 for the authorization of
> >>>> arbitrary scopes in a single authorization flow for all kinds of
> >>>> deployments. In some deployments this may require to issue multiple
> >>>>
> >> access tokens at once.
> >>
> >>>> Therefore, I would like to propose the following addition to
> >>>> section 2.3.2.1. (Access Token Response):
> >>>>
> >>>> Add an optional parameter "additional_access_tokens".
> >>>>
> >>>>    additional_access_tokens
> >>>>          OPTIONAL.  Array of access tokens issued by the authorization
> >>>>                     server along with respective expiration and scope.
> >>>> Used
> >>>>                     if the authorization server decides to issue
> >>>> more than
> >>>>                     one access token. The scopes of the different
> >>>> tokens may
> >>>>                     not overlap.
> >>>>
> >>>> Example:
> >>>>      HTTP/1.1 200 OK
> >>>>      Content-Type: application/json
> >>>>      Cache-Control: no-store
> >>>>
> >>>>      {
> >>>>        "access_token":"SlAV32hkKG",
> >>>>        "expires_in":3600,
> >>>>        "refresh_token":"8xLOxBtZp8",
> >>>>        scope:"https://imap.example.com",
> >>>>        additional_access_tokens:[
> >>>>         {
> >>>>           "access_token":"SlAV32hkKG2",
> >>>>           "expires_in":3600,
> >>>>           scope:"https://sip.example.com"
> >>>>         },
> >>>>         {
> >>>>           "access_token":"SlAV32hkKG3",
> >>>>           "expires_in":3600,
> >>>>           scope:"https://contacts.example.com/read"
> >>>>         },
> >>>>         {
> >>>>           "access_token":"SlAV32hkKG4",
> >>>>           "expires_in":3600,
> >>>>           scope:"https://webdav.example.com/read"
> >>>>         }
> >>>>        ]
> >>>>      }
> >>>>
> >>>> --- Some motivation ---
> >>>>
> >>>> I think we will see more and more clients integrating different
> >>>> end-user services (like mashups). Based on the current draft, some
> >>>> OAuth authorization servers may not be able to support such clients
> >>>> with an acceptable user experiences.
> >>>>
> >>>> Suppose a communication client integrating the following services:
> >>>> - e-Mail via IMAP
> >>>> - Voice over IP using the SIP protocol
> >>>> - Contacts via SyncML over HTTP
> >>>> - Webstorage access (e.g. for e-Mail attachments) using HTTP/WebDAV
> >>>>
> >>>> For a particular end-user, the client may discover that all of the
> >>>> end-user's services rely on the same OAuth2-based authorization
> >>>> server because they are provided by the same organization (e.g. an
> >>>> isp or
> >>>>
> >> a telco).
> >>
> >>>> The services are distinguished at the authorization server by
> >>>> different scopes (probably including permissions as well), e.g. :
> >>>>
> >>>> imap - https://imap.example.com
> >>>> sip -  https://sip.example.com
> >>>> contacts - https://contacts.example.com/read webstorage -
> >>>> https://contacts.example.com/read
> >>>>
> >>>> Some providers may want to issue different service-specific tokens
> >>>> in such a setup (Deutsche Telekom does it already), for the
> >>>> following
> >>>>
> >> reasons:
> >>
> >>>> 1) Security
> >>>>
> >>>>   a) minimize impact of token abuse - tokens may leak in many ways,
> e.g.
> >>>> through log files, proxies or HTTP referer. If a provider just uses
> >>>> a single token for all services, the impact of token leakage is
> >>>> much higher. For example, if a token gets exposed by the _contacts_
> >>>> service via HTTP referer, an adversary may place long-distance
> >>>> calls using that token on the _VoIP_ service at the expense of the
> >>>> end-user. This threat holds for all kinds of tokens (handles and
> >>>> self-
> >>>>
> >> contained tokens).
> >>
> >>>>   b) use a shared secret between authz server and a single service
> >>>> only - a major critism from the operational security perspective to
> >>>> OAuth 1.0a was the need to spread client secrets to resource servers.
> >>>> Using the same shared secret to sign/encrypt tokens for different
> >>>> services is a comparable problem. This aspect is relevant for self-
> >>>>
> >> contained tokens, only.
> >>
> >>>> 2) Privacy - the provider wants to restrict access of services to
> >>>> personal data to the data a particular service is allowed and
> >>>> authorized to see. This is good style (IMHO), it might also be
> >>>> required by law (e.g. German Federal Data Protection Act). This
> >>>> aspect is relevant for self-contained tokens, only.
> >>>>
> >>>> 3) Bandwith efficiency - putting only the data required by the
> >>>> services into the token saves bandwith. This aspect is relevant for
> >>>> self-contained tokens, only.
> >>>>
> >>>> In my opinion, most of these aspects are just a consequence of the
> >>>> decoupling of authorization server and resource server(s) in OAuth2.
> >>>> If a single authorization server is responsible for several
> >>>> resource servers, it has to ensure privacy protection and
> >>>> prevention of token abuse for all of its services. This should also
> >>>> include some separation between services, no matter if one uses
> >>>> self-contained tokens
> >>>>
> >> or handles.
> >>
> >>>> Without the change I proposed, the authorization server in the
> >>>> example scenario would need to force the client to perform _four_
> >>>> subsequent authorization flows in order to obtain all required
> >>>> tokens. Moreover, the client would need to manage four refresh
> tokens.
> >>>>
> >>>> I would kindly ask you to support my proposal. In my opinion, it
> >>>> significantly improves the applicability of OAuth2 while the change
> >>>> to the current draft is minimal. Moreover, deployments w/o the need
> >>>> to issue multiple tokens are not affected at all.
> >>>>
> >>>> Any thoughts?
> >>>>
> >>>> regards,
> >>>> Torsten.
> >>>>
> >>>> _______________________________________________
> >>>> 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
> >>>
> >>>
> >> _______________________________________________
> >> OAuth mailing list
> >> OAuth@ietf.org
> >> https://www.ietf.org/mailman/listinfo/oauth
> >>