I guess I'm in the minority but I prefer option #1.

I do agree with others that naming with respect to authenticated vs.
unauthenticated clients is likely problematic.

On Wed, Jan 12, 2011 at 2:06 PM, Torsten Lodderstedt <
tors...@lodderstedt.net> wrote:

> +1 for option 2 because it will facilitates security analysis of the
> protocol.
>
> From a security analysis perspective, I think we need two views:
> 1) A structural view, describing the OAuth architecture (entities,
> interfaces, communication paths) and
> 2) a flow-oriented view, which is built based on this interfaces, this is
> where the more complex threats show up. For example, the session fixation
> attack makes use of properties of the flow along both OAuth end-points.
>
> I assume a structural view will given as well?
>
> I agree with Marius regarding naming. I don't believe we can forsee today
> which clients will be authenticated in the future and which not. I could
> imagine deployments with support for web applications w/o authentication. It
> depends on the security policy and the value someone sees in client
> authentication (for the purpose of client authorization). On the other hand,
> by using dynamically created client_ids and secrets, even native apps could
> authenticate to the authorization server.
>
> regards,
> Torsten.
>
> Am 12.01.2011 16:15, schrieb Richer, Justin P.:
>
>  Marius makes a good point -- we probably want to avoid using language like
>> that for part descriptions. I don't think "code" and "token" quite get it,
>> but I don't have a better suggestion at the moment though...
>>
>>  -- Justin
>> ________________________________________
>> From: Marius Scurtescu [mscurte...@google.com]
>> Sent: Wednesday, January 12, 2011 10:10 AM
>> To: Richer, Justin P.
>> Cc: Eran Hammer-Lahav; OAuth WG
>> Subject: Re: [OAUTH-WG] Specification organization (Endpoints vs. Flows) -
>> Vote by 1/17
>>
>> +1 for option 2 as well
>>
>> Not convinced that naming the main flows Authenticated and
>> Unauthenticated makes sense, I think it will only increase confusion.
>> For example, native apps are not authenticated and they would be using
>> the "Authenticated" flow. I think we should stick with something along
>> the lines of "Code" and "Token".
>>
>> Marius
>>
>>
>>
>> On Wed, Jan 12, 2011 at 10:02 AM, Richer, Justin P.<jric...@mitre.org>
>>  wrote:
>>
>>> +1 for option 2
>>>
>>> I see, and have always seen, the target audience as server and client
>>> developers who are likely to be working against one flow and use case at a
>>> time. Also, I disagree that the primary role of the server developer is the
>>> security considerations. In theory, you may be right, but in practice, I
>>> think you'll find that many are going to be more concerned with just making
>>> it work at all with their API/framework/server.
>>>
>>>  -- Justin
>>> ________________________________________
>>> From: oauth-boun...@ietf.org [oauth-boun...@ietf.org] On Behalf Of Eran
>>> Hammer-Lahav [e...@hueniverse.com]
>>> Sent: Wednesday, January 12, 2011 2:19 AM
>>> To: OAuth WG
>>> Subject: [OAUTH-WG] Specification organization (Endpoints vs. Flows) -
>>> Vote     by 1/17
>>>
>>> (Vote at the end, please read)
>>>
>>> Background
>>>
>>> Between draft -00 and -05 the document used a flow-based organization.
>>> This was changed to an endpoint-based organization in draft -06. I have
>>> received requests to go back to the flow-based organization, and with -12,
>>> have been planning to do that. It is important to note that -12 is not meant
>>> to include any change in normative language and that -11 code would remain
>>> unchanged under -12. This is purely editorial.
>>>
>>> Part of that effort included reviewing the various flows in -05. The flow
>>> categories and definitions have always been a source of confusion. Some
>>> target specific client architecture (user-agent, web server, device), some
>>> are abstractions for future extensibility (assertion),  and some are useful
>>> features that can apply to a wide range of clients (client credentials,
>>> username and password). We also have the odd anti-profile of the native
>>> application flow, which in practice is a half-baked guide to navigating the
>>> entire range of flows.
>>>
>>> In practice we have a few ways to get an access token which can be
>>> categorized in multiple ways:
>>>
>>>
>>> 1.       How authorization is obtained?
>>>
>>> a.       Redirection-based – user-agent, web-server
>>>
>>> b.      Direct credentials – client credentials, username and password,
>>> assertion
>>>
>>> 2.       Is the client authenticated?
>>>
>>> a.       Yes – web-server, client credentials, username and password,
>>> assertion (based on type)
>>>
>>> b.      No – user-agent, assertion (based on type)
>>>
>>> In the past we had another (broken) organization of User delegation, User
>>> credentials, and Autonomous.
>>>
>>> Analysis
>>>
>>> After studying the document and breaking it apart (in my editor) I came
>>> to a few conclusions (which you are invited to disprove):
>>>
>>>
>>> 1.       Flow names must be consistent and based on the key
>>> differentiator of each flow. I believe the ability of the client to
>>> authenticate is the most significant aspect of each flow. I agree that ease
>>> of deployment and performance are important, but this is a security protocol
>>> and the security considerations should be the primary attribute used to
>>> select flows.
>>>
>>> 2.       The endpoint-based organization turned a few discrete flows into
>>> a single protocol. This protocol should be profiled based on some key client
>>> characteristics (such as redirection and ability of the client to
>>> authenticate). The main objective of the profiles would be to provide a
>>> security-focused description.
>>>
>>> 3.       The hybrid flow, combining the user-agent and web-server into a
>>> code-and-token solution is a distinct profile with its own unique security
>>> properties. While its implementation details are important for efficiency,
>>> the main differentiator is the client dual nature of being able to maintain
>>> secret credentials in some parts, but not in others. It produces two access
>>> tokens using a single authorization and client identifier.
>>>
>>> 4.       The document must not repeat the mistake of 1.0, focusing on a
>>> single client type at the expense of others. OAuth 1.0 focused on the
>>> web-server flow and treated everything else as second class citizens. -05
>>> treated native applications similarly, giving much more attentions to the
>>> web-server and user-agent clients, even when their underlying flows could
>>> have been written primarily for some native applications. The issue is
>>> mostly in naming the profiles after one typical client type instead of their
>>> key property.
>>>
>>> Options
>>>
>>> I came up with two options for finalizing the specification’s structure
>>> (please feel to suggest additional ideas):
>>>
>>>
>>> 1.       Keep the document’s endpoint-based organization (-11) and add a
>>> Client Profiles section describing specific client implementations based on
>>> the protocol. These profiles will not include wire information (parameters,
>>> values, etc.), but will include security-minded normative language (MUST
>>> register, SHOULD match redirection URI, etc.).
>>>
>>> 2.       Switch back to flow-based organization and include 5 flows in 2
>>> groups (note the new names), plus extensions:
>>>
>>> a.       Redirection-based
>>>
>>>                                                               i.
>>>  Authenticated client (web server)
>>>
>>>                                                             ii.
>>>  Unauthenticated client (user-agent)
>>>
>>>                                                            iii.      Mix
>>> authentication client (code-and-token)
>>>
>>> b.      Direct Credentials
>>>
>>>                                                               i.
>>>  Username and password
>>>
>>>                                                             ii.
>>>  Client credentials
>>>
>>> c.       Extensions
>>>
>>> Option 1
>>>
>>> -          Easier for server developers because it will include all the
>>> wire-protocol details for each endpoint in one place (single list of
>>> parameters, error codes, etc.).
>>>
>>> -          Shorter, no repeating the same examples, parameters, and error
>>> definitions for each flow.
>>>
>>> -          Reads like a reference.
>>>
>>> -          Client developers are instructed which parameter values to
>>> use.
>>>
>>> -          Server developer focus helps make security-based decisions
>>> (which are primarily the role of the server developer in OAuth).
>>>
>>> Option 2
>>>
>>> -          Easier for client developers focused on one flow at a time.
>>>
>>> -          Longer, duplicating examples, parameters, and error
>>> definitions. Currently about 20-30 more pages.
>>>
>>> -          Reads like a narrative / tutorial.
>>>
>>> -          Client developers are instructed which client flow to use.
>>>
>>> -          Client developer focus helps novice developers interoperate
>>> with protected resources.
>>>
>>> I don’t believe there is an obvious winner here because we each have a
>>> bias based on who we believe is the primary target audience (after all, this
>>> is a purely editorial decision – the protocol itself is mostly complete). In
>>> addition, I have done 80% of the work to get -12 to option 2 so it is no
>>> longer about investing the time in the transition.
>>>
>>> Vote
>>>
>>> Given the stable state of the specification, this might be the last big
>>> decision we get to make about the main specification. I’ve been planning to
>>> just come up with a new draft and ask for feedback but I rather take another
>>> week and ask this explicitly.
>>>
>>> Which option do you prefer (or suggest another)?
>>>
>>> Please reply with your preference by 1/17.
>>>
>>> EHL
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> 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