Многофакторная проверка подлинности в ASP.NET Core

Завершено

В предыдущем уроке вы настроили удостоверения ASP.NET Core и расширили модель данных удостоверений. В этом уроке вы узнаете о многофакторной проверке подлинности и о том, как она реализована в identity.

Многофакторная Идентификация

Многофакторная проверка подлинности (MFA) — это процесс, в котором пользователю предлагаются дополнительные варианты идентификации во время входа. Эти варианты могут включать код из приложения, значение от аппаратного токена или результат биометрического сканирования. Если после первой проверки подлинности требуется вторая, это повышает безопасность.

Подтверждение, необходимое для проверки подлинности, может иметь один из трех типов:

  • Что-то, что вы знаете, например, пароль или контрольный вопрос.
  • Что-то, что у вас есть, например, аппаратный токен или приложение на телефоне.
  • Что-то, что относится непосредственно к вам, например, отпечаток пальца или изображение лица.

Эффективность MFA в основном связана с использованием различных типов проверки подлинности. Злоумышленник может получить доступ к нескольким знакомым вам вещам, таким как ваш пароль и псевдоним детства, но труднее скомпрометировать как то, что вы знаете, так и то, что у вас есть или есть.

Одноразовый пароль на основе времени

Одноразовый пароль на основе времени (TOTP) — это хорошо известный алгоритм, который создает уникальные числовые коды, срок действия которого истекает через 30 секунд. Алгоритм принимает два элемента входных данных: текущее время и уникальный ключ.

При регистрации пользователь вводит ключ в приложение, поддерживающее TOTP. Такие приложения включают:

  • Microsoft Authenticator
  • Google Authenticator
  • LastPass Authenticator

Ввод ключа в приложение можно упростить с помощью QR-кода. Приложение использует ключ и текущее время для создания и отображения уникальных кодов каждые 30 секунд. Если код, который создает приложение, совпадает с кодом, который ожидает сервер, проверка подлинности завершается успешно. Алгоритм учитывает незначительные различия во времени между устройством и сервером.

При многофакторной проверке подлинности пользователь обычно запрашивает код TOTP в сочетании с паролем. Пароль — это что-то, что вы знаете, а код является подтверждением чего-то, что у вас есть. Это связано с тем, что для создания кода можно использовать только ключ, хранящийся в приложении.

По умолчанию шаблоны проектов ASP.NET Core, использующие удостоверение, включают поддержку многофакторной проверки подлинности для приложений проверки подлинности TOTP. В форме Настройка приложения проверки подлинности шаблона Razor Pages отображается 32-значный регистрационный ключ для заполнения значения токена. Однако этот шаблон по умолчанию не создает QR-код.

Примечание

Распространенной альтернативой TOTP являются коды, отправляемые в текстовых сообщениях. В конце концов, телефон, на который приходит текстовое сообщение, — это что-то, что у вас есть. Однако текстовые сообщения в рамках многофакторной проверки подлинности легко подделать. Поэтому коды в текстовых сообщениях больше не считаются безопасной формой многофакторной проверки подлинности.

Сводка

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