在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(请求特定的网页),查询参数,标题,