2

为确保 REST API 仅由已知消费者访问,客户端应用程序使用密钥对每个 HTTP 请求进行签名,然后将生成的签名API 密钥一起发送到服务器。

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

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

4

2 回答 2

0

您可以检查域并提供 SOP 设置以仅限于已知域。如果 ips 保持不变,您可以按原始 ip 丢弃请求。

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

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

于 2014-08-05T06:24:59.453 回答
0

经过一番谷歌搜索后,我发现了这篇很棒的文章,并且刚刚实现了它所描述的解决方案;-)

于 2014-08-14T18:19:32.837 回答