Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23

Breno de Medeiros <breno@google.com> Thu, 15 March 2012 18:54 UTC

Return-Path: <breno@google.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 69A6F21F8501 for <oauth@ietfa.amsl.com>; Thu, 15 Mar 2012 11:54:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.677
X-Spam-Level:
X-Spam-Status: No, score=-102.677 tagged_above=-999 required=5 tests=[AWL=0.300, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vv2A0pwOQu8v for <oauth@ietfa.amsl.com>; Thu, 15 Mar 2012 11:54:06 -0700 (PDT)
Received: from mail-iy0-f172.google.com (mail-iy0-f172.google.com [209.85.210.172]) by ietfa.amsl.com (Postfix) with ESMTP id E76BD21F84EA for <oauth@ietf.org>; Thu, 15 Mar 2012 11:54:05 -0700 (PDT)
Received: by iazz13 with SMTP id z13so4943761iaz.31 for <oauth@ietf.org>; Thu, 15 Mar 2012 11:54:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding:x-system-of-record; bh=m6Gw1SI1/M/Y9ROiZVr558HNI78vUdOnUBkxyLzMp38=; b=gH+Vic/eOqMCPQXG4xB4GAAZ5xlD/ZOhTuJAR4alc6MOadVzZrPZfnzb8kSKiVRZuk Cs14WRiaRILQsM/GzEtzVE9rpQWQ0GyUMW05MlwAe3E67A40DD6EVGpebWO1dqIaYDkf UjsmPciygvoEIsQ1FkVzEo4EwaThmCaenZQdMJ3lF4W1xr2i42SddFV0GpnnU80UqFlL I2WFDVEuAwkiuO8ff+JSt0GO+yj4U6gbY/0eeVzFaAuNrLnCqZEtVJagMiBG/lZ9N+68 wOI2Ypf6QooJazOFf6ZNCC8BCBTsnbb6RKbXu+LabXh+5PDo3zNtpm7wVJQr2l/eXHtB EOzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding:x-system-of-record :x-gm-message-state; bh=m6Gw1SI1/M/Y9ROiZVr558HNI78vUdOnUBkxyLzMp38=; b=WRR5DfwjABididagaWsxx7IgqMDNKeVVRjMllRMG0mWHCAZmHOLlpqGUOP96b1aXZV /KtawWKR2DTuI8K7ofnhuJ/qimht8C9QSy3kGyGGTcARk/IGK8+6HMXw6SOdItdZFzP4 HDPD31MBh5UtTTiUu5kMrTHzjDQqopsZyizFRVpSxN5Lz2NQCt+u6HWM5Dge0nQwZTns G886gZ1ggP1xgL7ZOJXTXH+5tGaMZ67BNH8hU1J+XX4BrSV94qGGGC1fi9aS0tXRIs/O mL1mGh1rATpzXrBRkK5FjtkhrB9OXw4mVOo82ytWovJA2FaMB5vAPamidpHf5FkT6BRi C0Tg==
Received: by 10.50.153.169 with SMTP id vh9mr10697672igb.41.1331837645560; Thu, 15 Mar 2012 11:54:05 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.50.153.169 with SMTP id vh9mr10697664igb.41.1331837645488; Thu, 15 Mar 2012 11:54:05 -0700 (PDT)
Received: by 10.231.41.137 with HTTP; Thu, 15 Mar 2012 11:54:05 -0700 (PDT)
In-Reply-To: <CB87810D.16509%eran@hueniverse.com>
References: <CAAJ++qGy3EtJFiwe5-SXeq12Xm-Zt3pgjgg7ziOrZpDuuNpe3g@mail.gmail.com> <CB87810D.16509%eran@hueniverse.com>
Date: Thu, 15 Mar 2012 11:54:05 -0700
Message-ID: <CAAJ++qF_YZFZZNqNrQzT0SYD06SMaAGo8rvmtYLHw+SFoq4iKA@mail.gmail.com>
From: Breno de Medeiros <breno@google.com>
To: Eran Hammer <eran@hueniverse.com>
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: quoted-printable
X-System-Of-Record: true
X-Gm-Message-State: ALoCoQl0COmamSa0T9Oivj/zw5yXoWfOiKscj4smUtcV7+XEekJHLTsnecJBFX+ONTeR9zXazLgVcPZ0bs5wPjkC5IlvqoPxg8pY+Jk+jEUbmNVYEvMykfq9vy+JdTp1systWSmPBxSK
Cc: OAuth WG <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/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 Mar 2012 18:54:07 -0000

My proposal is to remove any reference to registration (which is a red
herring and has raised all the problems we refer here) and refer to
client authentication instead.

Proposal:

"Clients may be implemented as a distributed set of components that
run in different security contexts. For instance, a single client may
include a webserver component and a script component in a browser. It
is not appropriate for the different components to utilize the same
client authentication mechanisms, since client authentication
credentials that are held securely in one context cannot be deployed
securely in another.

Servers MUST mitigate security threats from client components that
cannot hold client credentials as securely by distinguishing them from
client components that can. Example of suitable measures are:

- Requiring separate registration of components such as web server and
a mobile application.
- Restricting the time validity of tokens issued to clients that hold
no authentication credentials, such as browser script-based
components."

Please don't truncate explanations in the interest of space if the
resulting text is confusing and possibly misleading. Better to say
nothing instead.

On Thu, Mar 15, 2012 at 11:32, Eran Hammer <eran@hueniverse.com> wrote:
> Here are the facts:
>
> The authorization server must know the client type in order to enforce many
> of the requirements in the specification.
> The requirement to provide a client type is not decorated with a MUST or
> SHALL but that is implied.
> The specification only defines two client types: public and confidential.
> There is no client type defined for a hybrid client.
> The specification needs to address the very common use case of clients with
> both public and private components.
>
> I don't want to discuss in the specification how client identifiers are
> provisioned, nor do I want to discuss the potential binding of response
> types to client types. But we do need to provide some guidance to clients
> and authorization servers what to do with clients that do not fit the
> current type definitions.
>
> It is far too late for us to define a new client type, along with all the
> security considerations that such type imply. Our entire security
> consideration section and protocol design are based on have a well defined
> client type.
>
> Requiring separate registration for each component is the most
> straight-forward solution. Allowing the authorization server to offer
> alternatives is the backdoor to enable extensibility.
>
> Within these constraints, I am open to other prose or creative solutions.
> But the add-ons proposed are all ugly hacks. They clarify specific questions
> raised which I do not believe represent the core confusion here which is
> what is the right way to handle hybrid clients.
>
> The best way to move forward is to take a minute and ask the group to share
> how they handle such cases or how they think they should be handled. Based
> on that we can come up with a clear solution.
>
> EH
>
> From: Breno de Medeiros <breno@google.com>
> Date: Thu, 15 Mar 2012 09:56:13 -0700
> To: Eran Hammer-Lahav <eran@hueniverse.com>
> Cc: Nat Sakimura <sakimura@gmail.com>, OAuth WG <oauth@ietf.org>
>
> Subject: Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23
>
>
>
> On Thu, Mar 15, 2012 at 07:45, Eran Hammer <eran@hueniverse.com> wrote:
>>
>> This add-on is unnecessary. It already says the authorization server can
>> handle it any way it wants. The fact that other registration options are
>> possible clearly covers the client identifier reuse case. As for the
>> response type, that’s not an issue but more of an optimization for an edge
>> case raised.
>
>
> It still feels like a horse by committee to me. "unless the
> authorization server provides other registration options to specify such
> complex clients." seems a very round about way to say that the core spec
> already provides for such arrangements in the most common scenario. It is a
> bit of a stretch to say that the server provides "other registration
> options" by simply following strategy already laid out in the spec.
>
> In particular, I feel that this wording will be harmful to register extended
> behavior, e.g., alternative response_types by leading to fruitless
> conversations about spec compliance in the absence of real security risks.
>
> I do not believe the current text is the best representation of the spirit
> in which the spec was written (in particular the effort to specify two flows
> in detail to deal with precisely this issue) and possibly lead to harmful
> future interpretation.
>
>>
>>
>>
>> EH
>>
>>
>>
>> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] On Behalf Of
>> Nat Sakimura
>> Sent: Thursday, March 15, 2012 2:04 AM
>> To: Breno de Medeiros; OAuth WG
>>
>>
>> Subject: Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23
>>
>>
>>
>>
>>
>> So, Eran's first proposal:
>>
>>
>>
>>   A client application consisting of multiple components, each with its
>>   own client type (e.g. a distributed client with both a confidential
>>   server-based component and a public browser-based component), MUST
>>   register each component separately as a different client to ensure
>>
>>   proper handling by the authorization server, unless the authorization
>>   server provides other registration options to specify such complex
>> clients.
>>
>>
>>
>> kind of meets my concern. There seems to be another issue around the
>> usefulness of return_type in such case raised by Breno, and if I understand
>> it correctly, Eran's answer was that these separate components may have the
>> same client_id so that return_type is a valid parameter to be sent at the
>> request.
>>
>>
>>
>> So, to clarify these, perhaps changing the above text slightly to the
>> following solves the problem?
>>
>>
>>
>>   A client application consisting of multiple components, each with its
>>   own client type (e.g. a distributed client with both a confidential
>>   server-based component and a public browser-based component), MUST
>>   register each component separately as a different client to ensure
>>
>>   proper handling by the authorization server, unless the authorization
>>   server provides other registration options to specify such complex
>> clients.
>>
>>   Each component MAY have the same client_id, in which case the server
>>
>>   judges the client type and the associated security context  based on
>>   the response_type parameter in the request.
>>
>>
>>
>> Would it solve your problem, Breno?
>>
>>
>>
>> Best,
>>
>>
>>
>> =nat
>>
>>
>
>
>
>
> --
> --Breno



-- 
--Breno