在Angular2中保护API密钥

我现在一直在Google上search。 可能是我错过了正确的关键字。

我有以下设置:

  • ExpressJS API(在端口3000上使用pm2运行)
  • Angular2应用程序 – 通过nginx提供

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

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

对于需要授权的api调用,我将使用JWT和用户authentication。

我想要实现的是,我为我的angular2应用程序生成一个令牌,允许/需要进行公共呼叫(例如产品清单)。

当然,我不希望别人通过直接的API调用(盗用令牌)来获取我的产品和价格。

任何帮助赞赏。

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

在我的例子(Angular 2,Express和JWT)中,我使用密码模块和pbkdf2algorithm来进行密码散列。

这是工作stream程:

  • / login /注册 – >散列密码并生成盐 – >将其存储在服务器上
  • / login – >validation存储的密码 – >生成jwt – >将其保存在客户端的localStorage中
  • / api – >在Auth头中发送jwt – >在服务器上validation – >发送响应

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

您的令牌希望通过https访问。 而当他们不能得到它…

UPDATE

从wiki:

由于HTTPS完全在TLS之上搭载HTTP,因此可以对整个底层HTTP协议进行encryption。 这包括请求URL(请求特定的网页),查询参数,标题,

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