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

Justin Richer <jricher@mitre.org> Thu, 06 June 2013 17:13 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 3885921F95D7 for <oauth@ietfa.amsl.com>; Thu, 6 Jun 2013 10:13:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.523
X-Spam-Level:
X-Spam-Status: No, score=-6.523 tagged_above=-999 required=5 tests=[AWL=0.075, 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 bb6T+rYxSKef for <oauth@ietfa.amsl.com>; Thu, 6 Jun 2013 10:13:09 -0700 (PDT)
Received: from smtpksrv1.mitre.org (smtpksrv1.mitre.org [198.49.146.77]) by ietfa.amsl.com (Postfix) with ESMTP id 05BEF21F99D1 for <oauth@ietf.org>; Thu, 6 Jun 2013 10:13:09 -0700 (PDT)
Received: from smtpksrv1.mitre.org (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id 5AA312270009; Thu, 6 Jun 2013 13:13:08 -0400 (EDT)
Received: from IMCCAS03.MITRE.ORG (imccas03.mitre.org [129.83.29.80]) by smtpksrv1.mitre.org (Postfix) with ESMTP id 289832270011; Thu, 6 Jun 2013 13:13:08 -0400 (EDT)
Received: from [10.146.15.13] (129.83.31.56) by IMCCAS03.MITRE.ORG (129.83.29.80) with Microsoft SMTP Server (TLS) id 14.2.342.3; Thu, 6 Jun 2013 13:13:07 -0400
Message-ID: <51B0C2F3.7010507@mitre.org>
Date: Thu, 06 Jun 2013 13:12:19 -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: "Manger, James H" <James.H.Manger@team.telstra.com>
References: <20130524203638.25945.84709.idtracker@ietfa.amsl.com> <51A8C0ED.6040607@mitre.org> <87E1F74D-9CCA-4330-82D6-AB3D9B8EF48D@oracle.com> <F319CA95-B5A8-4BD5-A8BA-F57BCBA6806B@oracle.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_tguPtPDktmM8q=72EgnesignTuWE19wi61gCTLLL_g@mail.gmail.com> <1373E8CE237FCC43BCA36C6558612D2A9F26D0@USCHMBX001.nsn-intra.net> <919FB49B-2705-42E4-B5C3-B433C3F81C7F@ve7jtb.com> <1373E8CE237FCC43BCA36C6558612D2A9F2764@USCHMBX001.nsn-intra.net> <92B2D90A-59A9-4EC0-93DB-7E226F3C4018@ve7jtb.com> <255B9BB34FB7D647A506DC292726F6E1151B106382@WSMSG3153V.srv.dir.telstra.com>
In-Reply-To: <255B9BB34FB7D647A506DC292726F6E1151B106382@WSMSG3153V.srv.dir.telstra.com>
Content-Type: multipart/alternative; boundary="------------000109050408080807080605"
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:13:14 -0000

On 06/06/2013 10:48 AM, Manger, James H wrote:
>
> John,
>
> Why is the circularity of registration any different for a non-bearer 
> scheme?
>
> A developer browsing a service portal can grab an id & secret, just as 
> easily as grabbing a bearer token, to configure into an app as the 
> initial access token.
>

That's true -- and in that case, they're not doing dynamic registration 
and this spec doesn't apply. They're doing static registration, which is 
still of course an option.

But there are cases where you want to pre-authorize a developer or tie 
together a set of clients, and the Initial Access Token gives you a 
mechanism for starting that work. (Though, importantly, it doesn't 
specify everything that you'd need in order to do that.)

> A client registration endpoint can return an id & secret, just as 
> easily as returning a bearer token, for the client to use as the 
> registration access token.
>

It does, for clients that use them. But not all clients use 
client_secret, and forcing all clients to have a client_secret just to 
talk to the registration endpoint doesn't fly. OpenID Connect already 
tried that approach, and failed, and we need to learn from that mistake 
instead of repeating it. What's tricky about this is that it seems like 
a perfectly reasonable thing to do on the surface but it falls apart 
quickly in implementation.

> OAuth 2 defines a JSON format for conveying an access token [RFC6749 
> "OAuth 2.0" section 5.1. "Issuing an access token: Successful 
> Response"]. That might be a better syntax for an app to expect when 
> receiving an initial access token and a registration access token, 
> given it needs to understand that format for "real" access tokens anyway.
>

How you get the initial access token is out of scope. You *can* do a 
plain old OAuth 2.0 flow and get the Initial Access Token back from the 
Token Endpoint with the syntax mentioned here. We didn't adopt that 
syntax for the registration endpoint's Registration Access Token 
response because it was argued that as a simple bearer token with no 
explicit scopes or other properties, a simple string would be 
preferable. While I would personally prefer to use the structure from 
the Token Endpoint, the Working Group decided (and convinced me) that 
locking it down to a simple bearer token in this case (just the 
Registration Access Token) is simpler for clients and servers to deal with.

> > Having a mandatory-to-implement mechanism in place is certainly useful
>
> Registration supporting the same mechanism an app will use with "real" 
> access tokens (whatever that is for this AS) would be even more useful.
>

But what if the app doesn't authenticate to the token endpoint at all? 
We can't just throw out an entire class of clients.

  -- Justin

> --
>
> James Manger
>
> *From:*John Bradley [mailto:ve7jtb@ve7jtb.com]
> *Sent:* Thursday, 6 June 2013 7:22 PM
> *To:* Tschofenig, Hannes (NSN - FI/Espoo)
> *Cc:* ext Tim Bray; Manger, James H; oauth@ietf.org
> *Subject:* Re: [OAUTH-WG] draft-ietf-oauth-dyn-reg and bearer tokens
>
> On the face of it I think adding proof of possession aught to be 
> possible.   The hard part will be that those mechanisms assume a 
> registered client.
>
> I think the trick will be not crating a circular registration problem. 
>    Adding the other token types to the RS will be simple in comparison.
>
> John B.
>
> On 2013-06-06, at 10:57 AM, "Tschofenig, Hannes (NSN - FI/Espoo)" 
> <hannes.tschofenig@nsn.com <mailto:hannes.tschofenig@nsn.com>> wrote:
>
>
>
> That's fair, John.
>
> Having a mandatory-to-implement mechanism in place is certainly 
> useful. Pushing stronger security mechanisms to other specifications 
> is also fine. It would be good to re-read the document to see whether 
> we can actually fit the currently worked on security mechanisms into 
> the spec at a later stage or whether there are some problems with the 
> extensibility story.
>
> Ciao
>
> Hannes
>
> *From:*ext John Bradley [mailto:ve7jtb@ve7jtb.com <http://ve7jtb.com>]
> *Sent:*Thursday, June 06, 2013 11:54 AM
> *To:*Tschofenig, Hannes (NSN - FI/Espoo)
> *Cc:*ext Tim Bray; Manger, James H; oauth@ietf.org <mailto:oauth@ietf.org>
> *Subject:*Re: [OAUTH-WG] draft-ietf-oauth-dyn-reg and bearer tokens
>
> 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
> https://www.ietf.org/mailman/listinfo/oauth