ExpressJS API令牌认证

时间:2015-09-17 21:18:40

标签: node.js express oauth passport.js bearer-token

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

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

2 个答案:

答案 0 :(得分:3)

1)是的,你可以这样做

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

3)如果您使用令牌身份验证,我将不会使用Sessions。你不需要国家。

4)我猜不是

答案 1 :(得分:1)

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