安全 – API密钥与HTTP身份验证与RESTful API中的OAuth

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

然后,当然,喜欢API密钥的人说,OAuth是为代表用户访问的应用程序设计的(正如我理解的,例如使用您的Facebook帐户登录非Facebook网站)而不是用户直接访问他们特别注册的网站上的资源(例如正式Twitter客户端访问Twitter服务器)。然而,OAuth的建议似乎甚至是最基本的身份验证需求。

我的问题是,假设它都通过HTTPS,三个之间的一些实际差异是什么?什么时候应该考虑其他人?

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

>身份 – 谁声称要提出API请求?
>认证 – 他们真的是他们说他们是谁?
>授权 – 他们是否允许做他们想做的事?

还是所有三个?

如果您只需要标识呼叫者以跟踪API调用的音量或数量,请使用简单的API密钥。请注意,如果您发出的API密钥的用户与其他人共享,他们将能够调用您的API。

但是,如果您还需要授权,那就是您需要仅基于API的调用者提供对某些资源的访问,然后使用oAuth。

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

http://stackoverflow.com/questions/6767813/api-keys-vs-http-authentication-vs-oauth-in-a-restful-api

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:安全 – API密钥与HTTP身份验证与RESTful API中的OAuth