- Начало работы
- Интеграция
- HTTP API
- OpenID Connect
- RADIUS протокол
- RADIUS адаптер
- LDAP адаптер
- Портал самообслуживания
- MULTIFACTOR Directory Sync
- Windows Logon
- Регистрация пользователей
- .NET Core
- 1с-Bitrix24
- 1с-плагин двухфакторной аутентификации
- ADFS
- ASP.NET
- Ansible AWX
- Atlassian Cloud
- BearPass
- Check Point VPN
- Cisco ASA VPN
- Citrix Gateway
- FortiGate VPN
- HRBOX
- Huawei Cloud
- Huawei VPN
- Ideco UTM
- Keycloak
- Let's Encrypt Windows Server
- Linux logon (GUI)
- Linux SSH
- Linux SUDO
- Microsoft Entra ID
- MikroTik L2TP VPN
- NGate VPN
- Network Policy Server (NPS)
- Nextcloud
- OpenVPN
- OpenVPN + AD
- OpenVPN Access Server
- OpenVPN pfSense
- Outlook Web Access (OWA)
- Passwork
- RD Gateway (RDGW)
- Redmine
- UserGate VPN
- VMware Horizon Cloud
- VMware Horizon View
- VMware vCloud Director
- VMware vSphere
- Vault
- ViPNET
- Windows VPN
- Yandex.Cloud
- Yandex 360
- Zabbix
- АйТи-Бастион
- Континент 4 VPN
- МТС Линк (бывш. webinar.ru)
- WordPress
- С-Терра VPN
- Точка доступа Wi-Fi
- ФПСУ-IP/Клиент
Портал для пользователей Active Directory
MULTIFACTOR SelfService Portal — веб-сайт, портал самообслуживания для пользователей Active Directory, единая точка входа (Single Sign-On) для корпоративных приложений по протоколам аутентификации SAML, OpenID Connect / OAuth.
В виде референса настройки портала самообслуживания как точки Single Sign-On (SSO) можете использовать следующую инструкцию.
Портал доступен вместе с исходным кодом, распространяется бесплатно по лицензии MIT. Актуальная версия находится на GitHub: код и сборка (архив MultiFactor.SelfService.Windows.Portal.zip).
Перед началом работы
- Зайдите в личный кабинет MULTIFACTOR, далее в разделе "Ресурсы" создайте новый ресурс типа "Сайт" - "Self-Service портал":
- название и адрес: произвольные;
- регистрировать новых пользователей: да;
- при подключении без настроенного второго фактора: включить самостоятельную настройку;
- После создания вам будут доступны параметры API Key и API Secret, они потребуются для настройки портала.
Требования для установки портала
- Портал устанавливается на любой Windows сервер начиная с версии 2012 R2;
- Сервер должен быть присоединен к домену;
- Серверу с установленным порталом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS).
- На сервере должна быть установлена роль Web Server (IIS) с компонентом Application Development -> ASP.NET 4.6 (или выше);

