Многофакторная аутентификация не работает должным образом с удостоверением ASP.NET Core 2.1 - PullRequest
1 голос
/ 06 мая 2019

Я пытался реализовать многофакторную аутентификацию для моего веб-приложения.

Я могу сгенерировать ключ аутентификации на основе моего авторизованного пользователя. Используя 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...