2012-02-23 87 views
1

我目前正在为我们的Web服务构建一个RESTful API,该服务将由第三方Web和移动应用程序访问。我们希望对API消费者(即那些网络和移动应用)具有一定的控制权,因此我们可以对API请求进行限制和/或阻止某些恶意客户。为此,我们希望每位将访问API的开发人员从我们那里获取API密钥并使用它来访问我们的API端点。对于某些不处理特定用户信息的API调用,这是授权的唯一所需级别,我称之为“app”级别A & A.但是,某些API调用处理属于特定用户的信息,所以我们需要一种方法来允许这些用户登录并授权应用访问他们的数据,从而创建第二级(或“用户”级A)。RESTful API的双重身份验证

对于“用户”级别A使用OAuth2有很大的意义,我认为我对这里需要做的事情有很好的理解。

我还实施您好!OAuth1般的方案,其中应用程序开发者收到一对API密钥&秘密,与每一个电话提供他们的API密钥,并用秘密签上自己的请求(再次,这是非常您好!OAuth1喜欢的,我也许应该只是使用OAuth1)。

现在我的问题是如何结婚这两种不同的机制。我目前的假设是,我继续使用API​​密钥/密钥对来签署所有请求,以便能够访问所有API端点,并且对于那些需要访问用户特定信息应用程序的调用,需要通过OAuth2流程并获取访问令牌并供应它们。

所以,我对社会问题是 - 它听起来像一个很好的解决方案或有建筑师这一些更好的方法。

我也很感激,而不是重新发明轮子,我可以用现有的解决方案的任何链接,(我们的服务是基于Rails的Ruby的/)。

回答