On 02/14/2013 09:05 AM, John Bradley wrote: > I agree with Tim that is the behaviour I would expect to see with DELETE > though I have a rd time seeing a server ever honouring it. > > I guess that we need to clarify what happens with PUT and claims the server > has defaults for, perhaps some that are not changeable by the client. > > Is not including a claim in a PUT the same as not including it in > registration, and it is set to the default. > If you want to set a claim to null then you must explicitly include the claim > with null as the value. That is the previous logic we had for replace as the > client wasn't getting back all the config in the response and couldn't know > about defaults it wasn't setting. > > Perhaps PUT causes unsent claims to be interpreted as if they are sent with a > null value (I think that is a likely to cause tears personally). > > In ether case the client is not deleted and can still be recovered and the > client_id and associated permissions are still active.
What I had in mind from this conversation is something like this: When sending an update, a client MUST send all metadata fields returned from the server in its initial registration or previous read or update call, including its client_id. A server MAY replace any missing or invalid fields with default values, or it MAY return an error as described in the Error Response section. A server MUST return all provisioned fields in its response. A server MUST NOT change the client_id field. A server MAY change the client_secret and/or refresh_access_token fields. > > DELETE to be used correctly is I think going to delete the client_id and all > associated tokens and cause a ripple effect in removing grants associated > with that client_id. This is how I would interpret it as well. It's de-provisioning the client, not resetting it. -- Justin > > It is a big difference and understanding what a AS is supposed to do to > delete a client still seems a touch vague to me. I understand the http verb > but there is more to it than that if we want interoperability. > > John > > On 2013-02-14, at 12:31 AM, Nat Sakimura <sakim...@gmail.com> wrote: > >> I thought your concern about DELETE was whether the client should be >> allowed to erase the registration data. >> I thought PUT with an empty values would achieve a similar effect. >> Or did you mean that with PUT, the server default kicks in and >> parameters are set to the defaults? >> If that is the case, they are quite different, I agree. >> >> On the effect of DELETE, +1 to Tim's comment. >> >> Nat >> >> 2013/2/14 John Bradley <ve7...@ve7jtb.com>: >>> DELETE is removing the record not resetting it to defaults. They are quite >>> diffrent. >>> >>> I want to agree on what the expected behaviour of DELETE is. I think we >>> have agreement on PUT and POST. >>> >>> The general not in that a client can DELETE it's record is a implication I >>> don't like. I think that is for the server to decide and if it is not >>> actually deleting it then DELETE is the wrong verb to use. >>> >>> John B. >>> >>> On 2013-02-13, at 3:31 PM, Nat Sakimura <sakim...@gmail.com> wrote: >>> >>>> Generally speaking, mapping PUT to replace and POST to change is an >>>> acceptable practice so I am fine with it. >>>> >>>> Now, what I still do not understand is why you think it is fine to do >>>> PUT or POST and not DELETE. Doing PUT with empty content is almost the >>>> same as DELETE. Could you explain? >>>> >>>> =nat via iPhone >>>> >>>> Feb 14, 2013 0:10、John Bradley <ve7...@ve7jtb.com> のメッセージ: >>>> >>>>> I am not violently opposed to PUT as a option that completely replaces >>>>> the resource setting all unsent claims back to the defaults. >>>>> >>>>> I don't have a good feeling about DELETE, I think we still need more >>>>> discussion on what it means, what privileges it takes to invoke it etc. >>>>> It could be a bad thing if we get wrong or is not implemented >>>>> consistently. >>>>> >>>>> Personally I don't think a client should ever be able to DELETE it's >>>>> record. >>>>> >>>>> I think marking a client_id as pending provisioning, suspended, revoked >>>>> etc is better and that can be done with a claim in the update endpoint. >>>>> >>>>> It should only be the server that deletes a record after satisfying it's >>>>> audit requirements. >>>>> >>>>> John B. >>>>> >>>>> On 2013-02-13, at 12:00 PM, Justin Richer <jric...@mitre.org> wrote: >>>>> >>>>>> Would it be reasonable to mark the PUT and DELETE methods as optional >>>>>> for the server to implement, but with defined semantics if they do? I >>>>>> want to keep GET and POST(create) as mandatory, as I think that's the >>>>>> minimal set of functionality required. >>>>>> >>>>>> -- Justin >>>>>> >>>>>> On 02/11/2013 08:51 PM, John Bradley wrote: >>>>>>> I would always include the client_id on update. >>>>>>> >>>>>>> I think it is also us full to have other tokens used at the update >>>>>>> endpoint. I can see the master token used to update all the clients it >>>>>>> has registered as part of API management. >>>>>>> Relying on the registration_access_token is probably a design that will >>>>>>> cause trouble down the road. >>>>>>> >>>>>>> I think GET and POST are relatively clear. I don't know about >>>>>>> expelling PUT to developers. I think POST with a client_id to a >>>>>>> (separate discussion) update_uri works without restricting it to PUT. >>>>>>> >>>>>>> I think DELETE needs to be better understood. I think a status that >>>>>>> can be set for client lifecycle is better than letting a client delete >>>>>>> a entry. >>>>>>> In some cases there will be more than one instance of a client and >>>>>>> letting them know they have been turned off for a reason is better than >>>>>>> making there registration disappear. >>>>>>> So for the moment I would levee out DELETE. >>>>>>> >>>>>>> John B. >>>>>>> >>>>>>> On 2013-02-11, at 6:14 PM, Justin Richer <jric...@mitre.org> wrote: >>>>>>> >>>>>>>> Draft -05 of OAuth Dynamic Client Registration [1] defines several >>>>>>>> operations that the client can take on its behalf as part of the >>>>>>>> registration process. These boil down to the basic CRUD operations >>>>>>>> that you find in many APIs: Create, Read, Update, Delete. Draft -00 >>>>>>>> defined only the "Create" operation, draft -01 through -04 added the >>>>>>>> "Update" operation, switched using the "operation=" parameter. >>>>>>>> >>>>>>>> Following several suggestions to do so on the list, the -05 draft >>>>>>>> defines these operations in terms of a RESTful API for the client. >>>>>>>> Namely: >>>>>>>> >>>>>>>> - HTTP POST to registration endpoint => Create (register) a new client >>>>>>>> - HTTP PUT to update endpoint (with registration_access_token) => >>>>>>>> Update the registered information for this client >>>>>>>> - HTTP GET to update endpoint (with registration_access_token) => read >>>>>>>> the registered information for this client >>>>>>>> - HTTP DELETE to update endpoint (with registration_access_token) => >>>>>>>> Delete (unregister/de-provision) this client >>>>>>>> >>>>>>>> The two main issues at stake here are: the addition of the READ and >>>>>>>> DELETE methods, and the use of HTTP verbs following a RESTful design >>>>>>>> philosophy. >>>>>>>> >>>>>>>> Pro: >>>>>>>> - RESTful APIs (with HTTP verbs to differentiate functionality) are >>>>>>>> the norm today >>>>>>>> - Full lifecycle management is common and is going to be expected by >>>>>>>> many users of this protocol in the wild >>>>>>>> >>>>>>>> Cons: >>>>>>>> - Update semantics are still under debate (full replace? patch?) >>>>>>>> - Somewhat increased complexity on the server to support all operations >>>>>>>> - Client has to understand all HTTP verbs for full access (though >>>>>>>> plain registration is just POST) >>>>>>>> >>>>>>>> >>>>>>>> Alternatives include using an operational switch parameter (like the >>>>>>>> old drafts), defining separate endpoints for every action, or doing >>>>>>>> all operations on a single endpoint using verbs to switch. >>>>>>>> >>>>>>>> -- Justin >>>>>>>> >>>>>>>> [1] http://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-05 >>>>>>>> _______________________________________________ >>>>>>>> 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 >> >> >> -- >> Nat Sakimura (=nat) >> Chairman, OpenID Foundation >> http://nat.sakimura.org/ >> @_nat_en _______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth