如何确保仅由已知的使用者访问REST API

时间:2014-08-05 06:15:23

标签: api rest http api-key secret-key

要确保只有已知的使用者访问REST API,客户端应用程序会使用机密对每个HTTP请求进行签名,然后将结果签名发送给< strong> API密钥到服务器。

对于JavaScript客户端, API密钥秘密在脚本本身中进行了硬编码...所以这个机制如何确保客户端发送请求的确是客户应该是什么?我问,因为如果秘密在JavaScript中被硬编码,每个人都可以查看它,窃取秘密,并在其他应用程序中使用它。

是否有更安全的方式向消费者公开API?我知道Stackoverflow中还有其他帖子涉及这个主题......但我不清楚的是如何处理消费者授权和用户授权。在我的情况下,消费者授权确定第三方是否被允许访问我的API并且与业务逻辑无关,而用户授权是在应用程序级别(即在消费者被识别和授权之后)。

2 个答案:

答案 0 :(得分:0)

您可以检查域并提供SOP设置以限制仅限于已知域。 如果ips将保持不变,你可以通过origin ip删除请求。

此外,您可以在服务器上安装一个秘密生成器,客户端需要从服务器上调用它并将其传递给它们的js代码,从那里它可以附加到api调用。这样,具有SOP的客户端可以确保不注入其js。您可以在提供响应之前检查客户端IP。

基本上,这取决于您要服务的消费者类型。他们是企业客户等吗?

答案 1 :(得分:0)

经过一些谷歌搜索后,我发现了这个great article并刚刚实现了它描述的解决方案; - )