Re: [OAUTH-WG] RFC 7592 - Client Update Request omitted fields

Justin Richer <jricher@mit.edu> Wed, 04 March 2020 21:41 UTC

Return-Path: <jricher@mit.edu>
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 6DB8D3A0A01 for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 13:41:43 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=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 6B20n8SnFCIJ for <oauth@ietfa.amsl.com>; Wed, 4 Mar 2020 13:41:41 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5E5863A099C for <oauth@ietf.org>; Wed, 4 Mar 2020 13:41:41 -0800 (PST)
Received: from [192.168.1.5] (static-71-174-62-56.bstnma.fios.verizon.net [71.174.62.56]) (authenticated bits=0) (User authenticated as jricher@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 024LfdJF007060 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 4 Mar 2020 16:41:39 -0500
From: Justin Richer <jricher@mit.edu>
Message-Id: <C7A21776-8747-4AC6-9A5E-07A0AF6F64AF@mit.edu>
Content-Type: multipart/alternative; boundary="Apple-Mail=_ED5C0E0E-9E2D-4414-A12F-D155A107EC4A"
Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.11\))
Date: Wed, 04 Mar 2020 16:41:38 -0500
In-Reply-To: <CALAqi_8yQyvSM0dmLHx7fhGMHVE2-29e=8VaCudbK0OMoR3ruw@mail.gmail.com>
Cc: oauth <oauth@ietf.org>
To: Filip Skokan <panva.ip@gmail.com>
References: <CALAqi_8r8h7+t+c2uDdaVzqCNxh33DS65Edo9ea3vQgm+dVEFA@mail.gmail.com> <84FE0330-B7E3-459A-A8A0-32058FAC4B98@mit.edu> <CALAqi_91Xv4QrZsQrU_YY=AKW8H_jX2Kax8gZ0QCxzDGX4DBzg@mail.gmail.com> <E03B5E8E-9EFA-46E2-9A57-BF5C6F3C4AE4@mit.edu> <CALAqi_8yQyvSM0dmLHx7fhGMHVE2-29e=8VaCudbK0OMoR3ruw@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.104.11)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/Q9YjB5Wl0cs1FrjRVl3WayXVewg>
Subject: Re: [OAUTH-WG] RFC 7592 - Client Update Request omitted fields
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 04 Mar 2020 21:41:51 -0000

I can see the confusion in interpreting these requirements together. However, this is giving a specific semantics to omitted fields such that they’re treated as included in a specific way — with a null value. The intent of “include everything” is that you don’t leave out values and expect them to not change. Instead we define explicitly what happens when you leave out values — they get deleted, effectively. 

 — Justin

> On Mar 4, 2020, at 1:20 PM, Filip Skokan <panva.ip@gmail.com> wrote:
> 
> I guess what i meant to call out is that while you and the spec says how omitted fields should be handled, but in the same section earlier it states that all fields must be included.
> 
> S pozdravem,
> Filip Skokan
> 
> 
> On Wed, 4 Mar 2020 at 17:35, Justin Richer <jricher@mit.edu <mailto:jricher@mit.edu>> wrote:
> I’m not sure what you’re asking — the text is not left over from anything and is intentionally included. That text is saying that if I leave out the field then the server treats it just like as if I had sent in a null value. So the following are equivalent:
> 
> {
>   “client_name”: “foo”,
>   “tos_uri”: null
> }
> 
> And 
> 
> {
>   “client_name”: “foo”,
> }
> 
> 
> In both cases, it’s a signal that the client is removing the value from the “tos_uri” field. It does not mean that the AS leaves the “tos_uri” field with the value that it previously was (ie, a PATCH style request). 
> 
> The AS can reject the update request if it doesn’t want to allow the client to blank out that field, for whatever reason. 
> 
>  — Justin
> 
> 
>> On Mar 4, 2020, at 10:42 AM, Filip Skokan <panva.ip@gmail.com <mailto:panva.ip@gmail.com>> wrote:
>> 
>> So the following
>> 
>> Omitted fields MUST be treated as null or empty values by the server, indicating the client's request to delete them from the client's registration.
>> 
>> Does not mean the server needs to accept requests where fields are omitted? Is that a left over from previous drafts then?
>> 
>> S pozdravem,
>> Filip Skokan
>> 
>> 
>> On Wed, 4 Mar 2020 at 16:37, Justin Richer <jricher@mit.edu <mailto:jricher@mit.edu>> wrote:
>> Your interpretation was our intent with that. It’s a full replace of the object. We had debating having PATCH style semantics, but ultimately decided that that was too complex for the most common update actions that a client would have.
>> 
>>  — Justin
>> 
>>> On Mar 3, 2020, at 8:42 AM, Filip Skokan <panva.ip@gmail.com <mailto:panva.ip@gmail.com>> wrote:
>>> 
>>> Hello everyone,
>>> 
>>> Section 2.2 of RFC 7592 <https://tools.ietf.org/html/rfc7592#section-2.2> (Dynamic Client Registration Management Protocol) has the following two statements that oppose one another.
>>> 
>>> This request MUST include all client metadata fields as returned to the client from a previous registration, read, or update operation.
>>> 
>>> Omitted fields MUST be treated as null or empty values by the server, indicating the client's request to delete them from the client's registration.
>>> 
>>> What's the intention here? Should a server be accepting requests that are missing client properties it has either on the record or "resolved" or not?
>>> 
>>> Personally I like to always make sure the client submits everything and to remove properties it must pass null or empty string as the values. That way the request is 100% intentional about the final state of the record it wants to update to.
>>> 
>>> What do you think?
>>> 
>>> Best,
>>> Filip
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>
>> 
>