The Good and the Bad of OAuth 2.0 Authorization Implementations
john-sheehan.com
john-sheehan.com
The idea that a guy who just made $100 million is reading hackernews on a Sunday night, and immediately tries to address a product issue he stumbles upon makes me happy.
[1] https://groups.google.com/d/msg/oauth2-dev/HnFJJOvMfmA/JzZ8J...
In some RPs, access
tokens are appended as query parameters to the RP's sign-in
endpoint (i.e., the URI that issues the authenticated session
cookie), which reveals the tokens in the browser's history
and server logs.
The official spec only supports including the access token in a URL-encoded body of a POST request, or as part of an Authorization header [0]. This is one of the biggest differences between the official spec and most current (not up to spec) implementations.Also disappointing^H^H^H^H^H^H^H^H^H^H^H^H^H interesting:
Surprisingly, our evaluation shows that only 21% of RPs em-
ploy SSL to protect SSO sessions, even though about half of
tested RPs have protected their traditional login forms with
SSL.
The relevant part of the specifcation [1]: Always use TLS (https): Clients MUST always use TLS [RFC5246]
(https) or equivalent transport security when making requests with
bearer tokens. Failing to do so exposes the token to numerous
attacks that could give attackers unintended access.
[0]: http://tools.ietf.org/html/rfc6750#section-2
[1]: http://tools.ietf.org/html/rfc6750#section-5.3Very interesting.
I've used Mozilla Persona and THAT was straightforward. I can't help but feel that Person is what OAuth should have been. Secure, simple login for my grandmother, and easy to implement and integrate for Joe Coder.
This was one situation where using a library really slowed me down and hurt my understanding of what was going on.
Maybe I've long moved on and forgotten about that one site that I authorised and now they are using my data in a way that I wouldn't approve of.
Most of the issues from OAuth 2 stem from a fluid spec that wasn't finalized until recently. Now that that's done hopefully the situation will stabilize and once you learn how to use one (I also recommend making the requests directly yourself and not using a library) you'll easily be able to use all the others without having to search out all the quirks I wrote about in this post.
How is this different from the vulnerability of using the same password everywhere?
Your scenario certainly is a legitimate concern, but it depends on how the other services implement account linking. If you create a non-oauth account and then sign in with Facebook, some services will allow you to link the accounts based on your email address matching, others won't.
Of course in the case of Google, if someone hacked your account, they would probably also have access to your Gmail and could reset passwords from any other service. So the risk isn't significantly different.
As a general rule, I only use oauth SSO on sites that I trust less or care about less than my oath provider.