多因素身份验证无法与ASP.NET Core 2.1身份一起正常使用

时间:2019-05-06 17:51:17

标签: asp.net-core asp.net-core-2.1

我已经尝试为我的Web应用程序实施多因素身份验证。

我能够根据我的登录用户生成一个Authenticator-Key。使用Google Authenticator,我可以生成代码。当我验证此代码时出现问题。 (这是一个基于时间的代码)

由于某种原因,我的_userManager.VerifyTwoFactorTokenAsync(...)似乎在代码未过期时不起作用,但是一旦Google Authenticator应用中的代码更改,现在相同的“过期”代码即有效,现在我已重定向并登录。

这是我的令牌生成器代码:

var user = await _userManager.GetUserAsync(User);

var authenticatorKey = await _userManager.GetAuthenticatorKeyAsync(user);

if (authenticatorKey == null)
{
    await _userManager.ResetAuthenticatorKeyAsync(user);

    authenticatorKey = await _userManager.GetAuthenticatorKeyAsync(user);
}

return View(new RegisterAuthenticatorViewModel { AuthenticatorKey = authenticatorKey });

这是我的代码验证代码:

var user = await _userManager.GetUserAsync(User);

var isValid = await _userManager.VerifyTwoFactorTokenAsync(user,
                _userManager.Options.Tokens.AuthenticatorTokenProvider, model.Code);

if (!isValid)
{
    ModelState.AddModelError(string.Empty, "Code is invalid");
    return View(model);
}

await _userManager.SetTwoFactorEnabledAsync(user, true);

return View("_Success");

由于该代码实际上是有效的,所以我的问题是,为什么它只有在Google Authenticator App过期后才对代码进行验证。

0 个答案:

没有答案