要确保只有已知的使用者访问REST API,客户端应用程序会使用机密对每个HTTP请求进行签名,然后将结果签名发送给< strong> API密钥到服务器。
对于JavaScript客户端, API密钥和秘密在脚本本身中进行了硬编码...所以这个机制如何确保客户端发送请求的确是客户应该是什么?我问,因为如果秘密在JavaScript中被硬编码,每个人都可以查看它,窃取秘密,并在其他应用程序中使用它。
是否有更安全的方式向消费者公开API?我知道Stackoverflow中还有其他帖子涉及这个主题......但我不清楚的是如何处理消费者授权和用户授权。在我的情况下,消费者授权确定第三方是否被允许访问我的API并且与业务逻辑无关,而用户授权是在应用程序级别(即在消费者被识别和授权之后)。
答案 0 :(得分:0)
您可以检查域并提供SOP设置以限制仅限于已知域。 如果ips将保持不变,你可以通过origin ip删除请求。
此外,您可以在服务器上安装一个秘密生成器,客户端需要从服务器上调用它并将其传递给它们的js代码,从那里它可以附加到api调用。这样,具有SOP的客户端可以确保不注入其js。您可以在提供响应之前检查客户端IP。
基本上,这取决于您要服务的消费者类型。他们是企业客户等吗?
答案 1 :(得分:0)
经过一些谷歌搜索后,我发现了这个great article并刚刚实现了它描述的解决方案; - )