如何从apularJS安全地将apiKey /客户端密钥传递给REST API

Jus*_*Moh 5 php security rest cakephp angularjs

所以我正在开展一个项目,我将向特定的业务合作伙伴提供信息.无需登录,因为业务伙伴的前端必须将预先分配的apiKey任何请求传递给我的REST API.api仅响应包含有效的请求apiKey,并且在生成apiKey时已经预定义了其访问级别.

目前我正在使用CakePHP,curl传递REST请求方法,以及硬编码apiKey为param.到目前为止,安全问题一直不是问题.但是我们的团队正在考虑,如果我们的业务合作伙伴希望他们的网站能够在最近流行的JS前端框架工作(例如AngularJS)中完成.

对于相同的场景,这样一个简单的任务无法在JS框架中完成.我显然不能简单地给他们客户端secret(apiKey)并让他们将它包含在他们的客户端代码中.任何人都可以查看秘密并访问我们的REST API.

现在我们谈论安全性,我的团队真的不太了解.有什么方法可以解决这个问题?如何安全,模糊地传递客户机密与AngularJS的http请求?任何建议或任何人都可以指出我可以研究的东西?

我有一些想法,但他们听起来不太对劲.

  • 我将把AngularJS放在CakePHP的webroot中.那将是一个非常肮脏的黑客...只是引入不必要的复杂性.
  • 使用Origin Domain/IP/Public Secret和timestamp 等约束的组合生成哈希,在我的API端,我比较哈希并为每个请求返回一个访问令牌...类似的东西......

bur*_*zum 1

有不同的选择

前两个将需要初始身份验证请求,您将收到一个令牌,该令牌将在以后向您的站点发出的每个请求中传递。

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