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

时间:2015-05-10 17:06:02

标签: php angularjs security rest cakephp

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

有不同的选择

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

您可以创建代理,该网站会调用代理,然后再调用真实API并添加您的API密钥。