17
votes

I was looking for some information on the Internet about that and ended up on the RFC for The Oauth 1.0 Protocol: https://www.rfc-editor.org/rfc/rfc5849

You can read "Obsoleted by: 6749" at the top of it and if you follow that link, you end up on the The OAuth 2.0 Authorization Framework RFC.

Based on that, can I safely infer that OAuth 1.0 has been deprecated in favour of OAuth 2.0?

Thanks.

4
1.0 is absolutely deprecated for security reasons, 1.0a is still in usable and in fact, in use (for example Tweeter uses 1.0a: dev.twitter.com/docs/auth/oauth) IMHO you shouldn't give 500 for such a question :-)Simon Mourier
@Simon "you shouldn't give 500 for such a question" - I totally agree.Dan
@dan Then why you did, dan? I'm just curious. I guess this anfab guy is lucky XDchris-l
@chris - I have been writing up an important research document for the company that employs me and I really wanted to do a great job - this question is one of the key issues.Dan
@chris: I did not get the bounty :-) and I agree 500 is way too much for this questionanfab

4 Answers

23
votes

Yes and No.

IETF has published a new version of OAuth 2 obsoleting OAuth 1.x and it strongly recommends the new Auth providers switch to OAuth2.

There is a revision to OAuth 1.0a which fixes many of the security flaws found in 1.0 and is widely considered to be the most secure OAuth version yet.

OAuth2 is a completely new protocol and is not backwards compatible with OAuth 1.x. The major differences with respect to OAuth 1 are listed in this thread.

However, not everyone is as happy with the new standard. Eran Hammer-Lahav, the lead author and editor of OAuth specifications, resigned from the committee citing reasons in this blog post.

Homakov, who rose to fame with his exploit on Github, has not so nice things to say about OAuth 2.

So yes, OAuth 2 has officially replaced OAuth 1.x, but there are conflicting opinions on the net on whether one should use OAuth2 or stick with OAuth 1.0a.

6
votes

Yes )

The most of companies use 2.0 - for example google:

Important: OAuth 1.0 has been officially deprecated as of April 20, 2012. It will continue to work as per our deprecation policy, but we encourage you to migrate to OAuth 2.0 as soon as possible.

but there are some using 1.0 or 1.0a as you can see wiki: OAuth in the chapter List of OAuth service providers

There is also an official information that 1.0 is deprecated RFC 6749: The OAuth 2.0 Authorization Framework

.. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849.

And RFC 5849 is The OAuth 1.0 Protocol

5
votes

The direct answer to your question is yes. From the OAuth 2.0 spec:

it is the intention of this specification that new implementations support OAuth 2.0 as specified in this document and that OAuth 1.0 is used only to support existing deployments.

Although I prefer OAuth 2.0, and have implemented a 2.0 authorization server and contributed to the spec, I'm not able to say that one is better than the other. I do believe that 2.0 is easier to work with.

As a useful protocol, OAuth 1.0 is not obsolete or irrelevant. As of version 1.0a (RFC 5849 is 1.0a), I know of no vulnerabilities that make it less secure than 2.0, and in fact it is arguably more secure by default. 1.0 is just as capable of handling most use cases.

OAuth 2.0 is incompatible with OAuth 1.0; it is a completely new protocol. The design decisions that drove development of 2.0 were not rooted in flaws of 1.0, per se, but rather 2.0 was borne out of a desire to make OAuth simpler to implement, and more elegant for use cases that were hard for 1.0 (such as native apps).

Some differences which may be worth noting:

  • 2.0 relies on the security provided by TLS encrypted connections. 1.0 does not require TLS, and as a result the protocol is more complicated because it has to include its own defenses against man-in-the-middle attacks. For example, 1.0 relies on signed requests to access protected resources, whereas 2.0 offers a much simpler Bearer access token type.

  • 2.0 splits the OAuth server into two conceptual roles: (1) authorization server and (2) resource server. This separation of concerns fits naturally with enterprises where authorization concerns are spread across many servers responsible for different types of resources.

  • 2.0 distinguishes between confidential and public clients. Public clients are those that run on user devices, and therefore they cannot reliably keep secrets (hard-coded, embedded credentials). Distinguishing between confidential and public clients makes it easier to make secure implementation decisions that suit the needs of client application developers.

  • 2.0 introduces multiple authorization grant types. Each grant type has its own protocol flow, and these protocol flows make OAuth 2.0 adaptable for multiple use cases and client types.

  • 2.0 makes a great effort to be extensible. Section 8 of the spec makes provisions for defining new access token types, grant types, and protocol parameters. For example, in addition to bearer tokens, work is going into MAC tokens and JWT bearer tokens.

This is subjective, but one might say that OAuth 2.0 tries to be flexible for many use cases, where OAuth 1.0 required developers to fit their use cases into a more rigid framework.

1
votes

I don't really think that you can say that OAuth 1.0 has been deprecated in favour of OAuth 2.0. You can still work with the 1.0 if it suits on your demands.

The 2.0 is better for large scale like Twitter did the deprecation and changed it's API from 1 to 1.1, so to make use of the new OAuth, but that has to do with twitter. In another case maybe 1.0. is still working perfect, so no need to upgrade.

OAuth 2.0. has to do more like with public encryption, public key. And not private, not great news as that method is known years now. So that's way there are still be different opinions about if is good or bad.

Here Oauth2.0 and the road to hell, and here OAuth 2.0'bad' i think you can find more interesting and detailed information of what you want.