【问题标题】:For user verification, you do need to store data on server side even when using JWT correct?对于用户验证,即使使用 JWT 也需要在服务器端存储数据对吗?
【发布时间】:2018-12-23 11:29:30
【问题描述】:

虽然我了解 jwt 如何进行身份验证,但我正在尝试构建注册。

注册有一个需要验证的步骤。

  1. 用户输入电话号码
  2. 代码通过短信发送给用户
  3. 用户输入代码并验证设备

由于它是移动应用程序的 API,因此没有内置会话/cookie。

我想知道我是否不能为移动设备实现类似 cookie 的系统。并让它与 JWT 一起工作。但我对此没有太多经验。

这是我目前的流程:

  1. 用户使用电话号码发出 POST 请求
  2. 我用 JWT(时间:数字)回复
  3. 我也通过短信发送代码
  4. 用户通过 POST 和 JWT 发送代码

问题:

  1. 我不知道代码是否属于用户,因为我没有将代码保存在数据库中。
  2. 我无法放入有效载荷,因为它只是编码未加密。 (为什么不加密,发送纯有效负载有什么意义,JWT 的意义何在?没有签名的 cookie 已经这样做了?他们已经加密了会话字符串,所以你不能在不使 cookie 失效的情况下更改会话字符串)

【问题讨论】:

    标签: node.js security authentication jwt


    【解决方案1】:

    JWT 主要在 API 中克服了身份验证/授权。 JWT 访问令牌/Refresh Token 只不过是加密形式的 JSON 数据。 JWT 可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。从安全角度来看,使用 RSA 或 ECDSA 的密钥对更可取。您可以通过解密 JWT 来检查身份验证/授权。

    JWT 令牌本身包含到期日期,因此您只需为其配置到期时间。访问令牌用于检查用户是否被授权。刷新令牌是获取新访问令牌所必需的,通常在旧访问令牌过期时使用。刷新令牌和访问令牌都过期,但刷新令牌与访问令牌相比是长期存在的。

    通常开发人员只使用访问令牌,但最好同时使用访问令牌和刷新令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 2021-01-06
      • 1970-01-01
      • 2019-10-27
      相关资源
      最近更新 更多