Двухфакторная аутентификация (2FA). Многофакторная аутентификация Как это работает

27.07.2023
Редкие невестки могут похвастаться, что у них ровные и дружеские отношения со свекровью. Обычно случается с точностью до наоборот

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

Профиты многофакторной аутентификации для корпоративных приложений

  1. Более надежная аутентификация, чем только имя пользователя и пароль. К «что-то, что я знаю» (логин/пароль) добавляется «что-то, чем обладаю» - физическое устройство, а проверить, владеет ли им данный пользователь, позволяет код в СМС, отправленной на это устройство, или звонок на него с запросом пин-кода.
  2. Удобное управление настройками подобной системы аутентификации - включение/выключение разной степени защиты для разных пользователей, настройка различных политик и способов работы дополнительных факторов аутентификации.
  3. Возможность использовать учетные данные корпоративной инфраструктуры для входа в приложения, а не создавать новые логины и пароли для приложения в дополнение к корпоративным.

Мы рассмотрим реализацию этой задачи с помощью следующих продуктов и технологий:

  • Azure Active Directory - облачный сервис многофакторной аутентификации;
  • Azure Active Directory Authentication Libraries (ADAL) - библиотеки, обеспечивающие вызовы сервисов многофакторной аутентификации, включая проверки сертификатов, защищенное соединение с облачным сервисом аутентификации, отображение необходимых диалогов аутентификации. Поддерживает множество платформ и языков программирования;
  • Xamarin Forms - кросс-платформенное средство создания мобильных приложений, обеспечивающее компиляцию в нативный код и стопроцентный доступ к нативным API. Особенно удобно для быстрого создания приложений с переиспользованием 80–90% и более исходного кода между iOS, Android, Windows UWP - как раз наш случай для данного примера. Xamarin доступен как бесплатная часть Microsoft Visual Studio во всех ее версиях, включая бесплатную Visual Studio Community Edition.

Конфигурирование сервиса Azure Active Directory завершено, теперь создадим мобильное приложение и интегрируем в него многофакторную аутентификацию.

Интеграция многофакторной аутентификации в мобильное приложение

Как я сказал выше, мы для примера возьмем Xamarin Forms (бесплатная часть Visual Studio), который позволит нам, переиспользуя большую часть кода, получить сразу нативные мобильные приложения с поддержкой многофакторной аутентификации для iOS, Android и Windows UWP.

Быстрый способ - используем готовый исходный код

  1. Забираем код из моего репозитория на GitHub .
  2. Прописываем в код приложения в файле MainPage.xaml.cs идентификаторы, которые мы сконфигурировали при регистрации приложения в облачном сервисе Azure Active Directory. Их полное соответствие в приложении и сервисе необходимо, чтобы сервис не отклонял обращения приложения.

<>";

Все готово. Теперь мы рассмотрим также создание приложения с нуля.

Детальный способ - создаем приложение с нуля

Запускаем Visual Studio (я сейчас использую VS 2017, версия 15.6.7) с установленным Xamarin. Это можно проверить, запустив Visual Studio Installer и нажав Modify текущей инсталляции Visual Studio.



INFO

Познакомиться подробно с разработкой на Xamarin Forms можно, скачав бесплатную и очень подробную книгу знаменитого Чарльза Петцольда (думаю, многие помнят этого автора) «Creating Mobile Apps with Xamarin.Forms ».

В основном Page (окне) приложения MainPage.xaml добавим кнопку с обработчиком, для этого XAML-код для кнопки (Button) поместим вместе с существующим Label внутрь контейнера StackPanel. Этот простейший контейнер выстраивает внутри себя контролы в ряд по вертикали или горизонтали.

Последние материалы сайта