Node.js 构建一次性密码身份验证服务器

Node.js 构建一次性密码身份验证服务器,node.js,architecture,jwt,one-time-password,Node.js,Architecture,Jwt,One Time Password,问题 在我们的系统中,我们有: 两个应用程序:react JS中的backoffice和react native中的用户应用程序 API(带postgres db) Hubspot(用户信息、电话号码等) 我们想添加一个身份验证服务器来保护我们的用户数据,并允许用户连接到移动应用程序。该服务器将在Hubspot(承载用户信息)和API中的用户之间提供令牌和链接 db。db将只存储hubspot用户id和api用户id以及一些时间戳。我们希望使用文本消息使用一次性密码 工作流程类似于: 用户

问题

在我们的系统中,我们有:

  • 两个应用程序:react JS中的backoffice和react native中的用户应用程序
  • API(带postgres db)
  • Hubspot(用户信息、电话号码等)
我们想添加一个身份验证服务器来保护我们的用户数据,并允许用户连接到移动应用程序。该服务器将在Hubspot(承载用户信息)和API中的用户之间提供令牌和链接 db。db将只存储hubspot用户id和api用户id以及一些时间戳。我们希望使用文本消息使用一次性密码

工作流程类似于:

  • 用户希望连接到应用程序(无论是否是第一次)。应用程序正在请求一个电话号码
  • 电话号码被发送到身份验证服务器,该服务器将检查它是否存在于hubspot中。如果用户电话号码存在,但数据库中没有,这意味着我们需要创建一个新用户(在auth server数据库和api中)。如果用户号存在并且已经在数据库中,则无需执行任何操作。在这两种情况下,都会生成一个令牌,并且用户能够连接(仍然需要了解如何连接)。如果hubspot中不存在任何内容,用户将无法在应用程序中进行身份验证
问题

我走的方向对吗?创建一个身份验证服务器,是一个好主意还是完全无用?我们应该直接在API中实现我们的逻辑吗?该系统是关于医疗信息和数据应该得到保护

关于OTP,如果电话号码确实存在,我们应该向用户发送什么?需要实际令牌的身份验证令牌或随机字符串

电话号码将发送到验证服务器,验证服务器将检查该号码是否存在 在hubspot。如果用户电话号码存在,但在 数据库,这意味着我们需要创建一个新用户(在auth服务器中) 数据库和api中)。如果用户号存在且已在 没有什么可做的。在这两种情况下,都会生成一个令牌 并且用户能够连接(仍然需要了解如何连接) 那)。如果hubspot中不存在任何内容,用户将无法 在应用程序中进行身份验证

我认为将电话号码发送到auth服务器不是一个好主意,而是生成一个代码并将其保存在某个后端服务器或某个后端数据库上,然后向用户发送相同的代码。在后端保存代码的原因是将其与用户在将来某个时候提供的代码进行比较

这是一个独特的识别信息,而不是电话号码,人们的电话号码一直在变化

用户可能会收到短信,这是我们需要手机号码发送短信的唯一原因,他们可以将该代码输入回应用程序

因此,用户向我们发送正确的代码,并将其发送到后端服务器。然后在服务器上对其进行比较,如果用户输入了正确的代码,则向他们发送一些进一步的标识令牌,例如一个JSON Web令牌,用于标识用户以备将来的后续请求

这就是认证的含义。一旦用户成功地输入了令牌,我们将为用户提供一个JSON Web令牌来专门识别他们,并说,嘿,这个用户确实正确地输入了一次性密码,下面是关于用户的一些识别信息