Сертификат
Для тестовой среды вы можете пропустить проверку SSL сертификатов. Для этого
в Web.config измените блок следующим образом :
<!-- If you want to terminate TLS on nginx or other proxy, remove requireSSL="true" and httpCookies key below --> <authentication mode="Forms"> <forms loginUrl="~/account/login" timeout="2880" requireSSL="false" /> </authentication> <httpCookies requireSSL="false" />
Или можете выпустить самоподписанные сертификаты
Создайте самоподписанный сертификат командой PowerShell:
New-SelfSignedCertificate -DnsName "ваш-домен.com" -CertStoreLocation "Cert:\LocalMachine\My"
Здесь ваш-домен.com замените на имя вашего тестового домена или IP-адрес
Экспортируйте сертификат в PFX файл.
Вам нужно экспортировать созданный сертификат, чтобы использовать его для SSL.
$password = ConvertTo-SecureString -String "ваш_пароль" -Force -AsPlainText
Export-PfxCertificate -Cert "Cert:\LocalMachine\My\<Thumbprint>" -FilePath "C:\Path\To\cert.pfx" -Password $password
<Thumbprint> замените на отпечаток (thumbprint) вашего сертификата, который можно найти после выполнения команды New-SelfSignedCertificate.
ваш_пароль — пароль, который будет использоваться для защиты PFX файла.
"C:\Path\To\cert.pfx" — путь, куда вы хотите сохранить сертификат.
Установите сертификат в доверенное хранилище.
Для того чтобы ваш самоподписанный сертификат был доверенным на тестовом сервере, выполните:
Import-Certificate -FilePath "C:\Path\To\cert.pfx" -CertStoreLocation "Cert:\LocalMachine\Root"
Параметры портала
Параметры работы портала хранятся в файле Web.config
в формате XML.
<portalSettings> <!-- Название вашей организации --> <add key="company-name" value="ACME" /> <!-- URL адрес логотипа организации --> <add key="company-logo-url" value="/mfa/content/images/logo.svg" /> <!-- Название домена Active Directory для проверки логина и пароля пользователей --> <add key="company-domain" value="domain.local" /> <!-- [Опционально] Запрашивать второй фактор только у пользователей из указанной группы для Single Sign On. Второй фактор требуется всем, если удалить настройку. --> <!-- <add key="active-directory-2fa-group" value="2FA Users" /> --> <!-- [Опционально] Используется для формирования Identity для запроса доступа в API мультифактора --> <!-- <add key="company-domain-netbios-name" value="DOMAIN" /> --> <!-- Адрес API MULTIFACTOR --> <add key="multifactor-api-url" value="https://api.multifactor.ru" /> <!-- Параметр API KEY из личного кабинета MULTIFACTOR --> <add key="multifactor-api-key" value="" /> <!-- Параметр API Secret из личного кабинета MULTIFACTOR --> <add key="multifactor-api-secret" value="" /> <!-- [Опционально] Доступ к API MULTIFACTOR через HTTP прокси --> <!-- <add key="multifactor-api-proxy" value="http://login:password@proxy:3128" /> --> <!-- Уровень логирования: 'Debug', 'Info', 'Warn', 'Error' --> <add key="logging-level" value="Info" /> <!-- [Опционально] Запись журнала в формате JSON --> <!-- <add key="logging-format" value="json" /> --> <!-- [Опционально] Использовать номер телефона, записанный на вкладке General из Active Directory, для отправки одноразового кода в СМС. --> <!-- <add key="use-active-directory-user-phone" value="true" /> --> <!-- Использовать номер телефона, записанный во вкладке Telephones в поле Mobile. --> <add key="use-active-directory-mobile-user-phone" value="true" /> <!-- Включить управление паролями на портале (true - включено, false - выключено) --> <add key="enable-password-management" value="true" /> <!-- [Опционально] Включить управление устройствами ActiveSync (Active Directory) --> <!-- <add key="enable-exchange-active-sync-devices-management" value="true" /> --> <!-- Передавать userPrincipalName (UPN) в качестве логина пользователя в MULTIFACTOR --> <add key="use-upn-as-identity" value="true" /> <!-- [Опционально] Проверка второго фактора перед первым (true/false) --> <!-- <add key="pre-authentication-method" value="true" /> --> <!-- Включить капчу (true/false) --> <!--add key="enable-captcha" value="true" /--> <!-- Провайдер Captcha (Google, Yandex) --> <!-- add key="captcha-type" value="Google" /--> <!-- Key из личного кабинета провайдера Captcha --> <!-- add key="captcha-key" value="" /--> <!-- Secret из личного кабинета провайдера Captcha --> <!-- add key="captcha-secret" value="" / --> <!-- Где показывать Captcha: 'Always', 'PasswordRecovery' --> <!-- add key="require-captcha" value="Always" / --> <!-- [Опционально] Адрес прокси для Captcha --> <!-- <add key="captcha-proxy" value="http://login:password@proxy:3128" /> --> <!-- Включить восстановление забытых паролей (true/false) --> <add key="enable-password-recovery" value="true" /> <!-- [Опционально] Новым пользователям при регистрации будут назначены эти группы из личного кабинета MULTIFACTOR --> <!-- <add key="sign-up-groups" value="Группа1;группа два;group3" /> --> <!-- Максимальная длительность сессии изменения пароля в формате 'hh:mm:ss' --> <add key="pwd-changing-session-lifetime" value="00:15:00" /> <!-- Размер хранилища сессий в байтах --> <add key="pwd-changing-session-cache-size" value="1048576" /> </portalSettings>
При включении параметра use-active-directory-user-phone
компонент будет использовать телефон, записанный на вкладке General. Формат телефона может быть любым.

