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

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

我试图使用asp.net核心身份实现为我的应用程序植入一次性注册验证&使用短信OTP每日登录。

这是一个一次性的令牌,如果不使用,15分钟后就会失效。

如果过期或丢失,用户应再次申请。

搜索了一下,所有的实现都提供了关于MFA或基于Google Authenticator的验证的细节,而这个场景略有不同。

Token不会由服务器生成,也不会由Authenticator应用生成。

我需要存储token以及它的生成时间。

Token将是6位数的短信。

这个场景更类似于 password less auth 此处但在这种情况下,token是不被存储的,我需要存储它的有效性,不知道如何扩展.net核心身份以满足上述要求。

这是相当标准的电话号码认证方式

我知道这不是一个标准的SO格式,但我不知道从哪里开始。

authentication .net-core asp.net-identity
1个回答
1
投票

我知道这是一个老问题,但我发现自己在这里遇到了同样的问题,而且关于这个问题的信息出奇的少。很可能像微软推荐使用(2FA)身份验证器应用,使用基于时间的一次性密码算法(TOTP),而不是SMSEmail的OTP。

虽然不是预期的目的,但以下内容将允许您生成并保存一个有时间限制(15分钟)的6位OTP,将其与用户相关联,然后使用它来使用ASP.NET Core Identity验证用户。

生成更改电话号码令牌的异步操作。

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

https:/docs.microsoft.comen-usdotnetapimicrosoft.aspnetcore.identity.usermanager-1.generatechangephonenumbertokenasync。

验证更改电话号码令牌Async

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

https:/docs.microsoft.comen-usdotnetapimicrosoft.aspnetcore.identity.usermanager-1.verifychangephonenumbertokenasync。


在Erik & paulsm4发布的文档中可以看到正在实现这个功能。

https:/docs.microsoft.comen-usaspnetcoresecurityauthentication2fa?view=aspnetcore-1.1&viewFallbackFrom=aspnetcore-3.1。

代码链接https:/github.comdotnetAspNetCore.Docstreemasteraspnetcoresecurityauthentication2fasampleWeb2FA。

连接到实现该功能的控制器的链接https:/github.comdotnetAspNetCore.Docsblobmasteraspnetcoresecurityauthentication2fasampleWeb2FAControllersManageController.cs。

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