Hi Mike, On 18/12/2011, at 8:00 PM, Mike Jones wrote:
> Thanks for your comments, Mark. Here are my thoughts on the issues that you > see as being outstanding. I'd also welcome additional input from the working > group on these topics: > > ON THE URI QUERY PARAMETER METHOD: > > It seems like your objection to this is based on it using a standard query > parameter name. It therefore seems like there are four possible resolutions > to this issue: > > 1. Delete the query parameter method, as you suggested in your initial > comments. Given that I know this method is in widespread use in certain > contexts, I doubt that there would be working group consensus for this > resolution. > > 2. Use a method for discovering the query parameter name. It's my > understanding that discovery work is presently out of scope for the OAuth > working group as currently chartered. The chairs and area directors could > obviously change this, but it's my sense that developing a discovery spec for > this purpose would delay the approval of this spec by a significant period of > time. I also question whether working group consensus could be developed for > this resolution. > > 3. Change the normative requirement for using the name access_token to a > recommendation. Specifically, we could change the text "When sending the > access token in the HTTP request URI, the client adds the access token to the > request URI query component ... using the 'access_token' parameter" to "When > sending the access token in the HTTP request URI, the client adds the access > token to the request URI query component ... using a query parameter. It is > RECOMMENDED that the query parameter name 'access_token' be used". (If we > change this to RECOMMENDED, I suspect we'd also do the same for the name of > the form-encoded body parameter.) This would seem to resolve your core > objection, while still providing clear guidance to aid interoperability. > What would people think of this? > > 4. Leave the specification as-is. > > I'd like to hear working group opinions on which of these potential > resolutions members support. One other possibility would be to split the query term out in a separate draft and publish as Informational, to emphasise that it's not the preferred mechanism (with suitable language in-document). > ON THE WWW-AUTHENTICATE RESPONSE HEADER FIELD: > > See the follow-up discussion with Julian. > > ON THE REALM AND SCOPE DEFINITIONS: > > You wrote "That's not a great story for interop. How are people actually > supposed to use them? Can you at least give an example?" I agree with you > that that's not a great story for interop but it's also the current reality > of OAuth usage. Indeed, I know that different deployments use them in > different ways for different things. There's a bunch of information that > currently needs to be exchanged in a manner not covered by the specifications > to use OAuth between parties. Among other things, this includes the endpoint > addresses, the ways that realm and scope are used, and (when not opaque) the > format of the access token. So, why are these things exchanged in a field called "scope"? It seems to me that if they're really that broad, then either they should be transferred using a broad name (e.g., "cookie", "opaque"), or (preferably, IMO) they should be transferred in extensions. > (Profiles of OAuth such as OpenID Connect address this by providing specific > guidance, but that guidance, I believe, is too specific to add to the OAuth > specs themselves.) > > Given that both scope and realm are used in practice in different ways by > different deployments, I don't see a clear resolution to this issue other > than to leave the spec as-is. I'd welcome specific alternative wording > proposals, however. > > ON SPECIFYING ONLY A QUOTED-STRING SERIALIZATION: > > I understand and agree with your desire to promote code reuse. You cite > HTTPbis P7 2.3.1 to support adding a requirement for supporting token > serialization in addition to quoted-string serialization for all parameters. > I believe that the relevant text there is: > When the auth-param syntax is used, all parameters ought > to support both token and quoted-string syntax, and syntactical > constraints ought to be defined on the field value after parsing > (i.e., quoted-string processing). This is necessary so that > recipients can use a generic parser that applies to all > authentication schemes. > > Note: the fact that the value syntax for the "realm" parameter is > restricted to quoted-string was a bad design choice not to be > repeated for new parameters. > > First, it's my understanding that this text was added between -16 and -17 > explicitly to try to force a change the definitions used in the Bearer spec. > While this seems heavy-handed, be that as it may. Assuming the > specification remains as-is, I think there are two code reusability cases to > consider: > > Recipient Case: Recipients are able to use code capable of parsing both > token and quoted-string syntax to parse fields that may only contain quoted > string syntax. Thus, the rationale for this requirement given in P7 is > actually incorrect; recipients *can* use a generic parser that applies to all > authentication schemes. (Perhaps P7 should be corrected?) There is no > code-reuse problem for recipients. > > Producer Case: I will grant that it is possible for generic parameter > producer code to exist that does not give the caller control over how the > parameter is serialized. If such code is used, it would be possible for a > parameter value such as "xyz" to be erroneously serialized as xyz, thus > creating an interoperability problem. Note however, that serialization of > the HTTP-defined realm parameter MUST occur using quoted-string > serialization. Thus, in practice, it would seem that generic frameworks > still need to enable callers to control the serialization formats of specific > parameters. Hence, I doubt that this problem-in-theory is actually a > problem-in-practice. I'd be interested in data points from the working group > about whether HTTP frameworks they use would have his problem in practice or > not. > > It seems that there are two possible resolutions to this issue: > > 1. Change the spec to allow both quoted-string and token serialization for > these parameters. > > 2. Leave the specification as-is. > > I'd like to hear working group opinions on which of these potential > resolutions members support. > > ON SUITABILITY AS A PROXY AUTHENTICATION SCHEME: > > Could someone who is a member of ietf-http...@w3.org volunteer to ask that > list whether they would like to make any review comments on > http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer-15 as to its > suitability for use as a proxy authentication scheme (and to cc: me when you > ask the question)? I'm not a member of this list. I've done that. Cheers, > > Thanks all, > -- Mike > > -----Original Message----- > From: Mark Nottingham [mailto:m...@mnot.net] > Sent: Wednesday, December 14, 2011 6:37 PM > To: Mike Jones > Cc: Stephen Farrell; Hannes Tschofenig; Peter Saint-Andre; Barry Leiba; OAuth > WG > Subject: Re: OK to post OAuth Bearer draft 15? > > Hi Mike - > > It's not my function to object (or not) to the publication of the draft; I > merely provided the APPS review, which will be considered by the responsible > AD (like all other Last Call comments), and potentially the IESG. > > If you're asking whether my concerns have been addressed, see some specifics > below. > > Regards, > > > On 15/12/2011, at 1:13 PM, Mike Jones wrote: > >> Mark, Stephen, Hannes, and Barry, >> >> Any objections to posting the updated Bearer draft incorporating the results >> of the APPS Area review and the TLS requirements? >> >> -- Mike >> >> From: Mike Jones >> Sent: Monday, December 12, 2011 8:51 AM >> To: Mark Nottingham; 'Stephen Farrell'; oauth@ietf.org >> Subject: RE: [OAUTH-WG] FW: [apps-discuss] APPS Area review of >> draft-ietf-oauth-v2-bearer-14 >> >> Thanks for the detailed review, Mark. >> >> Preliminary draft 15 of the OAuth Bearer specification is attached. It >> resolves the form encoding issues raised by Julian Reschke in the manner >> discussed at the working group meeting in Taipei, incorporates the consensus >> text on TLS version requirements, and contains several improvements >> suggested by Mark Nottingham during APPS area review. >> >> Mark, comments on all your proposed changes follow below: >> >>> * Section 2.3 URI Query Parameter >>> >>> This section effectively reserves a URI query parameter for the draft's >>> use. This should not be done lightly, since this would be a precedent for >>> the IETF encroaching upon a server's URIs (done previously in RFC5785, but >>> in a much more limited fashion, as a tactic to prevent further, >>> uncontrolled encroachment). >>> >>> Given that the draft already discourages the use of this mechanism, I'd >>> recommend dropping it altogether. If the Working Group wishes it to remain, >>> this issues should be vetted both through the APPS area and the W3C liaison. >>> >>> (The same criticism could be leveled at Section 2.2 Form-Encoded Body >>> Parameter, but that at least isn't surfaced in an identifier) >>> >> There are some contexts, especially limited browsers and/or development >> environments > > What does "developmental environments" mean here? > >> , where query parameters are usable but the other methods are not. Thus, >> the query parameter method must be retained. Also, Justin Richter's >> comments describing the value to him of the query parameter method are >> pertinent: "A URL with all parameters including authorization is a powerful >> artifact which can be passed around between systems as a unit". >> >> As to using a standard parameter name, this is essential for >> interoperability. > > I find it hard to believe that you could not find or design a mechanism to > discover a URI. > > >> It is not "reserved" in any contexts other than when the Bearer spec is >> employed, which is a voluntary act by both parties. Thus, this poses no >> undue burdens or namespace restrictions on implementations in practice. >> >> Finally, you'll find that OAuth 1.0 [RFC 5849] similarly defined, not one, >> but two standard query parameter values: oauth_token and oauth_verifier. >> As this didn't cause any problems in practice then, I'm sure that defining >> an access_token parameter within the Bearer spec for interoperability >> purposes won't cause a problem either. > > The fact that a non-standards-track document did something that's potentially > harmful doesn't make it OK. Saying that problems won't occur based upon such > short-term implementation experience with this type of issue is ludicrous; > the nature of the issue is long-term encroachment and setting precedent. > > >>> * Section 3 The WWW-Authenticate Response Header Field >>> >>> The draft references the quoted-string ABNF from HTTP, but changes its >>> processing in a later paragraph: >>> >>> """In all these cases, no character quoting will occur, as senders are >>> prohibited from using the %5C ('\') character.""" >>> >>> This is at best surprising (as many readers will reasonably surmise that >>> using the quoted-string ABNF implies that the same code can be used). >>> Please either use quoted-string as defined (i.e., with escaping). >>> >> This parameter definition was a result of significant working group >> discussion and reflects a solid consensus position. Using the quoted string >> BNF makes it clear, per Julian Reschke's suggestions, that generic parameter >> parsing code can be safely used. Whereas prohibiting the use of backslash >> quoting by senders also makes it clear that custom implementations can >> directly utilize the parameter values as transmitted without performing any >> quote processing. >> >> In short, the spec doesn't change the processing of quoted strings. It >> simply restricts the set of legal input characters within the quoted strings. > > See follow-up discussion with Julian. > > >>> * Section 3 The WWW-Authenticate Response Header Field >>> >>> The difference between a realm and a scope is not explained. Are the >>> functionally equivalent, just a single value vs. a list? >>> >> Realm is as defined by HTTPbis. It says that "The realm value is a string, >> generally assigned by the origin server, which can have additional semantics >> specific to the authentication scheme." > > Yes... > >> The Bearer specification intentionally adds no extra semantics to the realm >> definition. Whereas the scope parameter is defined as an order-independent >> space-separated list of scope values. The contextual meaning of both the >> realm and scope parameters is deployment-dependent. > > That's not a great story for interop. How are people actually supposed to use > them? Can you at least give an example? > > >>> Do you really intend to disallow *all* extension parameters on the >>> challenge? >> >> Yes. There was an explicit working group consensus decision to do so. > > It would be good to note this. > > >>> Also, the scope, error, error_description and error_uri parameters all >>> specify only a quoted-string serialisation. HTTPbis strongly suggests that >>> new schemes allow both forms, because implementation experience has shown >>> that implementations will likely support both, no matter how defined; this >>> improves interoperability (see p7 2.3.1). >> >> Once again, the current text reflects a consensus decision of the working >> group. It was viewed that requiring support for multiple ways of doing the >> same thing unnecessarily complicated implementations without any >> compensating benefit; better to support one syntax for each semantic >> operation and require all implementations to use it. > > And I'm sure you're aware that the goal of this text in HTTPbis is to > encourage reuse of code, rather than having multiple implementations of > slightly different things. This is doubly true when you're not actually > defining the syntax, but instead reusing syntax from elsewhere (HTTP), which > already has parsers and generators implemented. > > >>> * General >>> >>> The draft currently doesn't mention whether Bearer is suitable for use as a >>> proxy authentication scheme. I suspect it *may*; it would be worth >>> discussing this with some proxy implementers to gauge their interest (e.g., >>> Squid). >>> >> Who would you recommend review the draft from this perspective? > > The easiest way would be to ask on the ietf-http...@w3.org mailing list; > there are several intermediary implementers active there. > > Regards, > > -- > Mark Nottingham http://www.mnot.net/ > > > > > -- Mark Nottingham http://www.mnot.net/ _______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth