扩展基于短信 OTP 的登录身份



我尝试使用 asp.net 核心身份实现为我的应用程序使用SMS OTP进行一次性注册验证和每日登录。

它是一次性令牌,如果不使用,应在 15 分钟内过期

用户应再次请求它,以防其过期或丢失

搜索它,所有实现都提供了有关MFA或基于Google身份验证器的验证的详细信息,其中此方案略有不同。

令牌不会由服务器生成,也不会由身份验证器应用生成。

我需要存储令牌及其在时间生成的令牌。

令牌将是 6 位短信。

该场景更类似于此处提到的password less auth,但是在这种情况下不存储令牌,我需要将其与有效性一起存储,不确定如何扩展.net核心标识以匹配上述要求。

这是相当标准的电话号码身份验证方式

我知道这不是标准的 SO 格式,但我从哪里开始不知所措

我知道这是一个老问题,但我发现自己在这里遇到了同样的问题,而且有关这方面的信息在地面上出奇地稀少。可能Microsoft建议使用(2FA(身份验证器应用程序,使用基于时间的一次性密码算法(TOTP(而不是带有短信/电子邮件的OTP。

不是预期目的,但以下内容将允许您生成并保存时间限制(3 分钟(的 6 位 OTP,将其与用户关联,然后使用它使用 ASP.NET 核心身份验证他们。

生成更改电话号码令牌异步

var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.PhoneNumber);

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.usermanager-1.generatechangephonenumbertokenasync

验证更改电话号码令牌异步

bool valid = await _userManager.VerifyChangePhoneNumberTokenAsync(user, code, model.PhoneNumber);

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.usermanager-1.verifychangephonenumbertokenasync


这可以在 Erik & paulsm4 发布的文档中看到实现

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/2fa?view=aspnetcore-1.1&viewFallbackFrom=aspnetcore-3.1

代码链接 https://github.com/dotnet/AspNetCore.Docs/tree/master/aspnetcore/security/authentication/2fa/sample/Web2FA

指向实现此目的的控制器的链接 https://github.com/dotnet/AspNetCore.Docs/blob/master/aspnetcore/security/authentication/2fa/sample/Web2FA/Controllers/ManageController.cs

相关内容

  • 没有找到相关文章

最新更新