Re: [OAUTH-WG] Refactoring Dynamic Registration

Anthony Nadalin <tonynad@microsoft.com> Tue, 27 August 2013 18:38 UTC

Return-Path: <tonynad@microsoft.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 4980921E8084 for <oauth@ietfa.amsl.com>; Tue, 27 Aug 2013 11:38:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.471
X-Spam-Level:
X-Spam-Status: No, score=-3.471 tagged_above=-999 required=5 tests=[AWL=0.128, BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
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 WvxTRDqdmPzc for <oauth@ietfa.amsl.com>; Tue, 27 Aug 2013 11:38:19 -0700 (PDT)
Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2lp0240.outbound.protection.outlook.com [207.46.163.240]) by ietfa.amsl.com (Postfix) with ESMTP id 0D57721E80FA for <oauth@ietf.org>; Tue, 27 Aug 2013 11:38:18 -0700 (PDT)
Received: from BY2PR03MB191.namprd03.prod.outlook.com (10.242.36.143) by BY2PR03MB092.namprd03.prod.outlook.com (10.255.241.160) with Microsoft SMTP Server (TLS) id 15.0.745.25; Tue, 27 Aug 2013 18:38:17 +0000
Received: from BY2PR03MB189.namprd03.prod.outlook.com (10.242.36.140) by BY2PR03MB191.namprd03.prod.outlook.com (10.242.36.143) with Microsoft SMTP Server (TLS) id 15.0.745.25; Tue, 27 Aug 2013 18:38:16 +0000
Received: from BY2PR03MB189.namprd03.prod.outlook.com ([169.254.6.221]) by BY2PR03MB189.namprd03.prod.outlook.com ([169.254.6.221]) with mapi id 15.00.0745.000; Tue, 27 Aug 2013 18:38:15 +0000
From: Anthony Nadalin <tonynad@microsoft.com>
To: Justin Richer <jricher@mitre.org>
Thread-Topic: Refactoring Dynamic Registration
Thread-Index: AQHOoy6Xe84MPWeQ0USE/EN9KkVWYZmpSJuAgAAS04CAAAI8kIAAA+sAgAAAXMA=
Date: Tue, 27 Aug 2013 18:38:15 +0000
Message-ID: <a9f69dce67494fbebea818cdb51494b4@BY2PR03MB189.namprd03.prod.outlook.com>
References: <D4C71EFB-AE88-4E42-AED2-D9202247A3DB@mitre.org> <052002acf28f44d185131db50ab9fbb1@BY2PR03MB189.namprd03.prod.outlook.com> <521CEBE5.8010006@mitre.org> <8a5b8df1c31d4a58bc341fe1587664ec@BY2PR03MB189.namprd03.prod.outlook.com> <521CF10E.1090801@mitre.org>
In-Reply-To: <521CF10E.1090801@mitre.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [2001:4898:80e0:ed43::3]
x-forefront-prvs: 0951AB0A30
x-forefront-antispam-report: SFV:NSPM; SFS:(13464003)(24454002)(189002)(199002)(52604005)(51704005)(377454003)(479174003)(80976001)(65816001)(31966008)(74502001)(47446002)(74662001)(74706001)(80022001)(83072001)(56776001)(54316002)(59766001)(79102001)(76482001)(54356001)(15202345003)(53806001)(77982001)(81816001)(74366001)(69226001)(77096001)(83322001)(19580405001)(63696002)(51856001)(76796001)(74316001)(81542001)(49866001)(81342001)(47736001)(47976001)(50986001)(56816003)(4396001)(76786001)(76576001)(81686001)(74876001)(19580395003)(15975445006)(46102001)(33646001)(42262001)(3826001)(24736002); DIR:OUT; SFP:; SCL:1; SRVR:BY2PR03MB191; H:BY2PR03MB189.namprd03.prod.outlook.com; CLIP:2001:4898:80e0:ed43::3; RD:InfoNoRecords; MX:1; A:1; LANG:en;
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: DuplicateDomain-a84fc36a-4ed7-4e57-ab1c-3e967bcbad48.microsoft.com
Cc: oauth mailing list <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Refactoring Dynamic Registration
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: Tue, 27 Aug 2013 18:38:23 -0000

This is a better explanation that what is in the current document, as this will become an interop problem that the clients need to deal with and not sure how the client is going to know how to deal with all these permutations, there should be a recommended action.

