Re: [OAUTH-WG] review comments on draft-ietf-oauth-dyn-reg-11.txt

Justin Richer <jricher@mitre.org> Thu, 30 May 2013 18:34 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 7E12C21F9017 for <oauth@ietfa.amsl.com>; Thu, 30 May 2013 11:34:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.06
X-Spam-Level:
X-Spam-Status: No, score=-5.06 tagged_above=-999 required=5 tests=[AWL=-0.762, BAYES_00=-2.599, HTML_MESSAGE=0.001, MANGLED_CREDIT=2.3, 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 zHjzSm1dUd5m for <oauth@ietfa.amsl.com>; Thu, 30 May 2013 11:33:55 -0700 (PDT)
Received: from smtpksrv1.mitre.org (smtpksrv1.mitre.org [198.49.146.77]) by ietfa.amsl.com (Postfix) with ESMTP id 5AAA921F8EAD for <oauth@ietf.org>; Thu, 30 May 2013 11:33:55 -0700 (PDT)
Received: from smtpksrv1.mitre.org (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id 4C9981F069D; Thu, 30 May 2013 14:33:54 -0400 (EDT)
Received: from IMCCAS04.MITRE.ORG (imccas04.mitre.org [129.83.29.81]) by smtpksrv1.mitre.org (Postfix) with ESMTP id EF4F31F0688; Thu, 30 May 2013 14:33:53 -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, 30 May 2013 14:33:53 -0400
Message-ID: <51A79B69.9090702@mitre.org>
Date: Thu, 30 May 2013 14:33:13 -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> <5071FA1C-F6F7-43AD-9EDC-13B0D480F97A@mitre.org> <51A3AE0B.1020802@lodderstedt.net> <51A4BF27.50800@mitre.org> <51A72B3E.9050300@lodderstedt.net> <51A76052.6040004@mitre.org> <0354062A-DEB8-4272-861B-43DC48887F54@ve7jtb.com> <2E872A80-1B5B-468D-910C-1D6E9DFEFF78@oracle.com> <9F86FCC6-E737-4086-8821-81A94AEC4BE2@oracle.com> <54C61883-4A00-441E-B6DB-2B4156B969F4@ve7jtb.com> <2674C9F9-0C49-4EC3-A69D-20AAC35E8AB8@oracle.com> <2F891558-6DDF-4FFB-B2D3-F1219EB6CFAF@oracle.com>
In-Reply-To: <2F891558-6DDF-4FFB-B2D3-F1219EB6CFAF@oracle.com>
Content-Type: multipart/alternative; boundary="------------020009010303000308070408"
X-Originating-IP: [129.83.31.56]
Cc: "oauth@ietf.org WG" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] review comments on draft-ietf-oauth-dyn-reg-11.txt
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, 30 May 2013 18:34:00 -0000

Thanks for clearing up where the confusion was taking place. I had tried 
to make it clear that these were absolutely standard, opaque OAuth2 
bearer tokens and absolutely standard OAuth2-protected endpoints, but if 
that's not clear that needs to be updated. This is what the text says 
right now:

    The Client Registration Endpoint MAY accept an Initial Access Token
    in the form of an OAuth 2.0
    <http://tools.ietf.org/id/draft-ietf-oauth-dyn-reg-11.html#RFC6749>
    [RFC6749] access token to limit registration to only previously
    authorized parties. The method by which the Initial Access Token is
    obtained by the registrant is generally out-of-band and is out of
    scope of this specification.


And:

    The Client Configuration Endpoint is an OAuth 2.0 protected resource
    that is provisioned by the server for a specific client to be able
    to view and update its registered information. The location of this
    endpoint is communicated to the Client through the
    registration_client_uri member of the Client Information Response
    <http://tools.ietf.org/id/draft-ietf-oauth-dyn-reg-11.html#client-info-response>
    [client-info-response]. The Client MUST use its Registration Access
    Token in all calls to this endpoint as an OAuth 2.0 Bearer Token
    <http://tools.ietf.org/id/draft-ietf-oauth-dyn-reg-11.html#RFC6750>
    [RFC6750].


Along with the definitions in the introduction:

    Registration Access Token
        OAuth 2.0 Bearer Token issued by the Authorization Server
        through the Client Registration Endpoint that is used to
        authenticate the caller when accessing the Client's registration
        information at the Client Configuration Endpoint. This Access
        Token is associated with a particular registered Client.
    Initial Access Token
        An OAuth 2.0 Access Token optionally issued by an Authorization
        Server granting access to its Client Registration Endpoint.


I'd welcome any proposed changes to the text to make this clearer.

As to the other suggestion, what you're saying is to use the client 
credentials to get an access token to get the client credentials ... ? I 
can see the argument for using the oauth client credentials flow, but I 
think that's far more complicated than an endpoint saying "here's a 
token, go use it", personally. Besides, not all clients have credentials 
at the token endpoint, so it's a bit of a non-starter for a large class 
of clients.

  -- Justin


On 05/30/2013 01:55 PM, Phil Hunt wrote:
> I see what is happening.
>
> I think the reason why I find this spec sooo confusing is that the terms imply new token types when they don't.
>
> For example when you say "Registration Access Token" and "Initial Access Token" it implies to me that it is a totally new token type (and in one case it sorta is). When you read the spec (particularly draft 10) it is easy to assume something very different is going on. Hence my push back.
>
> It is now clear to me that what you mean to say is *Access Token used for initial access* and *Access Token used for registration*.
>
> Why not write the draft to make clear that the registration end point is just a NORMAL OAuth2 Enabled REST endpoint?  That way you can eliminate all of the terminology and lifecycle around access tokens except to say the endpoint is accessed by tokens issued based on the scope "oauth2:registration".
>
> That only brings issues with the registration token.  The "Access Token used for registration" seems to have special lifecycle differences.
> 1.  Issed by reg endpoint as part of successful registration
> 2.  Has a different lifetime than the client credential (whatever it is).
>
> Why not again simplify and follow normal OAuth2 pattern and have the access token issued for registration be *short* lived.  Each time the client wants to either initially register or update its profile it must request a normal access token with scope "oauth2:registration".
>
> As for client credential expiry, why not simply require the client to update its registration before it expires?  Why have a long-lived "registration access token" that has to be managed as well?
>
> Maybe now I am completely confused?
>
> Phil
>
> @independentid
> www.independentid.com
> phil.hunt@oracle.com
>
>
>
>
>
> On 2013-05-30, at 10:12 AM, Phil Hunt wrote:
>
>> The issue is that it has different issuing/lifecycle than normal. E.g. Why is it issued by the registration endpoint?
>>
>> Why doesn't the client just request an access token using its client credential for the registration endpoint when it wants to update its profile?
>>
>> Phil
>>
>> @independentid
>> www.independentid.com
>> phil.hunt@oracle.com
>>
>>
>>
>>
>>
>> On 2013-05-30, at 10:08 AM, John Bradley wrote:
>>
>>> The reg access token is a OAuth bearer token that is issued as part of the registration response and used to access the new client resource for reads and or updates depending on the permissions.
>>>
>>> They are both oauth access tokens.
>>>
>>> On 2013-05-30, at 12:02 PM, Phil Hunt <phil.hunt@oracle.com> wrote:
>>>
>>>> Seriously. The new dyn reg draft introduces two new tokens. The initial reg token and the registration access token.
>>>>
>>>> As for the latter, the reg access token, my understanding is it has nothing to do with an access token. It is issued *after* registration to allow reg updates.  Right? I know some are confused about this.
>>>>
>>>> Phil
>>>>
>>>> On 2013-05-30, at 8:52, Phil Hunt <phil.hunt@oracle.com> wrote:
>>>>
>>>>> No different issue. I was concerned about the initial client assertion being passed in as authen cred. It is a signed set of client reg metadata.
>>>>>
>>>>> See we are confused. Hence my worry. :-)
>>>>>
>>>>> Phil
>>>>>
>>>>> On 2013-05-30, at 8:48, John Bradley <ve7jtb@ve7jtb.com> wrote:
>>>>>
>>>>>> I think Phil also had some processing reason why a Token endpoint or RS wouldn't want to tale the authentication as a header, as the processing was easier with them as parameters as they are potentially available to different parts of the stack.   That may have been mostly around RS, but the principal may apply to the token endpoint as well.
>>>>>>
>>>>>> On 2013-05-30, at 10:21 AM, Justin Richer <jricher@mitre.org> wrote:
>>>>>>
>>>>>>>>>> "client_secret_post vs client_secret_basic"
>>>>>>>>>> BASIC and POST are essentially the same just different ways to send the client secret. If an authorization server supports both, both should work for any client. So are both methods treated differently?
>>>>>>>>> I agree, and this was one of my original arguments for making this field plural (or plural-able), but there hasn't been WG support for that so far.
>>>>>>>> I'm not arguing to make it plural. I think the authentication method is just "client_secret".
>>>>>>> That was also an option that was brought up, but in the OIDC WG the counter-argument was (as I recall) that the two are syntactically separate and there's a desire to restrict to a single type, such as disabling client_secret_post. Basically, to make it unambiguous.
>>>>>> _______________________________________________
>>>>>> 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
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth