如何在基于OAuth API的情况下对主应用程序进行身份验证

时间:2012-02-25 18:53:50

标签: api oauth

我正在开始一个新的Web项目,我打算将其基于API;我想首先构建API,通过OAuth进行身份验证,然后构建一个网站以及可能使用API​​处理数据的移动应用程序。我也着眼于向公众开放API。

这是我的问题;我正在努力探讨如何验证这些“官方”应用程序,即我制作的应用程序,包括主站点。

在OAuth中,客户端为每个用户创建一个帐户,然后通过在主站点登录的资源所有者来查找访问权限。这显然不适合我,因为主站点和客户端是相同的地方,它也意味着我的用户应该创建两个帐户只是为了使用我的网站......

我相信Twitter使用自己的API运行twitter.com,我觉得这种方法变得很正常,所以必须采用标准方法。

我必须遗漏一些东西,但是什么?

2 个答案:

答案 0 :(得分:5)

您将API(业务逻辑)与用户身份的身份验证(例如登录)以及第三方应用程序(OAuth)的授权混淆。

twitter.com使用自己的API是正确的。但他们不在自己的网站上使用OAuth。当您在twitter.com上时,他们的API可通过cookie身份验证获得。简单地说:你已经登录了。

离开twitter.com后,您必须使用OAuth。现在,应用程序正在代表用户使用API​​。

总结一下。您并不特别需要OAuth为您的“自己的”Web客户端使用您自己的API。您需要OAuth或其他授权机制来发布您的API,它也将为您自己的“官方”应用程序派上用场。

确实没有必要将您自己的官方应用与第三方应用区分开来。无论如何,不​​是从技术角度来看。

答案 1 :(得分:1)

主持两个版本的“API”。一个映射到外部域api.yoursite.com,并启用OAuth以验证所有请求。另一个内部版本只能在您的官方应用程序服务器池 中访问。由于只有您的官方应用可以首先访问,因此请考虑对内部API的所有请求。

如果您希望同一个应用程序同时管理外部和内部呼叫,您可以选择

  1. 根据传入的IP地址区分外部和内部请求
  2. 实施您的API以接受其中一个“VIP通行证”或OAuth令牌进行身份验证。外部应用程序使用OAuth令牌代表某些用户执行操作。官方应用程序使用“VIP通行证”代表任何用户执行操作。