Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

From: Justin Richer <[email-masked]>
Date: Tue, 8 Mar 2011 10:11:56 -0500

Very strongly agree, repeat my suggestion to name the parameter
"oauth2_token".

 -- Justin

On Fri, 2011-02-25 at 14:49 -0500, Brian Eaton wrote:
> My two cents:
> 
> We've already taken three user visible outages because the OAuth2 spec
> reused the "oauth_token" parameter in a way that was not compatible
> with the OAuth1 spec.
> 
> Luckily they were all caught before they caused serious damage.
> 
> Generic parameter names are not useful.  They lead to confused
> developers and confused code.  If code needs to treat the values
> differently, the names should be different as well.
> 
> Cheers,
> Brian
> 
> On Fri, Feb 25, 2011 at 11:38 AM, Phil Hunt <[email-masked]> wrote:
> > There was some discussion on the type for the authorization header being
> > OAUTH / MAC / BEARER etc. Did we have a resolution?
> > As for section 2.2 and 2.3, should we not have a more neutral solution as
> > well and use "authorization_token" instead of oauth_token. The idea is that
> > the parameter corresponds to the authorization header and NOT the value of
> > it. The value of such a parameter an be an encoded value that corresponds to
> > the authorization header.  For example:
> > GET /resource?authorization_token=BEARER+vF9dft4qmT HTTP/1.1 Host:
> > server.example.com
> > instead of
> > GET /resource?oauth_token=vF9dft4qmT HTTP/1.1 Host: server.example.com
> > The concern is that if for some reason you switch to "MAC" tokens, then you
> > have to change parameter names. Why not keep them consistent?
> > Apologies if this was already resolved.
> > Phil
> > [email-masked]
> >
> >
> >
> >
> > _______________________________________________
> > OAuth mailing list
> > [email-masked]
> > https://www.ietf.org/mailman/listinfo/oauth
> >
> >
> _______________________________________________
> OAuth mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/oauth

---

From: "William J. Mills" <[email-masked]>
Date: Tue, 8 Mar 2011 09:05:02 -0800 (PST)

That's because I'm focused on my use case, which is using the Authorization header.  In query args/form parameters we definitely need better differentiation.

________________________________
From: Justin Richer <[email-masked]>
To: William J. Mills <[email-masked]>
Cc: Brian Eaton <[email-masked]>; OAuth WG <[email-masked]>
Sent: Tuesday, March 8, 2011 8:41 AM
Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

I don't understand this comment. If you're using query/form parameters,
there are no schemes involved in the process.

-- Justin

On Tue, 2011-03-08 at 11:27 -0500, William J. Mills wrote:
> A major difference is now there is a scheme name that is
> differentiating.  You no longer have to parse the entire variable set
> to figure out what is going on.  Now the scheme name determines
> things.  Now that we have schemes I don't see re-using parameter names
> as a problem.
> 
> 
> 
> 
> ______________________________________________________________________
> From: Justin Richer <[email-masked]>
> To: Brian Eaton <[email-masked]>
> Cc: OAuth WG <[email-masked]>
> Sent: Tuesday, March 8, 2011 7:11 AM
> Subject: Re: [OAUTH-WG] OAuth Bearer Token draft
>

---

From: "William J. Mills" <[email-masked]>
Date: Thu, 10 Mar 2011 11:45:12 -0800 (PST)

Yes, a token is a less priveledged thing that uid/password.  Some of the big problems are browser cache (being able to get back to a signed in state after a sign out), server side logging of credentials because they log the URL, and proxies caching credentials in URLs.  POST variables are significantly better but still not great, and suffer from being cached in the browser history.

I'm not saying we should break existing implementations, but I agree we should not sanction them by putting them as part of the spec.   SASL TEXT/PLAIN authentication exists, people still use it without SSL; a very bad idea, but conforms to most of the spec (PLAIN now says you must use SSL).

________________________________
From: "Richer, Justin P." <[email-masked]>
To: Phil Hunt <[email-masked]>
Cc: OAuth WG <[email-masked]>
Sent: Thursday, March 10, 2011 11:18 AM
Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

Nobody said UID and password -- we're talking about tokens here. The cost of a leaked temporary token (even a straight bearer token) is much, much lower.

-- Justin
________________________________________
From: Phil Hunt [[email-masked]]
Sent: Thursday, March 10, 2011 2:01 PM
To: Richer, Justin P.
Cc: Eran Hammer-Lahav; OAuth WG
Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

Well, for one if you promote this, it becomes general technique. Now you have uid/passwords in browser history etc potentially accessible to javascript and could be leaked/hacked in any number of ways.

Also, I would say that credentials are a higher risk item then say a specific API call. Why? because credentials are used universally and so the exposure is much higher. That said, it is still possible that application data can just as costly to expose. Another reason to use secure forms over URLs.

Phil
[email-masked]

On 2011-03-10, at 10:37 AM, Richer, Justin P. wrote:

