Перейти к основному содержимому

Настройка двухфакторной аутентификации ADFS

Общая информация

В статье описывается настройка Active Directory Federation Services (ADFS) для доступа к корпоративным приложениям.

Возможные способы аутентификации:

  • Мобильное приложение MultiFactor
  • Telegram
  • СМС
  • Биометрия
  • Аппаратные OTP токены
  • Приложения OTP: Google Authenticator или Яндекс.Ключ

Видео-презентация

Схема работы

  1. Пользователь открывает корпоративное приложение;
  2. ADFS запрашивает логин первый фактор аутентификации: логин и пароль, проверяет корректность указанных данных и, если данные верны, переходит ко второму этапу аутентификации;
  3. На втором этапе открывается окно проверки второго фактора Мультифактор, в котором пользователю предлагается подтвердить доступ;
  4. Пользователь подтверждает второй фактор доступа и переходит к работе с приложением.

Для настройки второго фактора аутентификации вам потребуется установить и настроить на сервере ADFS компонент MultiFactor.ADFS.Adapter. Компонент разработан и поддерживается компанией Мультифактор, распространяется бесплатно вместе с исходным кодом. Актуальная версия находится на GitHub: код и сборка (архив release.zip).

Лицензия

Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.

Требования для установки

  1. Компоненту необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP прокси;
  2. На сервере должно быть установлено правильное время.

Настройка Мультифактора

  1. В системе управления Мультифактором добавьте новый ресурс «Веб-сайт», после чего Вам будут доступны ключи API Key и API Secret. Используйте формат токена доступа JwtHS256.

Настройка ADFS

  1. Загрузите и распакуйте архив на сервер с ADFS.
  2. Отредактируйте файл конфигурации MultiFactor.ADFS.Adapter.dll.config: пропишите ключи доступа из личного кабинета Мультифактора
  3. Запустите PowerShell скрипт install.ps1 с правами администратора.
  4. Зайдите в консоль управления ADFS, в разделе "Authentication methods" -> "Multi-factor Authentication Methods" включите метод MultiFactor.
  5. В разделе Relying Party Trusts отредактируйте Access Policy для приложений, где необходимо включить 2FA.

Защита от сбоев

В случае недоступности (по любой причине) API MULTIFACTOR, адаптер может работать в одном из двух вариантов:

  1. Пропускать без второго фактора (по умолчанию)
  2. Отказывать в доступе

Для настройки используется следующий параметр:

<!--Enable bypass second factor when api unreachable (default: true)-->
<!--<add key="bypass-second-factor-when-api-unreachable" value="false"/>-->

Обновление

Шаги по переустановке\обновлению плагина:

  1. Отключите Multifactor в AD FS в Service -> Authentication Methods -> Edit Multi-Factor Authenntication Methods
  2. Задайте ключи для подключения к серверу аутентификации в MultiFactor.ADFS.Adapter.dll.config
  3. Запустите uninstall.ps1
  4. Запустите install.ps1
  5. Включите Multifactor в AD FS

Если что-то не работает

  • Если возникают ошибки при установке плагина, проверьте, что установочный скрипт вы выполняете от имени администратора;
  • Для работы в кластерной конфигурации компонент необходимо установить на все серверы кластера;
  • Ошибки, связанные с работой компонента, можно посмотреть на сервере ADFS в журнале Windows: в разделе Applications с источником MultiFactor, а также в разделе ADFS;
  • Если не прогружается iframe с окном второго фактора, а в консоли браузера вы видите ошибку:
Refused to frame 'https://access.multifactor.ru/' because it violates the following
Content Security Policy directive: "default-src 'self'". Note that 'frame-src' was
not explicitly set, so 'default-src' is used as a fallback."

То добавьте домен access.multifactor.ru в исключения политики безопасности содержимого, разрешая ему открываться во фрейме. Это можно сделать следующей PowerShell командой, запущенной от роли администратора:

Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy"  `
-SetHeaderValue "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; frame-src access.multifactor.ru"

Смотрите также