Как реализовать двухфакторную аутентификацию по электронной почте в ASP.Net Core 2? - PullRequest
1 голос
/ 07 мая 2019

Я использую ASP.NET Core 2.2 для веб-сервера. Каждый раз, когда пользователь входит на сайт, после ввода правильного адреса электронной почты и пароля, мне нужно отправить сообщение, содержащее 4-значный PIN-код на электронную почту пользователя, чтобы использовать ее в качестве двухфакторной аутентификации электронной почты, и этот PIN-код должен истечь через 10 минут после отправки.

Я могу сделать это вручную (генерация случайных ПИН-кодов, сохранение их в базе данных, проверка их с помощью операторов if и т. Д.), Это будет работать, но я создал этот вопрос, чтобы спросить, как это сделать с помощью ASP.NET Основные функции Core 2 (которые могут сэкономить для меня таблицу базы данных).

Я пытался UserManager.GenerateTwoFactorTokenAsync (TUser, String) метод , чтобы сгенерировать токен и отправить его по электронной почте:

var token = await _userManager.GenerateTwoFactorTokenAsync(user, "Default");
SendLoginTokenToUserEmail(user, token);

и использовал UserManager.VerifyTwoFactorTokenAsync (TUser, String, String) , чтобы проверить это:

var verified = await _userManager.VerifyTwoFactorTokenAsync(user, "Default", token);

Это сработало отлично, но моя проблема заключалась в том, что сгенерированный токен не был четырехзначным PIN-кодом, а его срок действия не был равен 10 минутам (я думаю, по умолчанию это 1 день).

Итак, мой вопрос: Как настроить сгенерированный токен UserManager для двухфакторной аутентификации в ASP.NET Core 2.2?

Можно ли это сделать, создав собственного провайдера токенов? (Я здесь использую токен-провайдер по умолчанию). Если да, то как это сделать? Я часами просматривал документы Docs и ASP.NET Core 2, но не нашел того, что мне нужно.

PS: если есть какой-либо другой способ, кроме UserManager, я полностью уверен, но я подумал, что это может быть лучшим способом, особенно UserManager используется везде в нашей системе (для входа в систему, сброса пароля и т. Д. ...).

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