OAuth 2与OAuth 1有什么不同?



4 Answers

我在这里看到了很好的答案,但是我错过了一些图表,因为我必须使用Spring框架,所以我遇到了他们的解释

我发现下面的图非常有用。 它们说明了使用OAuth2和OAuth1的各方之间的沟通差异。

OAuth 2

OAuth 1

Question

用非常简单的术语,有人可以解释OAuth 2和OAuth 1之间的区别吗?

OAuth 1现在是否过时了? 应该实现OAuth 2吗? 我没有看到许多OAuth 2的实现; 大多数仍在使用OAuth 1,这让我怀疑OAuth 2是否可以使用。 是吗?




请注意,对于使用Oauth 2存在严重的安全争论:

hueniverse.com/oauth-2-0-and-the-road-to-hell-8eec45921529

和更技术性的

请注意这些来自Oauth 2的主要作者。

关键点:

  • Oauth 2在SSL上不提供安全性,而Oauth 1不依赖于传输。

  • 从某种意义上说,SSL并不安全,因为服务器不会验证连接,而且通用客户端库可以轻松地忽略故障。

    SSL / TLS的问题在于,如果无法在客户端验证证书,则连接仍然有效。 任何时候忽略错误都会导致成功,开发人员将会这样做。 服务器无法执行证书验证,即使可以,攻击者也肯定不会。

  • 您可以将您的所有安全性用尽手指,这在OAuth 1.0中难以做到:

    第二个常见的潜在问题是拼写错误。 如果忽略一个字符('https'中的's')会使整个令牌的安全性失效,您会认为它是一个适当的设计吗? 或者可能(通过有效且经过验证的SSL / TLS连接)发送请求到错误的目的地(例如' http://gatest.com '?)。 请记住,能够使用来自命令行的OAuth持票人标记显然是一个使用案例持票人代币提倡者。




如果您想查看OAuth的简明说明和详细流程(使用图表),可以查看http://oauthbible.com




OAuth 2显然是浪费时间(从大量参与其中的人的口中):

hueniverse.com/oauth-2-0-and-the-road-to-hell-8eec45921529

他说(为简洁起见编辑并强调):

...我不能再与OAuth 2.0标准关联。 我辞去了我作为主要作者和编辑的职位,从规范中撤回了我的名字,并离开了工作组。 从一份文件中删除我的名字,我辛苦地工作了三年,并且打了二十多份草稿并不容易。 决定继续从事我已经领导了五年以上的努力,实在令人痛苦。

最后,我得出了OAuth 2.0是一个不好的协议的结论。 WS- *不好。 这已经够糟糕了,我不想再与它联系在一起了。 ...与OAuth 1.0相比,2.0规范更复杂,更少互操作性,更少用处,更不完整,最重要的是不太安全。

要明确的是, 开发人员对OAuth 2.0的深入理解可能会导致安全实施。 然而,在大多数开发人员的手中 - 正如过去两年的经验 - 2.0可能会产生不安全的实现。




如果您需要一些高级解释,您需要阅读两个规范:

https://oauth.net/core/1.0a/

https://oauth.net/2/

如果您需要清楚说明流量差异,可以帮助您:

OAuth 1.0流程

  1. 客户端应用程序向提供商注册,例如Twitter。
  2. Twitter为客户提供了该应用程序独有的“消费者秘密”。
  3. 客户端应用程序通过其独特的“消费者密码”向Twitter发送所有OAuth请求
  4. 如果任何OAuth请求格式不正确,缺少数据或签名不正确,请求将被拒绝。

OAuth 2.0流程

  1. 客户端应用程序向提供商注册,例如Twitter。
  2. Twitter为客户提供了该应用程序所特有的“客户机密钥”。
  3. 客户端应用程序包含 每个请求的“客户端密钥”
  4. 如果任何OAuth请求格式不正确,缺少数据或包含错误机密,则该请求将被拒绝。

资料来源: https://codiscope.com/oauth-2-0-vs-oauth-1-0/ : https://codiscope.com/oauth-2-0-vs-oauth-1-0/






Related