Re: [OAUTH-WG] draft-ietf-oauth-dyn-reg and bearer tokens

Justin Richer <jricher@mitre.org> Thu, 06 June 2013 17:55 UTC

Return-Path: <jricher@mitre.org>
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 710F211E80D5 for <oauth@ietfa.amsl.com>; Thu, 6 Jun 2013 10:55:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.462
X-Spam-Level:
X-Spam-Status: No, score=-6.462 tagged_above=-999 required=5 tests=[AWL=0.136, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-4]
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 64G5yFflKRdz for <oauth@ietfa.amsl.com>; Thu, 6 Jun 2013 10:55:24 -0700 (PDT)
Received: from smtpksrv1.mitre.org (smtpksrv1.mitre.org [198.49.146.77]) by ietfa.amsl.com (Postfix) with ESMTP id 869F521F9A12 for <oauth@ietf.org>; Thu, 6 Jun 2013 10:55:23 -0700 (PDT)
Received: from smtpksrv1.mitre.org (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id 2DD911F0625; Thu, 6 Jun 2013 13:55:23 -0400 (EDT)
Received: from IMCCAS04.MITRE.ORG (imccas04.mitre.org [129.83.29.81]) by smtpksrv1.mitre.org (Postfix) with ESMTP id 17B971F041C; Thu, 6 Jun 2013 13:55:23 -0400 (EDT)
Received: from [10.146.15.13] (129.83.31.56) by IMCCAS04.MITRE.ORG (129.83.29.81) with Microsoft SMTP Server (TLS) id 14.2.342.3; Thu, 6 Jun 2013 13:55:22 -0400
Message-ID: <51B0CCDA.8010805@mitre.org>
Date: Thu, 06 Jun 2013 13:54:34 -0400
From: Justin Richer <jricher@mitre.org>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130510 Thunderbird/17.0.6
MIME-Version: 1.0
To: Phil Hunt <phil.hunt@oracle.com>
References: <20130524203638.25945.84709.idtracker@ietfa.amsl.com> <51A8E0BD.9090908@mitre.org> <521EB2A2-C786-43BE-9449-A12324347E6D@oracle.com> <002701ce5e33$620faaa0$262effe0$@reminetworks.com> <0561023C-4AFC-4281-BC62-764C12EC763D@oracle.com> <51A8FCA6.9050109@mitre.org> <004401ce5e3a$01854b70$048fe250$@reminetworks.com> <CA+ZpN24S9fEfFsgMtu8pN-ct-100+HVSHAfqO4Yy2SksrYt1eA@mail.gmail.com> <255B9BB34FB7D647A506DC292726F6E1151B105DA5@WSMSG3153V.srv.dir.telstra.com> <CA+ZpN25_tguPtPDkt!> <m> <M8q=72EgnesignTuWE19wi61gCTLLL_g@mail.gmail.com> <1373E8CE237FCC43BCA36C6558612D2A9F26D0@USCHMBX001.nsn-intra.net> <919FB49B-2705-42E4-B5C3-B433C3F81C7F@ve7jtb.com> <9209089C-5B60-4212-88EA-376855DBCEA0@oracle.com> <51B0C14D.5020306@mitre.org> <1CCDB2B8-CAD9-4827-8113-F92537F70375@oracle.com> <51B0C8CE.6070309@!> <mitre.org> <B7DA2604-0B04-478C-96C3-75E4D3503DB6@oracle.com> <51B0CB6D.7060! 004@mitre.org> <C1B704A0-73EE-486E-9F45-FD20855B3DCB@oracle.com>
In-Reply-To: <C1B704A0-73EE-486E-9F45-FD20855B3DCB@oracle.com>
Content-Type: multipart/alternative; boundary="------------070701020209050606040605"
X-Originating-IP: [129.83.31.56]
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] draft-ietf-oauth-dyn-reg and bearer tokens
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, 06 Jun 2013 17:55:29 -0000

... My bad, you're right. I was getting my wires crossed with all these 
emails.

In my view, the initial access token is, fundamentally, an access token 
used to constrain access to the registration endpoint (not the 
configuration endpoint, and not to get "normal" access tokens). Just 
like a normal OAuth token is an opaque token used to constrain access to 
the protected resource. If you want to define anything more for either 
of those, you're going to need more work.

