如何安全地将 apiKey / 客户端密码从 AngularJS 传递到 REST API

How to pass apiKey / client secret securely from AngularJS to REST API

所以我正在进行一个项目,我将向特定的业务合作伙伴提供信息源。不需要登录,因为业务合作伙伴的前端必须将预分配 apiKey 连同任何请求一起传递到 my REST API。 api 仅响应包含有效 apiKey 的请求,并且在我们生成 apiKey.

时已经预定义了其访问级别。

目前我正在使用 CakePHP,使用 curl,传递 REST 请求方法,并将硬编码的 apiKey 作为参数。到目前为止,安全还不是问题。但是我们的团队在想,如果我们的业务合作伙伴希望他们的网站在最近流行的 JS 前端框架中完成,例如 AngularJS.

怎么办?

同样的场景,这么简单的任务,用JS框架是做不到的。我显然不能简单地给他们客户端密码 (apiKey) 并让他们将其包含在他们的客户端代码中。任何人都可以查看机密并访问我们的 REST API.

现在我们正在谈论安全性,我的团队真的不太了解。克服这个问题的方法是什么?如何安全、隐蔽地传递 客户端密码 以及来自 AngularJS 的 http 请求?有什么建议或者有人能指出我可以研究的东西吗?

虽然我有一些想法,但它们听起来不太正确。

有不同的选择

前两个需要初始身份验证请求,您将获得一个令牌,该令牌会在以后对您网站的每个请求中传递。

您可以创建一个代理,站点调用该代理然后再次调用真正的 API 并添加您的 API 密钥。