此无密码身份验证流程安全吗?

时间:2018-11-17 17:50:11

标签: node.js authentication jwt password-less

我想为我的移动应用实现一个无密码的身份验证流程,该流程仅需要用户单击其电子邮件中的链接即可登录。类似于Slack处理身份验证的方式。我将在此实现中使用nodejwt

我认为我已经提出了一个安全的设计,但是我确定我会丢失一些东西。我希望社会上有一些批评。

我们在这里:

  • 用户打开移动应用程序。
  • 我们检查用户在其本地存储中是否有令牌。
  • 如果这样做,我们会将令牌添加到其标题中,然后发送到应用程序的首页。
  • 否则,我们会提示他们输入电子邮件以开始使用
  • 当他们单击“提交”时,我们会将email address发布到服务器上的requestMagicLink端点。
  • 服务器在数据库中检查具有该email address的用户
  • 如果我们找到使用该电子邮件的用户,则会从该用户那里获取id
  • 如果该用户不存在,我们将创建一个新用户,并获取该id
  • 我们使用JWT与id生成令牌,而我们的secret1 hour之后过期
  • 我们通过电子邮件中的链接将该令牌发送给用户。
  • 点击该链接后,该链接会在查询参数中将magicLogin的GET请求发送到我们在token端点的服务器
  • 我们使用JWT和我们的secret验证令牌是正确的。
  • 如果验证失败,我们会将用户重定向到屏幕,并在其中提示他们输入电子邮件以开始使用。
  • 如果成功,我们将使用他们的id和我们的secret doesn't have an expiration生成一个新的JWT令牌,然后通过重定向的URL参数将其传递回用户他们转到我们应用中的成功页面。
  • 应用程序从参数中获取令牌,并将其存储在本地存储中,直到用户选择注销,然后将用户重定向到首页。
  • 对api的请求现在都在标头中包含令牌,用户可以使用。

0 个答案:

没有答案