OAuth:OAuth实现用例

时间:2012-02-10 07:32:47

标签: oauth

我有一个webapp,可以使用php服务器和数据库服务器执行很多ajax请求。我还创建了一个iPhone应用程序和一个Android应用程序,它们一直作为离线应用程序工作至今。

现在我想创建一个API,用于在Web服务器和智能手机应用之间同步数据。我应该使用OAuth吗?我读到的有关OAuth的内容 - 如果我想打开我的API以供第三方应用程序使用,它似乎已被使用。但在这里,我只想确保API和我自己的应用程序之间的数据安全传输。

有人可以对此有所了解吗?

2 个答案:

答案 0 :(得分:4)

OAuth的主要用途是授权第三方应用授权访问网站上用户的私有资源,而无需向第三方应用提供用户凭据。例如,假设 Twitter 想要从 Yahoo 帐户获取联系人列表。传统方式是将您的用户名和密码提供给 Twitter 。但是使用OAuth,您可以为他们提供一个临时令牌(称为Access Token),该令牌授权 Twitter 访问 Yahoo 上的联系人数量有限时间(直到此令牌到期或您作为私有资源的所有者,明确撤销它)。

尽管如此,OAuth并不是要在网络上安全地传输数据。这是另一个通常使用SSL实现的故事。即使您使用OAuth,也必须同时使用SSL以确保安全地发送和接收数据。

因此,在您的情况下,您必须查看API的用途。如果它是不向呼叫者提供任何私人数据的公共API,则无需使用OAuth。但是,如果API用于访问单个用户的私有资源,您可以考虑使用OAuth。如果您选择实施OAuth,您可以允许其他第三方应用在以后访问您的API而不必担心。

答案 1 :(得分:0)

很大程度上取决于您如何保护API。您的API是否特别向公众开放?如果您的数据不是每个用户都应该看到的内容,那么您如何检查用户凭据的身份验证?

最重要的是我们应该避免通过网络共享用户名和密码来检查身份验证。这意味着,您的API不应要求用户名和密码来验证用户是否有效。您可以通过从移动设备或设备ID或其他东西发送用户名和密码来执行此操作。

在这种情况下,OAuth服务器可以解决问题。基本上,在一个URL上,用户将发送其用户名和密码以获取其访问令牌。获得后,我们可以使用访问令牌来验证每个请求并采取必要的操作。

您可以使用bshaffer参考我在Laravel 5中实现OAuth服务器的视频,bshaffer是用户任何PHP框架的最佳OAuth库之一。 https://www.youtube.com/watch?v=0vGXbWdtjls