> 1) Yes. And don't discount ease-of-use for developers. If I'm already sending my parameters over the query, this becomes another parameter and is really easy to manage.
> 2) Yes, for parallelism to #1, when using a POST.
> 3) The idea of a parameter registry for this part is absurd, and the parameter should be kept simple. I do think that it needs to be named something other than "oauth_token".
>
> I'm happy with discouraging the use of 1 and 2 with discussion in the security considerations, but I think that if we don't specify this behavior and discuss it, then people are going to do it anyway and we run more risk of things going wrong. Simply ignoring the issue in the spec (by remaining silent about it) will not make it go away.
>
> Since all formats are optional, couldn't an AS/PR setup that wants to just lock things down and require auth headers for their particular setup? If in two years nobody deploys it anymore, then let's deprecate it from the spec and never speak of this again.
>
> -- Justin
>
> ________________________________________
> From: Eran Hammer-Lahav [[email-masked]]
> Sent: Thursday, March 10, 2011 1:29 PM
> To: Phil Hunt; Richer, Justin P.
> Cc: OAuth WG
> Subject: RE: [OAUTH-WG] OAuth Bearer Token draft
>
> There are a few issues to consider.
>
> 1. Should the spec support sending bearer token in a query parameter?
>
> - The argument that there are many use cases for this is unproven. JSON-P is one valid example (though JSON-P usage is in decline with new methods for cross-domain calls), but so far the only one given.
> - I think at this point we have to include this functionality and the only potential open issue is if we want to rename it to something other than oauth_token.
> - Including this functionality doesn't mean we should encourage it, and the way to deal with that is to mark this as 'deprecated'.
>
> 2. Should the spec support sending authentication parameters in the body?
>
> - I don't have any use cases where this is required. If the client can perform a POST with a body, it should be able to set the header. Where is this an issue?
>
> 3. Should the oauth_token parameter be defined as part of an extensible framework for adding parameters to protected resources endpoint?
>
> - This was the original issue raised and so far no one has provided any use cases for this. We just need to make sure we pick the right parameter name for oauth_token and clearly state that it is not the right way to send tokens. There should not be any more such parameters in the protected resource namespace.
>
> EHL
>
>
>> -----Original Message-----
>> From: [email-masked] [mailto:[email-masked]] On Behalf
>> Of Phil Hunt
>> Sent: Thursday, March 10, 2011 10:15 AM
>> To: Richer, Justin P.
>> Cc: OAuth WG
>> -1.  It is a BAD security practice to pass credentials in URLs. Avoid it.
>>
>> Phil
>> [email-masked]
>>
>>
>>
>>
>> On 2011-03-10, at 10:07 AM, Richer, Justin P. wrote:
>>
>>> Ah, here we run into the classic argument of usability vs. security, in which
>> usability will win every single time in practice. If we don't define at least a
>> reasonable way to do this within the scope of OAuth, that's not going to stop
>> people from doing it. It's just going to make people do it in a million different
>> ways, each with their own unique problems that nobody's thought of. At
>> least this way, we can enable it and have a real discussion about the security
>> considerations. There are valid and valuable places where putting credentials
>> in the URL is a reasonable security tradeoff. Not everything functions over
>> the public internet as well, and the security considerations are different in
>> these other environments.
>>>
>>> In short: yes, it's necessary and good to do this.
>>>
>>> -- Justin
>>> ________________________________________
>>> From: William J. Mills [[email-masked]]
>>> Sent: Thursday, March 10, 2011 12:59 PM
>>> To: Richer, Justin P.; Lukas Rosenstock
>>> Cc: Brian Eaton; OAuth WG
>>> Yeah, but there are serious security problems with credentials in the URL, is
>> it really worth it in light of those problems?
>>>
>>> From: "Richer, Justin P." <[email-masked]>
>>> To: Lukas Rosenstock <[email-masked]>; William J. Mills
>> <[email-masked]>
>>> Sent: Thursday, March 10, 2011 9:49 AM
>>> Subject: RE: [OAUTH-WG] OAuth Bearer Token draft
>>>
>>> Yes, there are many development setups where all you can reasonably
>> access is the URL to get. It's also much simpler to make use of the well-
>> supported syntax helpers for query parameters instead of relying on new,
>> custom formatting for newly-defined headers. The bearer token makes this
>> simple by just having the value of the token, but other schemes have their
>> own name/value pair formats and encodings that will inevitably cause
>> hiccups.
>>>
>>> -- Justin
>>> ________________________________________
>>> From: Lukas Rosenstock
>> [[email-masked]<mailto:[email-masked]>]
>>> Sent: Thursday, March 10, 2011 11:49 AM
>>> To: William J. Mills
>>> Cc: Brian Eaton; Richer, Justin P.; OAuth WG
>>> JSON-P (callback) works with <script> tags where no parameters can be
>> set; this is used a lot in web applications that want to consume 3rd party APIs
>> directly on the client side. So, yes, an alternative for the Authorization
>> header is required - a.f.a.i.k this use case was one of the driving forces
>> behind WRAP and bearer tokens.
>>>
>>> 2011/3/9 William J. Mills <[email-masked]<mailto:wmills@yahoo-
>> inc.com><mailto:[email-masked]<mailto:[email-masked]>>>
>>> Is there really a need going forward for anything beyond using the
>> Authorization header?  Do we have clients out there that just can't set that
>> header?  Putting bearer tokens in query arguments is a very bad idea for
>> many reasons, and in form variables has it's own set of badness (although
>> not to the same level).
>>>
>>> -bill
>>>
>>>
>>>

