Hi all,

based on a conversion with one of our developers I would prefer the DynReg 
style.

regards,
Torsten.

Am 09.01.2013 um 21:05 schrieb "Richer, Justin P." <jric...@mitre.org>:

> It's been a few days now and I haven't seen any traffic from the group about 
> this at all, so I'll just come out and ask for opinions. The two proposals 
> are:
> 
> OIDC-style:
>  - inclusion of field replaces that field value on the server with the new 
> value
>  - omission of field deletes that field value on the server
> 
> DynReg style:
>  - inclusion of field replaces that field value on the server with the new 
> value
>  - omission of field tells the server to leave its current value alone
>  - inclusion of field with an empty string value deletes/clears that field 
> value from the server
> 
> 
> Should the OAuth2 Dyn Reg spec adopt the OIDC semantics, or keep its current 
> semantics? Why? Is there another option that's even better?
> 
>  -- Justin
> 
> 
> On Jan 5, 2013, at 2:36 PM, "Richer, Justin P." <jric...@mitre.org> wrote:
> 
>> Mike, John, thanks for the feedback. I hope and anticipate that this 
>> conversation will help improve both drafts.
>> 
>> I disagree with the assessment here that it makes things more complicated in 
>> the simple case. How? The way that DynReg is currently written, if the 
>> client simply POSTs back the entire set of information that it has about 
>> itself every time, which I anticipate the most simple clients will do, then 
>> it still behaves as expected. Doesn't it? There's nothing in the draft that 
>> REQUIRES an incomplete POST, it just ALLOWS it to happen and defines what to 
>> do when it does. Furthermore, it makes it *safer* if the client POSTs 
>> something that is incomplete from the *server's* perspective, since the 
>> semantics are now, explicitly, to leave alone any values that are left out. 
>> In other words, it's my view that this actually makes things far simpler for 
>> clients wanting to do simple things, and makes more complex things possible. 
>> This is especially in light of the requirement of the server to echo out the 
>> actual full state of the client during the transaction. Having implemented 
>> this myself, it's really not very complex from either side. The server is 
>> marginally more complex, but it leaves fewer cases undefined or "up to the 
>> server to decide". 
>> 
>> Part of the motivation I had for changing this here was to cope with the 
>> cases where the server asserts things about the client that the client 
>> doesn't register about itself in the first place, and I wanted something 
>> that was simple and programmatic to implement from both sides. In other 
>> words, it's assuming that the *server* has the most complete picture of the 
>> client's state, not the *client*, which is the assumption made in OIDC and 
>> by Mike and John's comments below. Let's take this example as a concrete 
>> case (formatting and parameter names are notional and might be off, I'm 
>> typing from memory):
>> 
>> Client registers with params:
>> 
>>   client_name=Foo
>>   token_endpoint_auth_type=client_secret_basic
>> 
>> Server sends back to the client:
>> {
>>   client_name: Foo
>>   client_secret: super-secret-secret
>>   token_endpoint_auth_type: client_secret_basic
>>   scope: read open dennis
>>   registration_access_token: TOKEN
>> }
>> 
>> So the client never asked for scope restriction, but the server decided 
>> (however it wanted to, probably by a defaulting mechanism) to give the 
>> client three scopes. In the current OIDC spec, the client would never even 
>> know this happened because this information isn't ever echoed back (though 
>> this at least is changing). Even if it did know about this parameter, it 
>> didn't ask for anything in particular in that field, so it now has to keep 
>> around something that it doesn't really know what to do with. So with that 
>> in mind, the client decides to change its name and sends back all the 
>> parameters that it knows about:
>> 
>>   client_name=Bar
>>   token_endpoint_auth_type=client_secret_basic
>>   access_token=TOKEN
>> 
>> Now in the OIDC definition of the semantics, this tells the server to clear 
>> out the existing "scope" value, because it's not included in the request. 
>> But the server really shouldn't do that, should it? You could argue that 
>> because it's a server-defaulted parameter and that the server should know to 
>> treat it special. But then the server would have to track which fields are 
>> still in a "defaulted" state, or keep some kind of programming logic that 
>> says "a blank on an update actually means something else". Which fields does 
>> this apply to? Neither of those are "simple". 
>> 
>> In the current definition of the DynReg spec, the client not only knows the 
>> fields and can do something about them if it wants to, it can also *safely* 
>> ignore them in responses. If the client sends back the same set above, 
>> dealing only in the parameters that it knows and cares about, the server now 
>> has an unambiguous message when the client omits the "scope" field. 
>> 
>> With this behavior, though, we do need the equivalent of "set to null" in 
>> order to explicitly empty out the value of an existing field. I took the 
>> approach of using a blank value -- expressed in HTTP forms as an empty 
>> string. I'm open to other suggestions if there's a better/cleaner approach 
>> to this part of it, but this was the best I could come up with.
>> 
>> Finally, it's not a bandwidth issue at all, so let's just ignore that 
>> particular red herring. :)
>> 
>>  -- Justin
>> 
>> 
>> 
>> From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] on behalf of John 
>> Bradley [ve7...@ve7jtb.com]
>> Sent: Friday, January 04, 2013 7:13 PM
>> To: Mike Jones
>> Cc: oauth@ietf.org
>> Subject: Re: [OAUTH-WG] Difference between client_update semantics in 
>> draft-ietf-oauth-dyn-reg and OpenID Connect Registration
>> 
>> We did discuss this issue in the connect WG.
>> 
>> The decision was made to always completely replace.   That prevents unknown 
>> states if a update fails.   
>> 
>> I think the always replace everything rule is simpler, though admittedly 
>> more bandwidth is required.  However bandwidth is not a significant factor 
>> for this as far as I know.
>> 
>> John B.
>> 
>> On 2013-01-04, at 8:55 PM, Mike Jones <michael.jo...@microsoft.com> wrote:
>> 
>>> The client_update operation in 
>>> http://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-03 does something 
>>> different than the operation upon which it was based 
>>> fromhttp://openid.net/specs/openid-connect-registration-1_0-13.html.  
>>> Specifically, while the OpenID Connect operation replaces all field values, 
>>> the OAuth operation allows only selective fields to be replaced, 
>>> designating fields to remain unchanged by specifying their value as the 
>>> empty string (“”).
>>>  
>>> I'm personally not happy with the change to the semantics of client field 
>>> inclusion.  Updating some but not all fields is a substantially more 
>>> complicated operation than replacing all fields.  Is there some use case 
>>> that motivates this?  I don't think it's a substantial burden on the 
>>> registering party to remember all the field values from the initial 
>>> registration and then selectively use them for update operations, when 
>>> needed.  Then the work goes to the (I suspect rare) parties that need 
>>> partial update - not to every server.  It complicates the simple case, 
>>> rather than pushing the complexity to the rare case, violating the design 
>>> principle “make simple things simple and make more complicated things 
>>> possible”.
>>>  
>>> Is anyone opposed to updating the OAuth Registration semantics to match the 
>>> Connect registration semantics?  Is so, why?
>>>  
>>>                                                                 Thanks,
>>>                                                                 -- Mike
>>>  
>>> _______________________________________________
>>> 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

Reply via email to