On 2013-02-14, at 11:20 AM, Justin Richer <jric...@mitre.org> wrote:

> 
> 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.

Yes that covers it.
> 
>> 
>> 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.

That is what I would expect I don't know if it is a good idea, and adds to the 
size of the spec.   Having a not supported response is better but, I don't have 
a good feeling about it yet.


> 
> -- 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

Reply via email to