I am proposing the entire removal of: "A client application consisting of multiple components, each with its own client type (e.g. a distributed client with both a confidential server-based component and a public browser-based component), MUST register each component separately as a different client to ensure proper handling by the authorization server."
In particular the example of a server-side component versus browser-based components is particularly unhelpful since it violates the entire principle of why two response_type 'code' and 'token' were defined, and how OAuth2 is typically implemented. That's when I claim this normative language is redefining the protocol. On Thu, Mar 15, 2012 at 12:13, Eran Hammer <e...@hueniverse.com> wrote: > Which text in -25 are you proposing we remove exactly? I can't judge the > text below without the full context of where and how it is proposed in the > current document. > > Also, you are ignoring my detailed analysis of the current facts. We have > two client types and the issue here is what to do with other, undefined > types. > > EH > > > On 3/15/12 11:54 AM, "Breno de Medeiros" <br...@google.com> wrote: > >>My proposal is to remove any reference to registration (which is a red >>herring and has raised all the problems we refer here) and refer to >>client authentication instead. >> >>Proposal: >> >>"Clients may be implemented as a distributed set of components that >>run in different security contexts. For instance, a single client may >>include a webserver component and a script component in a browser. It >>is not appropriate for the different components to utilize the same >>client authentication mechanisms, since client authentication >>credentials that are held securely in one context cannot be deployed >>securely in another. >> >>Servers MUST mitigate security threats from client components that >>cannot hold client credentials as securely by distinguishing them from >>client components that can. Example of suitable measures are: >> >>- Requiring separate registration of components such as web server and >>a mobile application. >>- Restricting the time validity of tokens issued to clients that hold >>no authentication credentials, such as browser script-based >>components." >> >>Please don't truncate explanations in the interest of space if the >>resulting text is confusing and possibly misleading. Better to say >>nothing instead. >> >>On Thu, Mar 15, 2012 at 11:32, Eran Hammer <e...@hueniverse.com> wrote: >>> Here are the facts: >>> >>> The authorization server must know the client type in order to enforce >>>many >>> of the requirements in the specification. >>> The requirement to provide a client type is not decorated with a MUST or >>> SHALL but that is implied. >>> The specification only defines two client types: public and >>>confidential. >>> There is no client type defined for a hybrid client. >>> The specification needs to address the very common use case of clients >>>with >>> both public and private components. >>> >>> I don't want to discuss in the specification how client identifiers are >>> provisioned, nor do I want to discuss the potential binding of response >>> types to client types. But we do need to provide some guidance to >>>clients >>> and authorization servers what to do with clients that do not fit the >>> current type definitions. >>> >>> It is far too late for us to define a new client type, along with all >>>the >>> security considerations that such type imply. Our entire security >>> consideration section and protocol design are based on have a well >>>defined >>> client type. >>> >>> Requiring separate registration for each component is the most >>> straight-forward solution. Allowing the authorization server to offer >>> alternatives is the backdoor to enable extensibility. >>> >>> Within these constraints, I am open to other prose or creative >>>solutions. >>> But the add-ons proposed are all ugly hacks. They clarify specific >>>questions >>> raised which I do not believe represent the core confusion here which is >>> what is the right way to handle hybrid clients. >>> >>> The best way to move forward is to take a minute and ask the group to >>>share >>> how they handle such cases or how they think they should be handled. >>>Based >>> on that we can come up with a clear solution. >>> >>> EH >>> >>> From: Breno de Medeiros <br...@google.com> >>> Date: Thu, 15 Mar 2012 09:56:13 -0700 >>> To: Eran Hammer-Lahav <e...@hueniverse.com> >>> Cc: Nat Sakimura <sakim...@gmail.com>, OAuth WG <oauth@ietf.org> >>> >>> Subject: Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23 >>> >>> >>> >>> On Thu, Mar 15, 2012 at 07:45, Eran Hammer <e...@hueniverse.com> wrote: >>>> >>>> This add-on is unnecessary. It already says the authorization server >>>>can >>>> handle it any way it wants. The fact that other registration options >>>>are >>>> possible clearly covers the client identifier reuse case. As for the >>>> response type, that¹s not an issue but more of an optimization for an >>>>edge >>>> case raised. >>> >>> >>> It still feels like a horse by committee to me. "unless the >>> authorization server provides other registration options to specify such >>> complex clients." seems a very round about way to say that the core spec >>> already provides for such arrangements in the most common scenario. It >>>is a >>> bit of a stretch to say that the server provides "other registration >>> options" by simply following strategy already laid out in the spec. >>> >>> In particular, I feel that this wording will be harmful to register >>>extended >>> behavior, e.g., alternative response_types by leading to fruitless >>> conversations about spec compliance in the absence of real security >>>risks. >>> >>> I do not believe the current text is the best representation of the >>>spirit >>> in which the spec was written (in particular the effort to specify two >>>flows >>> in detail to deal with precisely this issue) and possibly lead to >>>harmful >>> future interpretation. >>> >>>> >>>> >>>> >>>> EH >>>> >>>> >>>> >>>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf >>>>Of >>>> Nat Sakimura >>>> Sent: Thursday, March 15, 2012 2:04 AM >>>> To: Breno de Medeiros; OAuth WG >>>> >>>> >>>> Subject: Re: [OAUTH-WG] Fw: Breaking change in OAuth 2.0 rev. 23 >>>> >>>> >>>> >>>> >>>> >>>> So, Eran's first proposal: >>>> >>>> >>>> >>>> A client application consisting of multiple components, each with its >>>> own client type (e.g. a distributed client with both a confidential >>>> server-based component and a public browser-based component), MUST >>>> register each component separately as a different client to ensure >>>> >>>> proper handling by the authorization server, unless the authorization >>>> server provides other registration options to specify such complex >>>> clients. >>>> >>>> >>>> >>>> kind of meets my concern. There seems to be another issue around the >>>> usefulness of return_type in such case raised by Breno, and if I >>>>understand >>>> it correctly, Eran's answer was that these separate components may >>>>have the >>>> same client_id so that return_type is a valid parameter to be sent at >>>>the >>>> request. >>>> >>>> >>>> >>>> So, to clarify these, perhaps changing the above text slightly to the >>>> following solves the problem? >>>> >>>> >>>> >>>> A client application consisting of multiple components, each with its >>>> own client type (e.g. a distributed client with both a confidential >>>> server-based component and a public browser-based component), MUST >>>> register each component separately as a different client to ensure >>>> >>>> proper handling by the authorization server, unless the authorization >>>> server provides other registration options to specify such complex >>>> clients. >>>> >>>> Each component MAY have the same client_id, in which case the server >>>> >>>> judges the client type and the associated security context based on >>>> the response_type parameter in the request. >>>> >>>> >>>> >>>> Would it solve your problem, Breno? >>>> >>>> >>>> >>>> Best, >>>> >>>> >>>> >>>> =nat >>>> >>>> >>> >>> >>> >>> >>> -- >>> --Breno >> >> >> >>-- >>--Breno > -- --Breno _______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth