使用mvc身份注册电话号码而不是电子邮件

时间:2017-05-09 06:06:26

标签: c# asp.net-mvc login two-factor-authentication

我的网络应用程序中有一项要求,即我需要使用电话号码而不是电子邮件和密码注册用户。

系统应该输入用户的电话号码并向该电话号码发送OTP短信。如果OTP匹配,我需要创建用户。

我尝试使用asp.net身份2FA,但只有在用户已注册并且用户表中更新了电话号码时才能使用。

有人可以帮助我。

先谢谢。

塔拉克

2 个答案:

答案 0 :(得分:0)

您将必须使用短信提供商提供的付费短信链接,将文本发送到特定的电话号码。

例如-当用户注册在您的网站上时,其号码将插入数据库中,并且 OTP 创建并针对该电话号码插入链接,该链接将用于将OTP发送到以下电话号码。 因此,在登录期间,系统将询问用户otp,如果他/她在移动设备上获得的otp与数据库中的otp匹配,则登录将成功。 我认为没有任何方法可以将文本发送到这样的电话号码。 您将不得不使用一些付费短信提供商链接或类似的东西。 我希望我已经回答了你的问题。

答案 1 :(得分:0)

ASP.NET(核心)身份假定用户已经注册,然后才能生成一次性密码。这样做的原因是ASP.NET Identity使用用户的SecurityStamp(随机字符串),后者是生成的TOTP的一部分。我仍然不确定100%是最佳解决方案。这是我的2美分:

  • 在第一个注册联系人处创建具有“最少”信息(仅类似于电话号码和SecurityStamp)的用户,然后将其余的TOTP留给ASP.NET Identity。这可能会导致孤立的/不完整的用户(例如,如果用户未完成注册过程)。
  • 使用PhoneNumberTokenProvider生成TOTP的Async,然后使用ValidateAsync进行验证。如您所见,GenerateAsync和ValidateAsync需要一个User对象-它从中读取SecurityStamp。第1条)请注意:请勿提供公共或可猜测的字符串作为SecurityStamp。我已经看到了使用SHA(PhoneNumber)哈希作为SecurityStamp的实现。这是可以预见的,攻击者可能会生成自己的TOTP。 2)对于GenerateAsync和ValidateAsync流程,您将需要相同的User.SecurityStamp。因此,除了将SecurityStamp存储在某处之外,没有别的办法了。
  • 欢迎其他任何想法...
相关问题