Re: [OAUTH-WG] Call for Adoption: OAuth 2.0 Mix-Up Mitigation

George Fletcher <gffletch@aol.com> Mon, 25 January 2016 18:39 UTC

Return-Path: <gffletch@aol.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 502811B38DC for <oauth@ietfa.amsl.com>; Mon, 25 Jan 2016 10:39:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.79
X-Spam-Level:
X-Spam-Status: No, score=-1.79 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, T_DKIM_INVALID=0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bYLdz3tybnRD for <oauth@ietfa.amsl.com>; Mon, 25 Jan 2016 10:39:44 -0800 (PST)
Received: from omr-a005e.mx.aol.com (omr-a005e.mx.aol.com [204.29.186.50]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3476E1B38D3 for <oauth@ietf.org>; Mon, 25 Jan 2016 10:39:44 -0800 (PST)
Received: from mtaout-aac01.mx.aol.com (mtaout-aac01.mx.aol.com [172.27.2.33]) by omr-a005e.mx.aol.com (Outbound Mail Relay) with ESMTP id 6FBEB3800099; Mon, 25 Jan 2016 13:39:43 -0500 (EST)
Received: from [10.172.102.124] (unknown [10.172.102.124]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by mtaout-aac01.mx.aol.com (MUA/Third Party Client Interface) with ESMTPSA id B04D138000084; Mon, 25 Jan 2016 13:39:42 -0500 (EST)
To: John Bradley <ve7jtb@ve7jtb.com>
References: <569E22E1.5010402@gmx.net> <CANSMLKHjAHr6rUZny5EkX0KBHnOcLuUOZBL0Wwf6V8Y3tt_kNw@mail.gmail.com> <CABzCy2C-_57dO5n6GN6wazA9ozuPivrQd95g_XvdkPWx6zDwAA@mail.gmail.com> <CANSMLKE98FVdDV-7bwW3wZ=-ao5=oXkn9LO5s_M1KmMAt7Drcw@mail.gmail.com> <537B9D13-1159-4B2D-9E1A-A245C9B3659C@ve7jtb.com> <CAAP42hDUciKpS51dyx7Zy-kSCB_JUZqooXiaGTopHaFr_QkF5Q@mail.gmail.com> <995474C5-62E7-4310-84AF-A5EF1CDEA4DB@ve7jtb.com> <56A63F82.40104@aol.com> <6D8FA56F-EA72-4509-90C1-DC33094FA695@ve7jtb.com> <56A66522.1090804@aol.com> <23E34900-5C05-4295-AFC5-7DEBA6449AA7@ve7jtb.com>
From: George Fletcher <gffletch@aol.com>
Organization: AOL LLC
Message-ID: <56A66BED.3090505@aol.com>
Date: Mon, 25 Jan 2016 13:39:41 -0500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.5.1
MIME-Version: 1.0
In-Reply-To: <23E34900-5C05-4295-AFC5-7DEBA6449AA7@ve7jtb.com>
Content-Type: multipart/alternative; boundary="------------070400050909060501000100"
x-aol-global-disposition: G
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mx.aol.com; s=20150623; t=1453747183; bh=7xas7XagrWS00du5fiqB72WRUL4ke3j206Eo20uKmfc=; h=From:To:Subject:Message-ID:Date:MIME-Version:Content-Type; b=aL1czyL2pDV7aGbMQyqBMx4TnyYqojt9Zp1M85Ee7RhkEtU9njZGf10ktOBL4C54x 8BnH2MPHkVcMbQOnLQuMt4DB2MMoz24gzfcAExkUVaePkPtkcisLcoQPPyAeZUdB5v mY+I4Pa+yvW5JuModF0PGkl+QEXcikFWdj5yT/vM=
x-aol-sid: 3039ac1b022156a66bee66dd
X-AOL-IP: 10.172.102.124
Archived-At: <http://mailarchive.ietf.org/arch/msg/oauth/JJdDW9EEDr8Mid6p7c-W8MtXebk>
Cc: "oauth@ietf.org WG" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Call for Adoption: OAuth 2.0 Mix-Up Mitigation
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
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: <https://mailarchive.ietf.org/arch/browse/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, 25 Jan 2016 18:39:47 -0000

So now, in addition to the dynamic client registration spec, the client 
would need to support OAuth2 Discovery.

I guess my concern is that it feels like we are adding a lot of little 
things to try and mitigate these attacks in OAuth2 and it's confusing 
when they are needed and when they aren't.

For me it would be simpler to say that OAuth2 with a single 
pre-configured AS is fine. If a client wants to support multiple 
Authorization Servers (a la dynamic client registration or some other 
method) then here are all the things that need to be done. Maybe this 
would be simpler as a profile of OAuth2 (in the vein of OpenID Connect) 
that adds the necessary requirements to mitigate these attacks.

This way an OAuth2 developer knows which spec to follow based on their 
requirements and all the necessary steps would be in "one" place.

Thanks,
George

On 1/25/16 1:22 PM, John Bradley wrote:
> The presumption is that registration would need to add a issuer, as an 
> identifier of the AS, and that would be optionally be used in discovery.
>
> OAuth as is supports the single AS model.
>
> To support multiple AS for a single client something needs to change. 
>    Adding issuer and client_id to the response with optional discovery 
> was seen as the least disruptive at the Germany meeting.
>
>  The other way to do it is to return discovery info from the the 
> authorization and token endpoints, however the request probably also 
> need to be modified so that the AS knows what the resource is, otherwise
> other things will break.
>
> It is possible now to have one authorization endpoint provide code for 
> per Tennent token endpoints.(No I don’t know of any one doing it).
>
> Anything we add to tighten up the trust model will have impacts on 
> what can be done with OAuth.
>
> John B.
>> On Jan 25, 2016, at 3:10 PM, George Fletcher <gffletch@aol.com 
>> <mailto:gffletch@aol.com>> wrote:
>>
>> Comments inline
>>
>> On 1/25/16 12:32 PM, John Bradley wrote:
>>> No, client id_are scoped by issuer.
>> This makes sense, but I'm not sure it's a current assumption by 
>> OAuth2 implementations :)
>>>
>>> There is no need for AS to make the client_id globally unique.
>>>
>>>  The client needs to not allow two AS to provide it with the same 
>>> issuer client_id pair.
>>>
>>> That would probably be imposable for many clients anyway.
>> I would rather say that the results of two client_ids being the same 
>> from two different issuers is undefined.
>>>
>>> For Connect clients typically manage configurations using issuer as 
>>> the primary key.  I doubt may would support even two client_id from 
>>> the same issuer.
>> If scoped by issuer this makes sense, though the concept of "issuer" 
>> as a comparable entity wasn't really talked about with OAuth2.
>>>
>>> For OAuth what clients do is slightly less clear.  In general they 
>>> don’t have more than one AS per API do might try and organize things 
>>> by RS or AS.
>> I agree that not many clients support dynamic client registration. 
>> However, I would say there a number that support multiple AS that are 
>> "fixed" within the code (including fixed endpoint URIs). So I would 
>> say that the associations would be fixed in code. There wouldn't 
>> necessarily be an association outside of the code which maps button A 
>> to AS1 and button B to AS2.
>>>
>>> In principal a OAuth client might have two different AS each with a 
>>> different client ID and that will be OK as long as the client_id in 
>>> the request is the same as the one in the response.
>>>
>>> So going to a new AS and getting back the same iss and client_id 
>>> that you registered someplace else would be an error for the client.
>>>
>>> I don’t think that is unreasonable.
>> I agree that this is reasonable with the assumption that client_id's 
>> are scoped by "issuer". It's just likely that most clients in the 
>> field do not have this sort of explicit association. The OAuth2 
>> Dynamic Client Registration spec does not define an "issuer" in the 
>> response. For the OAuth2 use cases, what is the proposed "issuer" 
>> equivalent URI that is being used to scope the client_id?
>>>
>>> John B.
>>>
>>>
>>>> On Jan 25, 2016, at 12:30 PM, George Fletcher <gffletch@aol.com 
>>>> <mailto:gffletch@aol.com>> wrote:
>>>>
>>>> I'm still catching up... but to this point specifically...
>>>>
>>>> Doesn't this require that the same client_id NOT be used 
>>>> simultaneously at two (or more) Authorization Servers? If so, I 
>>>> don't believe that is a viable option. It's a little late in the 
>>>> game to be putting requirements on the AS as to how it generates 
>>>> it's client_id.
>>>>
>>>> Thanks,
>>>> George
>>>>
>>>> On 1/25/16 9:11 AM, John Bradley wrote:
>>>>>
>>>>> Returning the iss and client_id from the authorization endpoint 
>>>>> per Mike’s draft allows the client to reject the authorization 
>>>>> response and not leak the code.
>>>>
>>>
>>
>> -- 
>> Chief Architect
>> Identity Services Engineering     Work:george.fletcher@teamaol.com
>> AOL Inc.                          AIM:  gffletch
>> Mobile: +1-703-462-3494           Twitter:http://twitter.com/gffletch
>> Office: +1-703-265-2544           Photos:http://georgefletcher.photography
>

-- 
Chief Architect
Identity Services Engineering     Work: george.fletcher@teamaol.com
AOL Inc.                          AIM:  gffletch
Mobile: +1-703-462-3494           Twitter: http://twitter.com/gffletch
Office: +1-703-265-2544           Photos: http://georgefletcher.photography