API密钥与HTTP身份validation相比,RESTful API中的OAuth

我正在为我维护的其中一个应用程序构build一个RESTful API。 我们目前正在寻求build立各种东西,需要更多的控制访问和安全。 在研究如何确保API的时候,我发现了一些关于使用什么forms的不同观点。 我已经看到一些资源说HTTP-Auth是要走的路,而其他人则更喜欢API密钥,甚至其他人(包括我在这里发现的问题)OAuth发誓。

然后,当然,那些喜欢API密钥的人说,OAuth是专为代表用户访问的应用程序devise的(据我所知,如使用您的Facebook帐户login非Facebook网站),而不是用户直接访问他们特别注册的网站上的资源(如访问Twitter服务器的官方Twitter客户端)。 然而,OAuth的build议似乎甚至是最基本的authentication需求。

那么我的问题是 – 假设这些都是通过HTTPS完成的,三者之间的一些实际区别是什么? 什么时候应该考虑其他人?

这取决于你的需求。 你需要:

  • 身份 – 谁声称正在提出API请求?
  • authentication – 他们真的是谁说的吗?
  • 授权 – 他们被允许做他们正在做的事情吗?

或所有三个?

如果您只需要识别调用者以跟踪API调用的数量或数量,请使用一个简单的API密钥。 请记住,如果您发布API密钥的用户与其他人共享,则他们也可以调用您的API。

但是,如果您还需要授权,那么您只需要提供基于API调用者的特定资源访问权限,然后使用oAuth。

这里有一个很好的描述: http : //www.srimax.com/index.php/do-you-need-api-keys-api-identity-vs-authorization/