I'm completely on board with making those definitions, but I think it 
goes beyond registration. And if registration is silent on all of this, 
and just says "the registration endpoint may be an OAuth 2.0 protected 
resource", then whatever interoperable solutions we can come up with for 
validating a cross-domain token can be applied here. I don't think it 
makes sense to constrain registration before the rest of this work is 
baked.

  -- Justin


On 06/06/2013 01:50 PM, Phil Hunt wrote:
> We have two separate discussions going on.  8-)
>
> Phil
>
> @independentid
> www.independentid.com <http://www.independentid.com>
> phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>
>
>
>
>
>
> On 2013-06-06, at 10:48 AM, Justin Richer wrote:
>
>> I thought we were talking about the registration access token, not 
>> the initial access token?
>>
>>  -- Justin
>>
>> On 06/06/2013 01:48 PM, Phil Hunt wrote:
>>> This is why this to-MAY-to vs. to-MAH-to distinction around is the 
>>> initial access token an authorization token is important.
>>>
>>> The purpose for the initial access token is dramatically different 
>>> then normal access tokens.  This is for "registration" and does not 
>>> constitute authentication or authorization.
>>>
>>> Therefore, in this case, I do not believe that defining access 
>>> tokens in the broader sense makes this issue clearer.
>>>
>>> Registration is a very specific process different than authorization.
>>>
>>> This might be a good paper to look at so the group understands why I 
>>> am differentiating authorization from what is happening with initial 
>>> access:
>>> http://tools.ietf.org/html/draft-hallambaker-httpauth-00
>>>
>>> Phil
>>>
>>> @independentid
>>> www.independentid.com <http://www.independentid.com/>
>>> phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>
>>>
>>>
>>>
>>>
>>>
>>> On 2013-06-06, at 10:37 AM, Justin Richer wrote:
>>>
>>>> Interoperability of the processing of OAuth tokens is a separate 
>>>> issue that needs to be solved not just for registration. When it is 
>>>> solved in the wider case, Registration as-is will inherit the solution.
>>>>
>>>> So today, if you're using an Initial Access Token (which is 
>>>> optional), then you're locked to whatever process you want to use 
>>>> to verify/validate that token. Since it's just an OAuth token, 
>>>> you've got a number of things that you can do (assertions, 
>>>> introspection, magic).
>>>>
>>>> I'd rather we solve the *real* cross-domain issue in the wider case 
>>>> than just try to cram something into registration.
>>>>
>>>>  -- Justin
>>>>
>>>> On 06/06/2013 01:33 PM, Phil Hunt wrote:
>>>>>
>>>>> Phil
>>>>>
>>>>> @independentid
>>>>> www.independentid.com <http://www.independentid.com/>
>>>>> phil.hunt@oracle.com <mailto:phil.hunt@oracle.com>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On 2013-06-06, at 10:05 AM, Justin Richer wrote:
>>>>>
>>>>>>
>>>>>> On 06/06/2013 11:20 AM, Phil Hunt wrote:
>>>>>>> As I've said before the initial auth token should nothing to do 
>>>>>>> with auth. It is simply an assertion given to the developer to 
>>>>>>> distribute in order to pass on signed claims about the software.
>>>>>>
>>>>>> Phil, as I and several others have explained previously, that's 
>>>>>> not true at all. It's a token that gives authorization to the 
>>>>>> registration endpoint. The fact that you can use it as an 
>>>>>> assertion to pass along signed claims is an artifact of it being 
>>>>>> an OAuth token and an OAuth token is an opaque string. Please 
>>>>>> read through the dynamic registration draft again -- it says 
>>>>>> absolutely nothing about assertions, signatures, or claims with 
>>>>>> regard to this token.
>>>>> It depends which case you are using.  If the developer is talking 
>>>>> to a single deployment domain and obtains an initial access token 
>>>>> and then ships it with all clients, then sure.  In this scenario, 
>>>>> the contents are totally controlled by the local domain.
>>>>>
>>>>> I agree. In this case, you don't care about inter-op. The whole 
>>>>> environment is siloed.  But then, if this is your case, I'm not 
>>>>> sure why this draft is at the IETF.
>>>>>
>>>>> The interoperability case is where a third party generates that 
>>>>> assertion and the deployment domain has to decide to accept it. 
>>>>>  So you are a developer and you want to build a client for a 
>>>>> Microsoft or Oracle app.  You want to be able to ship that to your 
>>>>> customers. You register with the appropriate publisher and they 
>>>>> give you a signed assertion that can be used as the "Initial 
>>>>> Access Token".    This token is then accepted by the deployment 
>>>>> domain and then it decides if it trusts the signer or not.
>>>>>
>>>>> ===> For this to work, the contents and format of that token MUST 
>>>>> be defined.   Otherwise how could we ensure a Microsoft signed 
>>>>> assertion would be accepted by a PingIdentity OAuth server?  Or 
>>>>> any other combination of implementations from different 
>>>>> vendors/communities?
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Bearer or not bearer is a distraction. The fact that the 
>>>>>>> contents and format of this token is out of scope leaves a HUGE 
>>>>>>> interop gap.
>>>>>>
>>>>>> The fact that some of us (myself included) are *using* this token 
>>>>>> to carry this kind of information is out of scope for the basic 
>>>>>> registration spec. I completely agree that there's value in 
>>>>>> defining this stuff, but as a separate and complementary spec 
>>>>>> from registration.
>>>>>
>>>>> [PH] I was reacting to John Bradley's assertion that the spec was 
>>>>> narrowly defined with interop in mind. Yet this mechanism is a key 
>>>>> factor being used to share information about the software.
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Finally never-mind bearer bias, how are  client credentials 
>>>>>>> rotated interoperably if the only thing rotated is client_secret?
>>>>>>
>>>>>> *any* parameter on the client, including the 
>>>>>> registration_access_token and any extension parameters, can be 
>>>>>> rotated on any call to the Read or Update methods (except for 
>>>>>> client_id). So if you've got another mechanism for doing client 
>>>>>> authentication, you can rotate that, too.
>>>>>>
>>>>>>>
>>>>>>> I would say the spec only works for client secrets and/or 
>>>>>>> all-in-one domain where there is no interop.
>>>>>>
>>>>>> Considering I've personally used it across domains and without 
>>>>>> client secrets (using jwks_uri to register public keys), I have 
>>>>>> to empirically disagree with that statement.
>>>>>>
>>>>>>  -- Justin
>>>>>>
>>>>>>>
>>>>>>> Phil
>>>>>>>
>>>>>>> On 2013-06-06, at 1:53, John Bradley <ve7jtb@ve7jtb.com 
>>>>>>> <mailto:ve7jtb@ve7jtb.com>> wrote:
>>>>>>>
>>>>>>>> There are a couple of reasons.
>>>>>>>>
>>>>>>>> One criticism Hannes and others make of OAuth specs is they are 
>>>>>>>> not tightly profiled enough to be interoperable without further 
>>>>>>>> out of band configuration and profiling.
>>>>>>>>
>>>>>>>> Making registration work with minimal ambiguity was a priority 
>>>>>>>> for Connect and that has carried over.
>>>>>>>>
>>>>>>>> I am not opposed to having this extended at some point in the 
>>>>>>>> future, once we have a second token type.   The new token type 
>>>>>>>> should be available to do updates as well.
>>>>>>>>
>>>>>>>> The problem is that starting down the HoK route potentially 
>>>>>>>> requires a registered client that may need to be registered to 
>>>>>>>> do the registration.
>>>>>>>> I think that is best left to another spec to sort out the 
>>>>>>>> possible turtles.
>>>>>>>>
>>>>>>>> So the default needs to be bearer tokens unless registration is 
>>>>>>>> extended by another profile.
>>>>>>>>
>>>>>>>> John B.
>>>>>>>> On 2013-06-06, at 10:15 AM, "Tschofenig, Hannes (NSN - 
>>>>>>>> FI/Espoo)" <hannes.tschofenig@nsn.com 
>>>>>>>> <mailto:hannes.tschofenig@nsn.com>> wrote:
>>>>>>>>
>>>>>>>>> Because bearer tokens have a stable RFC-numbered spec and are 
>>>>>>>>> widely implemented and the registration flow as documented 
>>>>>>>>> seems like it should work?  -T
>>>>>>>>> That’s the answer for why there is support for bearer tokens 
>>>>>>>>> but it is not the answer to why that’s the only supported 
>>>>>>>>> mechanism.
>>>>>>>>> If we want to support stronger security mechanisms (which the 
>>>>>>>>> group has decided to work on already) then we need to have a 
>>>>>>>>> story on how to support the other mechanisms as well .
>>>>>>>>> _______________________________________________
>>>>>>>>> OAuth mailing list
>>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> OAuth mailing list
>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>
>>>>>
>>>>
>>>
>>
>