none
Microsoft AspNet Identity Двухфакторная аутентификация. Время жизни token, который отправляется пользователю RRS feed

  • Вопрос

  • Здравствуйте! 

    У меня возник вопрос:

    Я использую Microsoft AspNet Identity двухфакторную аутентификацию. Отправляю код подтверждения на почту и по sms. При аутентификации получаю код подтверждения. Не вхожу в систему. Через пару минут вхожу в систему еще раз - получаю другой код. При этом первый код подтверждения является действительным, и второй тоже. Спустя пять минут оба кода действительны. Только спустя приблизительно 10 минут  коды становятся недействительными. Подскажите пожалуйста это нормальное поведение или как-то нужно исправлять данную ситуацию. Если исправлять, то как?

    Заранее буду благодарна за информацию!!!

    Имею следующий UserManeger:

                                     

     public class ApplicationUserManager : UserManager<ApplicationUser/*, string*/>
        {
            public ApplicationUserManager(IUserStore<ApplicationUser/*, string*/> store)
                : base(store)
            {

            }

            public static SendProviderType GetSendProvider(ApplicationUser user)
            {
                var provider = SendProviderType.EmailCode;
                if (user.TwoFactorNotify == TwoFactorNotifyType.Phone)
                {
                    if (user.PhoneNumberConfirmed)
                    {
                        provider = SendProviderType.PhoneCode;
                    }
                }
                return provider;
            }

            public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
            {
                var manager = new ApplicationUserManager(new ApplicatonUserStore(context.Get<OAuthDbContext>()));
                // Configure validation logic for usernames
                manager.UserValidator = new UserValidator<ApplicationUser, string>(manager)
                {
                    AllowOnlyAlphanumericUserNames = false
                };
                // Configure validation logic for passwords
                manager.PasswordValidator = new PasswordValidator
                {
                    RequiredLength = 1
                };
                manager.RegisterTwoFactorProvider(SendProviderType.PhoneCode.ToString(), new PhoneNumberTokenProvider<ApplicationUser, string>
                {
                    MessageFormat = "Код подтверждения: {0}"
                });
                manager.RegisterTwoFactorProvider(SendProviderType.EmailCode.ToString(), new EmailTokenProvider<ApplicationUser, string>
                {
                    Subject = "Код подтверждения",
                    BodyFormat = "Код подтверждения: {0}"
                });
                manager.SmsService = new SmsService();
                manager.EmailService = new MailService();


                var dataProtectionProvider = options.DataProtectionProvider;
                if (dataProtectionProvider != null)
                {
                    manager.UserTokenProvider = new TotpSecurityStampBasedTokenProvider<ApplicationUser, string>();
                }
                return manager;
            }
        }

    Получаю код подтверждения:

    var code = await UserManager.GenerateTwoFactorTokenAsync(user.Id, provider.ToString());

    Проверяю код подтверждения:

    var validcode = await UserManager.VerifyTwoFactorTokenAsync(user.Id, provider.ToString(), model.Code);


    Проверяла на google account (там высылается один и тот же код и он действителен долгое время). В сбере же в течение 5 минут нельзя выполнить вход в систему, если уже был выслан код подтвердения.
    • Изменено allmazik 27 октября 2016 г. 13:43
    • Перемещено Alexander RusinovModerator 27 октября 2016 г. 15:35 Более подходящий раздел форума
    27 октября 2016 г. 13:31

Ответы

  • Всё зависит от сервисов которые предоставляют код подтверждения, если они посчитали, что заданное время таймаута оптимально, то ивам беспокоиться незачем.

    Сделаем содержимое сообщества лучше, вместе!

    28 октября 2016 г. 6:04
    Модератор

Все ответы

  • Всё зависит от сервисов которые предоставляют код подтверждения, если они посчитали, что заданное время таймаута оптимально, то ивам беспокоиться незачем.

    Сделаем содержимое сообщества лучше, вместе!

    28 октября 2016 г. 6:04
    Модератор
  • Большое спасибо! А еще подскажите пожалуйста:

    я заметила такое поведение: При аутентификации получаю код подтверждения. Вхожу в систему. Выхожу из системы. Авторизуюсь еще раз и мне пришел тот же код подтверждения. Как быть в данной ситуации?

    Заранее спасибо!

    28 октября 2016 г. 7:05
  • А от это уже плохо. Какую систему используете?

    Сделаем содержимое сообщества лучше, вместе!

    28 октября 2016 г. 10:33
    Модератор
  • ASP.NET MVC Identity
    28 октября 2016 г. 13:04