При включении параметра use-active-directory-mobile-user-phone
компонент будет использовать телефон, записанный на вкладке Telephones в поле Mobile. Формат телефона также может быть любым.

Проверка Captcha
Для защиты от автоматизированного перебора паролей от учётных записей на странице входа в портале предусмотрена возможность проверки пользователя с помощью теста Captcha. В качестве провайдеров сервиса Captcha поддерживаются Yandex SmartCaptcha и Google reCAPTCHA v2.
<!-- Enable captcha validation --> <add key="enable-captcha" value="false" /> <!-- Google/Yandex switch --> <add key="captcha-type" value="Google" /> <!-- Site Key from a captcha management panel --> <add key="captcha-key" value="key" /> <!-- Secret Key from a captcha management panel --> <add key="captcha-secret" value="secret" />
Управление паролями
Портал самообслуживания позволяет пользователям управлять своими доменными паролями: менять текущий пароль, менять истекший пароль, восстанавливать забытый пароль.
Для настройки используются следующие параметры:
<!-- Управление паролями на портале. true: включить (по умолчанию), false: выключить --> <add key="enable-password-management" value="true"/> <!-- Максимальная длительность сессии изменения пароля в формате 'hh:mm:ss' --> <!-- <add key="pwd-changing-session-lifetime" value="00:02:30"> --> <!-- Размер хранилища сессий в байтах --> <!-- <add key="pwd-changing-session-cache-size" value="5242880"> -->
Восстановление забытых паролей
Функционал восстановления забытых паролей позволяет пользователям из Active Directory самостоятельно (без вовлечения технической поддержки организации) менять забытые и утерянные пароли.
Условия для работы:
- У пользователя должно быть настроено мобильное приложение Multifactor в качестве способа аутентификации;
- На портале должна быть включена возможность управления паролями;
- На портале должна быть включена проверка Captcha;
Для настройки используется следующий параметр:
<!-- Восстановление забытых паролей. true: включить, false: выключить (по умолчанию) --> <add key="enable-password-recovery" value="true" />
Чтение вложенных групп
Портал самообслуживания позволяет читать вложенные группы, для этого необходимо добавить нижеприведенные параметры :
<!-- Включает поддержку вложенных групп Active Directory --> <add key="load-active-directory-nested-groups" value="true"/> <!-- Определяет, с какого DN начинать поиск вложенных групп пользователей --> <!-- По умолчанию используется корень домена --> <!-- Можно указать несколько DN через ";" --> <add key="nested-groups-base-dn" value="CN=users,DC=domain,DC=your"/> <!-- Определяет группы, в которых должен состоять пользователь для прохождения первой аутентификации --> <!-- Можно указать несколько групп через ";" --> <add key="active-directory-group" value="required_group_1;required_group_2"/>
Privacy mode
Для ограничения передаваемых полей добавьте в конфиг следующую строчку:
<!-- Где Full - скрыть всё кроме логина, Partial - передавать указанные атрибуты --> <add key="privacy-mode" value="Full/Partial:Name,Email,Phone"/>
Установка портала
- Загрузите и сохраните сборку портала на вашем сервере;
- Запустите Server Manager -> Tools -> Internet Information Services (IIS) Manager;
- Нажмите правой кнопкой на Default Web Site и выберите Add Application;

