在Angular2中保护API密钥

时间:2016-02-03 11:25:14

标签: node.js security express angular json-web-token

我一直在谷歌上搜索超过一天。可能是我错过了正确的关键字。

我有以下设置:

  • ExpressJS API(在端口3000上使用pm2运行)
  • Angular2 app - 服务 通过nginx

两者都在同一台服务器上运行。

对api(mydomain / api /)的调用代理127.0.0.1:3000

对于需要授权的api调用,我将使用JWT和用户身份验证。

我想要实现的是我为angular2 app生成一个令牌,允许/需要进行公开调用(例如产品列表)。

此令牌当然需要安全转移,因为我不希望其他人通过直接api电话(使用被盗令牌)获取我的产品和价格。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:1)

首先,正如@eesdil所说,你必须使用HTTPS。在这种情况下,您的所有通话都是加密且安全的。

在我的示例(Angular 2,Express和JWT)中,我使用带有pbkdf2算法的crypto模块来进行散列密码。

这是工作流程:

  • / login / signup - >哈希密码并生成盐 - >将其存储在服务器上
  • / login - >验证密码与存储的密码 - >生成jwt - >将其保存在客户端的localStorage中
  • / api - >在验证标题中发送jwt - >在服务器上验证 - >发送回复

工作示例在这里:https://github.com/vladotesanovic/angular2-express-starter

答案 1 :(得分:0)

您的令牌有望与https一起旅行。当它发生时,他们无法得到它......

更新

来自wiki的

  

因为HTTPS完全在TLS之上搭载HTTP,所以整个   底层HTTP协议可以加密。这包括   请求URL(请求了特定的网页),查询   参数,标题,

https://en.wikipedia.org/wiki/HTTPS