Phil, The main difference is that it's a requirement on the *client* instead of the *provider* side of the equation, and clients aren't always even speaking HTTP. I agree that all client web servers SHOULD do it. A particular provider can even REQUIRE it for their registered clients, a step that is outside the scope of OAuth. But there are real, in-use patterns that don't require the client to make an HTTP request to an external service.
I don't see how Firesheep is relevant to this discussion -- if your browser is making a call to localhost to get the token, who outside of your machine is going to do it? I'm not talking about convenience for developers here (which I would argue should NOT be discounted, but that's another argument), I'm talking about cases where the browser isn't going outside of a trusted security boundary. There are also instances where there may not even be an HTTP transaction involved, let alone one that could support TLS. -- Justin On Mon, 2011-03-28 at 16:25 -0400, Phil Hunt wrote: > Justin, How is that so? Remember firesheep? I wouldn't want the > authorization code being exchanged without TLS in a cafe. Intercept is just > too easy. And as I mentioned earlier, client credentials are already very > weak in many cases. In contrast, two web servers are hard to sniff unless you > are able to gain access to their network communications path. > > As for testing, it seems more reasonable to put servers in temporary > non-compliance while testing rather then allow non-secure servers in > production because of the SHOULD loophole. > > Also, while it does seem convenient for the developer not to have to use TLS > for authz codes, note that the developer still has to have TLS enabled when > exchanging the code for an access token. So I'm not sure how relaxing TLS for > obtaining authorization actually simplifies the developer lifecycle since > they still have to set it up to test the other parts. In my view, it would > be ok for a developer to temporarily disable TLS everywhere during > development -- which places operation outside RFC compliance while developing > -- but forces compliance once they go into production. > > It seems like I had to give a pretty substantial justification and we backed > off because TLS is seen as inconvenient. I think we need more evidence that > there are safe cases that don't need TLS. > > Sorry for pushing hard on this one, but TLS is the backbone of OAuth security > at present. > > Phil > phil.h...@oracle.com > > > > > On 2011-03-28, at 12:52 PM, Eran Hammer-Lahav wrote: > > > No change then. But the security considerations section must reflect this. > > > > EHL > > > >> -----Original Message----- > >> From: Justin Richer [mailto:jric...@mitre.org] > >> Sent: Monday, March 28, 2011 10:05 AM > >> To: Eran Hammer-Lahav > >> Cc: Phil Hunt; OAuth WG > >> Subject: Re: [OAUTH-WG] WGLC on draft-ietf-oauth-v2-13.txt > >> > >> What about non-http return uri's, or client-localhost, such as > >> > >> someapp://app/?code=foo > >> > >> http://localhost:87345/?code=foo > >> > >> HTTPS makes sense when you're talking between two web servers, but it > >> seems to fall apart otherwise. I think SHOULD is appropriate here. > >> > >> -- Justin > >> > >> > >> On Fri, 2011-03-25 at 16:03 -0400, Eran Hammer-Lahav wrote: > >>> Unless someone has an objection, I'll make the change from SHOULD to > >> MUST. > >>> > >>> EHL > >>> > >>>> -----Original Message----- > >>>> From: Phil Hunt [mailto:phil.h...@oracle.com] > >>>> Sent: Friday, March 25, 2011 12:42 PM > >>>> To: Eran Hammer-Lahav > >>>> Cc: OAuth WG; Chuck & Mara Mortimore > >>>> Subject: Re: [OAUTH-WG] WGLC on draft-ietf-oauth-v2-13.txt > >>>> > >>>> Regarding the message: http://www.ietf.org/mail- > >>>> archive/web/oauth/current/msg05762.html (sorry I somehow lost the > >>>> message in my email). > >>>> > >>>> This issue is theft of the authorization code during the redirect. > >>>> Authenticating the client is an important feature and goes a long > >>>> way, but it is not sufficient since in many cases, the > >>>> client_id/client_secret will likely be hard coded and relatively > >>>> easy to deduce (e.g. mobile client apps). Of course a strong client > >>>> authentication won't have this issue. This makes many consumer > >>>> situations very susceptible to an attack where the authorization code is > >> intercepted. > >>>> > >>>> For more information look at the SAML Artifact issues in section 6.5 > >>>> (specifically stolen artifact, replay, etc) of this document: > >>>> http://docs.oasis- > >>>> open.org/security/saml/v2.0/saml-sec-consider-2.0-os.pdf > >>>> > >>>> There are a number of remediations suggested (small lifetime, single > >>>> use), but the foundational one is confidentiality of the exchange > >>>> (TLS). Hence the recommendation that the return of an authorization > >>>> code be kept secure with a MUST for TLS. > >>>> > >>>> Phil > >>>> phil.h...@oracle.com > >>>> > >>>> > >>>> > >>>> > >>>> On 2011-03-24, at 7:22 PM, Chuck Mortimore wrote: > >>>> > >>>>> > >>>>> On Mar 24, 2011, at 6:36 PM, "Eran Hammer-Lahav" > >>>> <e...@hueniverse.com> wrote: > >>>>> > >>>>>> > >>>>>>> -----Original Message----- > >>>>>>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On > >>>>>>> Behalf Of Chuck Mortimore > >>>>>>> Sent: Monday, March 14, 2011 6:10 PM > >>>>>> > >>>>>>> 1) I'd vote for dropping the following from 1.4.2. In turn I'd > >>>>>>> discuss > >> some > >>>> of > >>>>>>> the security considerations, such as difficulty of protecting a > >>>>>>> client_secret in almost all use-cases of this profile. > >>>>>>> > >>>>>>> "Implicit grants improve the responsiveness and efficiency of some > >>>>>>> clients (such as a client implemented as an in-browser application) > >>>>>>> since it reduces the number of round trips required to obtain an > >>>>>>> access token." > >>>>>> > >>>>>> Why drop it? What about it isn't accurate? > >>>>> > >>>>> It's accurate, but my opinion is it sends the wrong message. It's > >>>>> clearly > >> the > >>>> less secure of the response types. By positioning it as the most > >>>> performant people may find that attractive and make the wrong security > >> decision. > >>>>> > >>>>> > >>>>>> > >>>>>>> 2) Section 2.1, we should MUST TLS even for Authorization Code. > >>>>>> > >>>>>> Why? What's the attack vector? > >>>>> > >>>>> See Phils comment on past experience with artifact bindings. Spec > >>>>> should > >>>> default for security always on, and let deployments that don't want > >>>> to use HTTPs simply be non-conformant. > >>>>> > >>>>>> > >>>>>>> 3) Section 4.1.3 - not clear to me why redirect_uri is REQUIRED > >>>>>>> since in 4.1.1 it's "REQUIRED unless" > >>>>>> > >>>>>> The client should always confirm where the code was sent to. It > >>>>>> can omit > >>>> the redirection is one was provided but should tell the server where > >>>> it went to. This is more consistent on the verification side, but if > >>>> the original flow designers want to chime in (Dick, Brian, etc.?), I'm > >>>> open > >> to change this. > >>>>>> > >>>>>>> 4) Section 4.2.2 - when did we drop refresh_token? I assume this > >> goes > >>>>>>> back to disagreement on how best to handle native clients. I'd > >>>>>>> prefer it to simply reference 5.1 and leave what is issued up to > >>>>>>> the security profile of the particular deployment as to what is > >>>>>>> issued. > >>>>>> > >>>>>> -08 June 2010. > >>>>>> > >>>>>> This has been decided for a long time. I'm not eager to change it. > >>>>> > >>>>> Thanks - I can live with it. Unfortunately we still seem to be > >>>>> fragmenting on > >>>> the native client approach. Good topic for IIW I suspect > >>>>> > >>>>> -cmort > >>>>> > >>>>>> > >>>>>> 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