- Создайте новое приложение:
- Alias: mfa
- Physical path: путь к папке со сборкой портала (из п.1)
- Сохраните и закройте;
- Зайдите в Default Web Site -> mfa -> Authentication;
- Убедитесь, что способы аутентификации Anonymous Authentication и Forms Authentication включены (имеют статус Enabled). Если выключены, нажмите на них правой кнопкой и выберите Enable. Если Forms Authentication отсутствует в списке, убедитесь, что компонент ASP.NET 4.6 или выше установлен на сервере (см. Требования для установки портала).

Обновление портала
- Сделать резервную копию файла конфигурации Web.config в папке с порталом;
- Удалить содержимое папки с порталом;
- Скачать свежую сборку (или собрать из исходного кода), распаковать в папку с порталом;
- Перенести в Web.config пользовательские параметры из резервной копии файла конфигурации (разделы
<portalSettings>
и<ActiveDirectory>
, если был указан).
Журналы
Журналы работы портала находятся в папке Logs
в директории со сборкой портала. Если папки Logs
нет, создайте её и удостоверьтесь, что она доступна для записи локальному пользователю IIS AppPool\DefaultAppPool
.
Syslog
Для записи журналов в Syslog сервер или SIEM систему, добавьте в раздел конфигурации <portalSettings>
следующие параметры:
<!-- Адрес и порт сервера, протокол может быть udp или tcp --> <add key="syslog-server" value="udp://syslog-server:514"/> <!-- Формат журнала: RFC3164 или RFC5424 --> <add key="syslog-format" value="RFC5424"/> <!-- Категория: User, Auth, Auth2, Local0 .. Local7 --> <add key="syslog-facility" value="Auth"/> <!-- Название приложения (tag) --> <add key="syslog-app-name" value="multifactor-portal"/>
Если syslog передаёт искаженные символы, нужно поменять следующую настройку на false (по умолчанию true):
<add key="syslog-use-tls" value="false" />
Работа с несколькими доменами
Портал при запуске находит все доверенные домены и может проводить аутентификацию пользователя в любом из них. Вы можете отдельно настроить список разрешенных или список запрещенных доменов. Для этого в раздел <configuration>
добавьте следующие строки после закрывающего тэга </portalSettings>
:
<ActiveDirectory requiresUserPrincipalName="true"> <!-- Ограничить домены списком ниже /--> <IncludedDomains> <add name="dom1.loc"/> <add name="dom2.loc"/> </IncludedDomains> <!-- Или все домены, кроме перечисленных ниже /--> <ExcludedDomains> <add name="dom3.loc"/> <add name="dom4.loc"/> </ExcludedDomains> </ActiveDirectory>
Настройка шаблона syslog
<add key="syslog-template" value="your_template" />
Пример шаблона системного журнала:
[{Timestamp:MMM dd HH:mm:ss}] {Level:u3} {Message:lj} <s:{SourceContext}>{NewLine}{Exception}
Второй фактор перед первым
Если эта опция включена, портал сначала запросит второй фактор и только после успешного подтверждения проверит учётные данные.
<add key="pre-authentication-method" value="true"/>
Использование
Портал доступен по адресу https://ваш_домен.ru/mfa

