5

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

我有以下设置:

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

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

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

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

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

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

任何帮助表示赞赏。

4

2 回答 2

1

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

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

这是工作流程:

  • /login/signup -> 哈希密码并生成盐 -> 将其存储在服务器上
  • /login -> 根据存储的密码验证密码 -> 生成 jwt -> 将其保存在客户端的 localStorage
  • /api -> 在Auth标头中发送 jwt -> 在服务器上验证 -> 发送响应

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

于 2016-02-03T22:09:23.057 回答
0

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

更新

来自维基:

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

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

于 2016-02-03T12:05:05.660 回答