为了进行用户验证,即使使用JWT正确,您是否也需要将数据存储在服务器端?

时间:2018-07-15 23:32:02

标签: node.js security authentication jwt

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

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

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

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

我想知道我是否不能实现像cookie这样的移动系统。并使其与JWT一起使用。但是我对此没有太多经验。

这是我当前的流程:

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

问题:

  1. 我不知道代码是否属于用户,因为我没有将代码保存在数据库中。
  2. 我无法放入有效负载,因为它只是编码而未加密。 (为什么不进行加密,发送普通有效载荷的意义何在,甚至JWT的意义何在?还没有签名的cookie已经做到了?它们已经加密了会话字符串,因此您不能在不使cookie无效的情况下更改会话字符串)< / li>

1 个答案:

答案 0 :(得分:0)

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

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

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