【发布时间】:2012-03-14 07:22:39
【问题描述】:
我目前正在为我们的 Web 服务构建一个 RESTful API,该 API 将由 3rd 方 Web 和移动应用程序访问。我们希望对 API 消费者(即那些 Web 和移动应用程序)有一定程度的控制,因此我们可以对 API 请求进行限制和/或阻止某些恶意客户端。为此,我们希望每个将访问我们的 API 的开发人员都从我们这里获取一个 API 密钥并使用它来访问我们的 API 端点。对于一些不处理特定用户信息的 API 调用,这是唯一需要的身份验证和授权级别,我称之为“应用程序”级别的 A&A。但是,一些 API 调用处理属于特定用户的信息,因此我们需要一种方法来允许这些用户登录并授权应用程序访问他们的数据,从而创建第二级(或“用户”级 A&A)。
将 OAuth2 用于“用户”级别的 A&A 非常有意义,我认为我非常了解我需要在这里做什么。
我还实现了类似 OAuth1 的方案,其中应用程序开发人员会收到一对 API 密钥和密钥,在每次调用时提供他们的 API 密钥并使用密钥来签署他们的请求(同样,它非常类似于 OAuth1,我应该只使用OAuth1)。
现在我遇到的问题是如何结合这两种不同的机制。我目前的假设是,我继续使用 API 密钥/密钥对来签署所有请求,以便能够访问所有 API 端点,并且对于那些需要访问用户特定信息的调用,应用程序将需要通过 OAuth2 流程并获取访问令牌并提供给他们。
所以,我向社区提出的问题是 - 这听起来像是一个好的解决方案还是有一些更好的方法来构建它。
我也很感激任何指向我可以使用的现有解决方案的链接,而不是重新发明轮子(我们的服务基于 Ruby/Rails)。
【问题讨论】:
标签: ruby api restful-authentication