ExpressJS API 令牌认证

ExpressJS API Token Authentication

我正在使用 ExpressJS 并试图找出最好(也是最安全)的方式让我在 iPhone 应用程序发送请求时对用户进行身份验证。

  1. 我应该使用 PassportJS with the Passport Bearer strategy 来登录用户并验证用户吗?
  2. 在 Passport Bearer 策略工作示例 here 中,它表明他们正在通过属于 User 对象的令牌找到用户。我假设这意味着我将存储用户正在使用的令牌作为 Users table?
  3. 中的列
  4. 标准是否也使用带有令牌身份验证的会话?如果它是标准的,我是否应该让客户端传入 sessionId,并以这种方式搜索用户?
  5. 出于安全原因,我是否还应该让客户端传入一个私钥,该私钥会根据我的配置文件中存储的私钥进行检查

1) 是的,你可以走那条路

2) 你可以那样做,但今天我猜每个人都在使用 JWT (jwt.io),它基本上是带有数据的令牌,所以基本上你可以用它们进行身份验证,甚至不需要查询数据库.在令牌中,您甚至可以拥有权限范围并在每次需要经过身份验证的操作时检查它们。示例:https://github.com/DevAlien/Axolot/blob/master/lib/helper.js

3) 如果你使用token认证我就不会使用Sessions。你不需要状态。

4) 我猜不是

看这里:https://www.npmjs.com/package/tokens2 Tokens2 是基于令牌的身份验证模块,它基于两个令牌工作:1- json 网络令牌 (jwt) 确保使用的登录是有效用户 2- 访问令牌确保用户未失效 该协议基于短时间生存 jwt 令牌。访问令牌保存在数据库中,除非我们使用户无效,否则该数据库永远不会过期。 JWT 遭受令牌失效并且对移动用户存在严重问题。