gpt4 book ai didi

node.js - 从单独的设备进行 Node 无密码登录

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:32 24 4
gpt4 key购买 nike

我正在使用 nodejs 无密码 ( https://passwordless.net/ ) 库进行无密码登录。其中一项功能是通过电子邮件发送的链接,该链接可在浏览器中打开登录页面。效果很好。我想做的是拥有它,这样如果在一台设备上单击链接,并且用户输入电子邮件的页面在另一台设备上打开,那么该页面也会使用一些 cookie 或其他东西登录。

这样做的原因是为了让无密码登录的概念更加方便 - 通过点击手机上的链接,您无需转到计算机浏览器中的另一个选项卡。

人们对于尽可能无缝地实现无密码登录还有其他想法吗?

最佳答案

您所要求的内容是不可能的,因为它“回避了身份验证旨在回答的问题”。即,“此客户端应用程序是否代表注册此服务的用户运行?”

让我们来看看:

设备 1

  1. 用户首次访问您的网站。
  2. 该服务会使用您网站(或应用)上新的唯一 session 的 ID 设置 Cookie。
  3. 用户以表单形式提交电子邮件。
  4. 用户会收到一封包含 URL+ token 的电子邮件,该 token 由 Passwordless 提供。
  5. 用户点击 URL。
  6. 服务再次通过无密码验证 token ,并将设备 1 的 session 标记为已通过身份验证

此工作流程(尤其是步骤 3-5)的作用是让您推断一条重要信息:联系此网站的任何人都可以控制所提供的电子邮件地址。现在让我们看看另一个设备。

设备 2

  1. 某些用户首次访问您的网站。
  2. 该服务会使用您网站上新的唯一 session 的 ID 设置 Cookie。

所以我们有一个带有 cookie 的设备,但现在怎么办?从字面上看,世界上任何人都可以通过网络浏览器或应用程序访问您的网站。我们需要更多信息。因此我们可以要求提供电子邮件地址:

  • 用户以表单形式提交电子邮件。
  • 现在我们收到了来自设备 2 的电子邮件。但我们不知道这是否是控制该电子邮件地址的合法用户。它很可能是攻击者、追求您的服务的人、追求该用户的人,或者可能只是带有一些机器人的垃圾邮件发送者。

    直到我们到达原始工作流程中的第 6 步,我们才有足够的信息来了解该设备是否由与设备 1 上的同一用户使用。但是一旦我们走到这一步,用户就刚刚登录到设备 2!此时,无需从设备 1“自动登录”,因为他们只是在设备 2 上对自己进行了身份验证。

    关于node.js - 从单独的设备进行 Node 无密码登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34154872/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com