第三方客户的休息api(AAA)

时间:2013-02-01 15:56:13

标签: json api rest authentication oauth

我目前正在开发一个REST / JSON API,它必须通过远程网站提供一些服务。我不知道这些网站的最终客户,他们/不应该在API服务器上拥有帐户。 API服务器上唯一存在的帐户是标识网站的帐户。由于这都是RESTful,因此所有通信都将在最终用户浏览器(通过javascript / JSON)和我的REST API服务之间进行,我如何确保系统不会被有兴趣增加的第三方滥用中间人的账单? (中间人是转售我服务的网站的所有者)。你会推荐哪些认证方法可以使用,并且会阻止用户从网站上获取js代码并将其称为1000000次只是为了破坏网站所有者?我正在考虑使用HTTP_REFERER,并将其转换为IP地址(以找出托管代码的服务器,并根据此IP进行身份验证),但我认为HTTP_REFERER很容易被欺骗。我不是在寻找我的客户的最终客户在API服务器上注册,这会破坏这个API的目的。

请问一些想法?

谢谢, 丹

1 个答案:

答案 0 :(得分:0)

这可能不是你的选择,但我之前在这种情况下所做的是在REST调用之上建立一个代理。该网站调用自己的内部服务,然后该服务调用您的REST调用。优点是,就像你说的那样,没有人可以直接打你的REST电话或试图欺骗电话。

如果失败,您可以实施像HMAC(http://en.wikipedia.org/wiki/Hash-based_message_authentication_code)这样的身份验证方案。我见过很多API使用它。

Using HMAC-SHA1 for API authentication - how to store the client password securely?

以下是验证身份的Java代码:http://support.ooyala.com/developers/documentation/api/signature_java.html

无论哪种方式,我认为你将不得不做一些工作服务器端。否则,如果一切都是纯粹的客户端,人们可能会对API进行逆向工程。