【问题标题】:What really is 2-legged Oauth什么是真正的 2-legged Oauth
【发布时间】:2012-03-19 20:12:35
【问题描述】:

我一直在为我目前正在开发的 REST API 探索 OAuth 1.0 版。

我有 3 个身份验证方案

  1. 这涉及3方,服务提供者、消费者和用户。 3-legged Oauth 符合这种情况。
  2. 涉及两方,消费者和服务提供者。这是 2-legged Oauth 最适用的场景吗?如果是,那么流程是什么,因为根据我的理解,这与 HTTP 基本身份验证之间几乎没有区别。
  3. 我也在创建一种特殊类型的用户,它可以在没有用户授权的情况下随时访问当前登录的用户数据。如何在实施 OAuth 的同时融入其中。

使用这种场景?如何巧妙地实施 Oauth,这如何帮助我理解 3-legged 和 2-legged Oauth 流程?

【问题讨论】:

  • 您将只存储访问令牌而不是密码。因此,它更安全(不存储密码)并且可以在每个应用程序的基础上撤销访问权限(更改密码会破坏所有需要该帐户的应用程序)

标签: php api rest oauth 2-legged


【解决方案1】:

第 1 点:正确,只需使用典型的 3-legged oauth 流程。

第 2 点。2-legged oauth 与 http-basic 几乎相同,只是 oauth 签名可以保护您免受 MITM 攻击(但如果您在 TLS 上使用 http-basic,则可以获得相同的保护)。 2-legged oauth 的过程只是使用消费者密钥/秘密对请求进行签名,这与 http basic 上的用户名/密码同义。

第 3 点。我不是 100% 清楚您在这里的意思,但这听起来类似于 google 如何使用 2-legged oauth 用于 google 应用程序域。在这里查看他们的文档:https://developers.google.com/accounts/docs/OAuth#GoogleAppsOAuth

您是否研究过 OAuth 2.0?它仍处于草案阶段,但它对于不同的场景具有更大的灵活性。可能是需要考虑的事情。 http://oauth.net/2/

【讨论】:

  • 非常感谢乔希。我完成了 google 的 2-legged Oauth 实现,它将处理场景 2。至于场景 3,我将只使用用户名和密码身份验证,因为在这种情况下,消费者也是提供者。我还通过了 Oauth 2 规范,当我找到一个好的 PHP 库或者可以为自己编写一个库时,我将不得不迁移到 2.0。
猜你喜欢
  • 2015-07-17
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
相关资源
最近更新 更多