+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