---

From: "William J. Mills" <[email-masked]>
Date: Thu, 10 Mar 2011 11:47:03 -0800 (PST)

We disagree on whether bearer credentials carried in GET parameters can be considered a best practice.

________________________________
From: "Richer, Justin P." <[email-masked]>
To: William J. Mills <[email-masked]>; Phil Hunt <[email-masked]>
Cc: Lukas Rosenstock <[email-masked]>; OAuth WG <[email-masked]>
Sent: Thursday, March 10, 2011 11:41 AM
Subject: RE: [OAUTH-WG] OAuth Bearer Token draft

The entire purpose of a standard is to codify the one-off solutions out there into best practices in different contexts.

-- Justin
________________________________________
From: William J. Mills [[email-masked]]
Sent: Thursday, March 10, 2011 2:37 PM
To: Richer, Justin P.; Phil Hunt
Cc: Lukas Rosenstock; OAuth WG
Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

If people are doign a one-poff internal solution they can do whatever they want, that doesn't mean it shoudl be part of a security related standard.

________________________________
From: "Richer, Justin P." <[email-masked]>
To: Phil Hunt <[email-masked]>
Cc: William J. Mills <[email-masked]>; Lukas Rosenstock <[email-masked]>; OAuth WG <[email-masked]>
Sent: Thursday, March 10, 2011 10:30 AM
Subject: RE: [OAUTH-WG] OAuth Bearer Token draft

What about temporary credentials across a local link between controlled systems? My point is just that there are cases where the usual leakage culprits (browsers, proxies, caches, logs) don't apply.

It's also a bad idea to not use two-way TLS, and it's arguably a bad idea to look at anything on the web without using TLS to begin with, but we still do. It's all about the tradeoff between security of a system and the usability and usefulness of a system. There's an old adage that the most secure computer is powered off and unplugged. :)

I think it's very important to strike an appropriate balance.

-- Justin
________________________________________
From: Phil Hunt [[email-masked]<mailto:[email-masked]>]
Sent: Thursday, March 10, 2011 1:15 PM
To: Richer, Justin P.
Cc: William J. Mills; Lukas Rosenstock; OAuth WG
Subject: Re: [OAUTH-WG] OAuth Bearer Token draft

Phil
[email-masked]<mailto:[email-masked]>

On 2011-03-10, at 10:07 AM, Richer, Justin P. wrote:

> Ah, here we run into the classic argument of usability vs. security, in which usability will win every single time in practice. If we don't define at least a reasonable way to do this within the scope of OAuth, that's not going to stop people from doing it. It's just going to make people do it in a million different ways, each with their own unique problems that nobody's thought of. At least this way, we can enable it and have a real discussion about the security considerations. There are valid and valuable places where putting credentials in the URL is a reasonable security tradeoff. Not everything functions over the public internet as well, and the security considerations are different in these other environments.
>
> From: William J. Mills [[email-masked]<mailto:[email-masked]>]
> Yeah, but there are serious security problems with credentials in the URL, is it really worth it in light of those problems?
>
> From: "Richer, Justin P." <[email-masked]<mailto:[email-masked]>>
> To: Lukas Rosenstock <[email-masked]<mailto:[email-masked]>>; William J. Mills <[email-masked]<mailto:[email-masked]>>
> Cc: Brian Eaton <[email-masked]<mailto:[email-masked]>>; OAuth WG <[email-masked]<mailto:[email-masked]>>
> Yes, there are many development setups where all you can reasonably access is the URL to get. It's also much simpler to make use of the well-supported syntax helpers for query parameters instead of relying on new, custom formatting for newly-defined headers. The bearer token makes this simple by just having the value of the token, but other schemes have their own name/value pair formats and encodings that will inevitably cause hiccups.
>
> -- Justin
> From: Lukas Rosenstock [[email-masked]<mailto:[email-masked]><mailto:[email-masked]<mailto:[email-masked]>>]
> JSON-P (callback) works with <script> tags where no parameters can be set; this is used a lot in web applications that want to consume 3rd party APIs directly on the client side. So, yes, an alternative for the Authorization header is required - a.f.a.i.k this use case was one of the driving forces behind WRAP and bearer tokens.
>
> 2011/3/9 William J. Mills <[email-masked]<mailto:[email-masked]><mailto:[email-masked]<mailto:[email-masked]>><mailto:[email-masked]<mailto:[email-masked]><mailto:[email-masked]<mailto:[email-masked]>>>>
> Is there really a need going forward for anything beyond using the Authorization header?  Do we have clients out there that just can't set that header?  Putting bearer tokens in query arguments is a very bad idea for many reasons, and in form variables has it's own set of badness (although not to the same level).
>
> -bill
>
>
>
> [email-masked]<mailto:[email-masked]>