-----Original Message-----
From: Justin Richer [mailto:jricher@mitre.org] 
Sent: Tuesday, August 27, 2013 11:34 AM
To: Anthony Nadalin
Cc: oauth mailing list
Subject: Re: Refactoring Dynamic Registration

If the server does not understand a parameter (and by this, remember, we mean a field in the JSON object, not a query parameter), it can accept it, ignore it, replace it with a default value, or return an error.

Think of it in terms of the data model: The client has some model of what information it knows about, and the server's got some internal model of what a "registered client" is, and the client information response reflects the *server's* model of a client. Ultimately, the client is making a registration request, the server is returning the reality of what was actually registered. The client MUST defer to the server's values in these cases. If the server returns a value that the client doesn't know about (and doesn't know what to do with), the client will ignore that.

If the server's ignoring the parameter completely (which I think will be the common implementation), the server will just leave it out of the returned object entirely. That's what our server does if you send it some parameter that it doesn't know or care about -- it will safely ignore the field when it saves the object and echoes the configuration back. I'll here note that we didn't do anything special to make that happen, that's pretty much out of the box JSON library behavior in my experience.

The server could return a null value, or replace it with some default value that the server likes better. If the server's data model is somehow normalized and wants to take and remember *whatever* the client sends, it can echo back what the client sent. I don't think that's going to be very common in practice though, and clients need to be prepared to take back whatever the server dictates. Since the server is the final authority of what's attached to a given client ID, this is the appropriate model.

  -- Justin

On 08/27/2013 02:22 PM, Anthony Nadalin wrote:
> Understand all that  but does not say what the response will be on an additional parameter that the server does not understand,  does the parameter come back with a null, or is the parameter omitted on response ?
>
> -----Original Message-----
> From: Justin Richer [mailto:jricher@mitre.org]
> Sent: Tuesday, August 27, 2013 11:12 AM
> To: Anthony Nadalin
> Cc: oauth mailing list
> Subject: Re: Refactoring Dynamic Registration
>
> A JSON object is not order dependent by definition, so order of elements doesn't matter.
>
> In the section on client metadata and the client information response, it's stated that the server can:
>
> 1) Override a client's requested values and replace with its own
> 2) Insert a new field/value that the client didn't supply (effectively 
> a server default)
> 3) Restrict the value of a given field
>
> Therefore, clients MUST deal with whatever kinds of extra JSON a server might respond (so long as it's a valid JSON object). Thankfully, since this is JSON and not a schema-based XML format, this is trivial to implement for the client.
>
> If you have suggestions about how to word this better, please submit text.
>
>    -- Justin
>
> On 08/27/2013 01:20 PM, Anthony Nadalin wrote:
>> Thanks for splitting this and making it simple.
>>
>> It's unclear if the server must send the metadata back in same 
>> form/order/ as sent, that is, does client expect to get back only 
>> what was sent with what server values will be or can client deal with 
>> defaults that the sever sets
>>
>> -----Original Message-----
>> From: oauth-bounces@ietf.org [mailto:oauth-bounces@ietf.org] On Behalf Of Richer, Justin P.
>> Sent: Tuesday, August 27, 2013 7:06 AM
>> To: oauth mailing list
>> Subject: [OAUTH-WG] Refactoring Dynamic Registration
>>
>> After last week's design team call, at Derek's suggestion, I took time today to refactor the Dynamic Registration draft into two pieces: "core" and "management". The former contains the definition of the Registration Endpoint and the semantics surrounding that, the latter contains the Client Configuration Endpoint as well as the "non-essential" client metadata parameters.
>>
>> I did this refactoring with an axe, so there are almost certainly bits and pieces that are in the wrong document. In particular, I've kept the use cases in the "core" document even though they reference concepts and constructs defined in the "management" spec. This way people that don't want to deal with a configuration management API can implement just the "core" registration spec and call it a day, while people who want to have full lifecycle control can do the "management" spec on top of it. This does increase the optionality by making the client configuration endpoint parameters optional, but that's the tradeoff for having things cut this way.
>>
>> You can read both the specs here:
>>
>> http://tools.ietf.org/html/draft-richer-oauth-dyn-reg-core-00
>>
>> http://tools.ietf.org/html/draft-richer-oauth-dyn-reg-management-00
>>
>> I've uploaded these as individual submissions for now. If the working group decides to move forward with this refactoring, I expect both documents to move in tandem through the RFC approval process.
>>
>>    -- Justin
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth