构建一次性密码认证服务器

问题描述 投票:0回答:1

问题

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

  • [两个应用程序:reactjs中的后台办公室和react-native中供用户使用的应用程序
  • 一个API(带有postgres db)
  • 热点(用户信息,电话号码等)

我们想添加身份验证服务器以保护我们的用户数据并允许用户连接到移动应用。该服务器将提供令牌以及Hubspot(承载用户信息)和API db中的用户之间的链接。该数据库将仅存储hubspot用户ID和api用户ID以及一些时间戳。我们想使用通过短信发送的一次性密码。

工作流程将类似于:

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

问题

我朝正确的方向前进吗?创建身份验证服务器,是个好主意还是完全没用?我们应该直接在API中实现逻辑吗?该系统是关于医疗信息的,应保护数据。

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

node.js architecture jwt one-time-password
1个回答
0
投票

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

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

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

用户大概收到了短信,这是我们需要电话号码发送短信的唯一原因,他们可以将代码重新输入到应用程序中。

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

这就是认证的含义。一旦用户成功输入令牌,我们将为用户提供一个JSON Web令牌以专门识别它们,并说,嘿,此用户正确输入了一次密码,这是该用户的一些识别信息。

© www.soinside.com 2019 - 2024. All rights reserved.