Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 扩展基于SMS OTP登录的标识_Authentication_.net Core_Asp.net Identity - Fatal编程技术网

Authentication 扩展基于SMS OTP登录的标识

Authentication 扩展基于SMS OTP登录的标识,authentication,.net-core,asp.net-identity,Authentication,.net Core,Asp.net Identity,我一直在尝试使用asp.net核心身份实现,使用SMS OTP为我的应用程序执行一次性注册验证和每日登录 它是一次性令牌,如果不使用,将在15分钟后过期 用户应再次请求,以防其过期或丢失 在四处搜索时,所有的实现都提供了关于MFA或基于Google Authenticator的验证的详细信息,这两种情况略有不同 令牌不会由服务器生成,也不会由Authenticator应用生成 我需要存储令牌及其在时间上的版本 令牌将是6位数字的SMS 该场景更类似于无密码身份验证,但在这种情况下,没有存储令牌,

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

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

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

在四处搜索时,所有的实现都提供了关于MFA或基于Google Authenticator的验证的详细信息,这两种情况略有不同

令牌不会由服务器生成,也不会由Authenticator应用生成

我需要存储令牌及其在时间上的版本

令牌将是6位数字的SMS

该场景更类似于
无密码身份验证
,但在这种情况下,没有存储令牌,我需要将其有效存储,不确定如何扩展.net核心标识以满足上述要求

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


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

我知道这是一个老问题,但我发现自己在这里遇到了同样的问题,关于这一点的信息令人惊讶地稀少。可能正如微软建议使用(2FA)验证器应用程序一样,使用基于时间的一次性密码算法(TOTP),而不是带有短信/电子邮件的OTP

并非预期用途,但以下内容将允许您生成并保存一个有时间限制(3分钟)的6位OTP,将其与用户关联,然后使用ASP.NET Core Identity对其进行验证

GenerateChangePhoneNumberTokenAsync

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

验证ChangePhoneNumberTokenAsync

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


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

代码的链接

指向实现此功能的控制器的链接

。。您所谈论的似乎是双因素身份验证(2FA)。听起来您需要使用.NETCore(大概是2.x或3.x)进行“一次性密码”身份验证。您没有指定特定的实现。一个简单的谷歌搜索出现了几个点击率,包括,@ErikPhilips。我现在看到的是使用短信OTP登录,而不是密码。非常感谢。。真的很高兴有一个解决方案。。。我从未想过我可以使用
GenerateChangePhoneNumberTokenAsync
生成登录令牌,但作为一种解决方法,这仍然可以。