Управление устройствами Exchange ActiveSync
В Exchange сервере предусмотрен механизм карантина ActiveSync устройств. Сразу же после подключения мобильной почты, устройств попадает в карантин и может быть одобрено или отклонено для использования администратором Exchange сервера. До одобрения мобильная почта не работает, а единственное письмо, которое придёт на устройство в карантине — это информация, что устройство ожидает подтверждения администратором.
Портал самообслуживания предлагает возможность пользователю после прохождения второго фактора самостоятельно управлять устройствами для своего почтового ящика: включать и выключать доступ.
Управление ActiveSync на портале по умолчанию выключено. Для включения, выполните настройки ниже.
Настройка Exchange
- Зайдите в центр администрирования Exchange, раздел "Мобильные устройства", нажмите "Изменить".
- Включите карантин
- В шаблон письма для пользователя вставьте сообщение и ссылку на портал.
Настройка портала
- Добавьте в конфигурацию ключ
<add key="enable-exchange-active-sync-devices-management" value="true"/>
- Разрешите порталу работать с Exchange:
- Создайте в AD служебную учетную запись, поместите ее в группу Exchange Trusted Subsystem.
- Настройте разрешения для учетной записи на чтение папки с сайтом и записи в папку Logs.
- Настройте работу сайта от имени этой учётной записи:
- Откройте IIS
- В разделе Application Pools выберите DefaultAppPool и откройте Advanced Settings
- В разделе Identity укажите созданную учётную запись
- Перезагрузите IIS (iisreset)
Вопросы и ответы
В: Где прописывается сервисная учётная запись для подключения к Active Directory?
О: Для проверки логина и пароля сервисная учётная запись не используется, портал подключается к AD от имени пользователя, который запрашивает аутентификацию. Смена пароля и управление Exchange ActiveSync устройствами осуществляется от имени пользователя, под которым сайт запущен в IIS.
В: Как отключить возможность менять доменный пароль на портале?
О: Возможность изменения пароля отключается следующей настройкой:
<add key="enable-password-management" value="false"/>
В: Второй фактор при входе на портал запрашивается у всех пользователей. Как включить условный запрос второго фактора на базе членства пользователей в группе AD?
О: В целях безопасности подтверждение второго фактора при входе на портал в режиме самообслуживания требуется для всех пользователей. Задать исключения можно на уровне групповой политики в панели управления MULTIFACTOR.
Запрашивать второй фактор только у пользователей из указанной группы AD можно в режиме единого входа (SSO) с помощью следующей настройки:
<add key="active-directory-2fa-group" value="2FA Users"/>
В: Какие командлеты PowerShell использует портал для работы с устройствами Exchange ActiveSync?
О: Работа идёт напрямую с Active Directory, без командлетов.
Пользователю, под которым запущен сайт в IIS необходимы права на чтение и запись следующих LDAP атрибутов в контейнере пользователей:
На чтение:
- Объекты User
distinguishedName
- Объекты msExchActiveSyncDevice
msExchDeviceID msExchDeviceFriendlyName msExchDeviceModel msExchDeviceType whenCreated msExchDeviceAccessState msExchDeviceAccessStateReason objectClass
На запись:
- Объекты User
msExchMobileAllowedDeviceIDs msExchMobileBlockedDeviceIDs
- Объекты msExchActiveSyncDevice
msExchDeviceAccessState msExchDeviceAccessStateReason
В: Как добавить проверку CAPTCHA на странице входа в портал?
О: Поддерживается Google reCAPTCHA v2. Для включения получите параметры Site Key и Secret Key в панели управления reCAPTCHA и задайте следующие настройки в конфигурации портала:
<!-- Включить проверку CAPTCHA на форме входа --> <add key="enable-google-re-captcha" value="true"/> <!-- Параметр Site Key из личного кабинета https://www.google.com/recaptcha/admin --> <add key="google-re-captcha-key" value="site key"/> <!-- Параметр Secret Key из личного кабинета https://www.google.com/recaptcha/admin --> <add key="google-re-captcha-secret" value="secret"/>
В: Как в качестве логина пользователя передавать UPN в MULTIFACTOR?
О: По умолчанию, логин пользователя передается в MULTIFACTOR в формате, в котором его вводит пользователь на странице логина.
Можно задать требование ввода логина пользователем в формате UPN с помощью следующей настройки (см. Работа с несколькими доменами):
<ActiveDirectory requiresUserPrincipalName="true"> </ActiveDirectory>
Альтернативно, можно разрешить ввод логина пользователем в любом формате, но включить преобразование логина в UserPrincipalName (UPN) при отправке запроса доступа в MULTIFACTOR с помощью следующей настройки:
<add key="use-upn-as-identity" value="true"/>
В: Как исправить ошибку "Не удается прочитать файл конфигурации из-за недостаточных разрешений"?
О: Дать разрешения группе IIS_IUSRS
Смотрите также:
- Двухфакторная аутентификация Windows VPN со службой Routing and Remote Access Service (RRAS)
- Двухфакторная аутентификация Microsoft Remote Desktop Gateway