【问题标题】:JWT refresh token practiceJWT 刷新令牌实践
【发布时间】:2021-10-27 02:56:55
【问题描述】:

我正在尝试在我的网站上实现刷新令牌概念。

如果我理解正确,刷新令牌应该是用户获取新令牌的唯一标识符(令牌仅在 15 分钟内有效)。

我正在使用customId 包为每个登录用户生成一个刷新令牌。

令牌到期时。我向端点发送请求,以根据为每个用户提供的refresh_token 生成新令牌。

我正在使用 nuxt auth 模块。

try {
    const tokenUser = await User.findOne({
      refresh: req.body.refresh_token
    })
    // console.log(tokenUser)
    const newToken = await jwtr.sign({
      iu: tokenUser._id.toString()
    },
      'SUPERSECERT', {
      expiresIn: '5000' // Testing
    }
    );
 
    return res.json({
      token: newToken
    });

  } catch (e) {
    return res.status(401).send('unauthorized');
  }


我这样做正确吗?还是应该将新创建的 jwt 令牌存储在 refresh_token 而不是随机的唯一字符串中?还是我错过了有关刷新令牌的一些内容?

【问题讨论】:

    标签: jwt refresh-token nuxt-auth


    【解决方案1】:

    这个实现没问题,尽管您可能会考虑使用一种叫做“滚动刷新令牌”的东西。每次使用刷新令牌获取新的访问令牌时,您也会生成一个新的刷新令牌并将两者都返回给客户端。从现在开始,应该只能使用新的刷新令牌来获取新的访问令牌。如果有人设法窃取刷新令牌,它可以为您提供更多安全性。

    尽管如此,您应该始终在某个时间点(例如几个小时后)使您的刷新令牌过期。这将帮助您确保即使有人找到旧的刷新令牌,他们也无法使用它。刷新令牌过期后,您应该要求用户再次登录。

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 2016-03-05
      • 2016-06-25
      • 1970-01-01
      • 2021-04-06
      • 2017-10-11
      • 2016-10-14
      • 1970-01-01
      • 2017-05-27
      相关资源
      最近更新 更多