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

Портал для пользователей Active Directory

MultiFactor SelfService Portal веб-сайт, портал самообслуживания для пользователей Active Directory, единая точка входа (Single Sign-On) для корпоративных приложений по протоколам аутентификации SAML, OpenID Connect / OAuth.

Портал доступен вместе с исходным кодом, распространяется бесплатно по лицензии MIT. Актуальная версия находится на GitHub: код и сборка.

Перед началом работы

  1. Зайдите в личный кабинет Мультифактора, далее в разделе "Ресурсы" создайте новый ресурс типа "Сайт" - "Self-Service портал":
    • название и адрес: произвольные;
    • регистрировать новых пользователей: да;
    • при подключении без настроенного второго фактора: включить самостоятельную настройку;
  2. После создания вам будут доступны параметры API Key и API Secret, они потребуются для настройки портала.

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

  • Портал устанавливается на любой Windows сервер начиная с версии 2012 R2;
  • Сервер должен быть присоединен к домену;
  • Серверу с установленным порталом необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS).
  • На сервере должна быть установлена роль Web Server (IIS) с компонентом Application Development -> ASP.NET 4.6 (или выше);

Параметры портала

Параметры работы портала хранятся в файле Web.config в формате XML.

Web.config
<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"/> -->

<!-- [Опционально] Использовать номер телефона из Active Directory для отправки одноразового кода в СМС (не используется, если удалить настройку) -->
<!-- <add key="use-active-directory-user-phone" value="true"/> -->
<!-- <add key="use-active-directory-mobile-user-phone" value="true"/> -->

<!-- Адрес API Мультифактора -->
<add key="multifactor-api-url" value="https://api.multifactor.ru" />
<!-- Параметр API KEY из личного кабинета Мультифактора -->
<add key="multifactor-api-key" value="" />
<!-- Параметр API Secret из личного кабинета Мультифактора -->
<add key="multifactor-api-secret" value="" />

<!-- [Опционально] Доступ к API Мультифактора через 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"/> -->

<!-- Передавать userPrincipalName (UPN) в качестве логина пользователя в Мультифактор -->
<!-- <add key="use-upn-as-identity" value="true"/> -->

<!-- [Опционально] Включить управление устройствами ActiveSync (см. раздел "Управление устройствами Exchange ActiveSync") -->
<!-- <add key="enable-exchange-active-sync-devices-management" value="true"/> -->

<!-- [Опционально] Новым пользователям при регистрации будут назначены эти группы из личного кабинета Мультифактора -->
<!-- <add key="sign-up-groups" value="Группа1;группа два;group3"/> -->
</portalSettings>

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

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

Проверка Captcha

Для защиты от автоматизированного перебора паролей от учётных записей на странице входа в портале предусмотрена возможность проверки пользователя с помощью теста Captcha. В качестве провайдера сервиса поддерживается Google reCAPTCHA.

Web.config
<!-- Включить проверку 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"/>
<!-- Где показывать Captcha: 'Always', 'PasswordRecovery' -->
<add key="require-captcha" value="Always" />

Управление паролями

Портал самообслуживания позволяет пользователям управлять своими доменными паролями: менять текущий пароль, менять истекший пароль, восстанавливать забытый пароль.

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

Web.config
<!-- Управление паролями на портале. 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 самостоятельно (без вовлечения технической поддержки организации) менять забытые и утерянные пароли.

Условия для работы:

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

Web.config
<!-- Восстановление забытых паролей. true: включить, false: выключить (по умолчанию) -->
<add key="enable-password-recovery" value="true" />

Установка портала

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

Обновление портала

  1. Сделать резервную копию файла конфигурации Web.config в папке с порталом;
  2. Удалить содержимое папки с порталом;
  3. Скачать свежую сборку (или собрать из исходного кода), распаковать в папку с порталом;
  4. Перенести в Web.config пользовательские параметры из резервной копии файла конфигурации (разделы <portalSettings> и <ActiveDirectory>, если был указан).

Журналы

Журналы работы портала находятся в папке Logs в директории со сборкой портала. Если папки Logs нет, создайте её и удостоверьтесь, что она доступна для записи локальному пользователю IIS AppPool\DefaultAppPool.

Syslog

Для записи журналов в Syslog сервер или SIEM систему, добавьте в раздел конфигурации <portalSettings> следующие параметры:

Web.config
<!-- Адрес и порт сервера, протокол может быть 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"/>

Работа с несколькими доменами

Портал при запуске находит все доверенные домены и может проводить аутентификацию пользователя в любом из них. Вы можете отдельно настроить список разрешенных или список запрещенных доменов. Для этого в раздел <configuration> добавьте следующие строки после закрывающего тэга </portalSettings>:

Web.config
<ActiveDirectory requiresUserPrincipalName="true">
<!-- Ограничить домены списком ниже /-->
<IncludedDomains>
<add name="dom1.loc"/>
<add name="dom2.loc"/>
</IncludedDomains>
<!-- Или все домены, кроме перечисленных ниже /-->
<ExcludedDomains>
<add name="dom3.loc"/>
<add name="dom4.loc"/>
</ExcludedDomains>
</ActiveDirectory>

Использование

Портал доступен по адресу https://ваш_домен.ru/mfa


Управление устройствами Exchange ActiveSync

В Exchange сервере предусмотрен механизм карантина ActiveSync устройств. Сразу же после подключения мобильной почты, устройств попадает в карантин и может быть одобрено или отклонено для использования администратором Exchange сервера. До одобрения мобильная почта не работает, а единственное письмо, которое придет на устройство в карантине это информация, что устройство ожидает подтверждения администратором.

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

Управление ActiveSync на портале по умолчанию выключено. Для включения, выполните настройки ниже.

Настройка Exchange

  1. Зайдите в центр администрирования Exchange, раздел "Мобильные устройства", нажмите "Изменить".
  2. Включите карантин
  3. В шаблон письма для пользователя вставьте сообщение и ссылку на портал.

Настройка портала

  1. Добавьте в конфигурацию ключ
<add key="enable-exchange-active-sync-devices-management" value="true"/>
  1. Разрешите порталу работать с 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?

О: В целях безопасности подтверждение второго фактора при входе на портал в режиме самообслуживания требуется для всех пользователей. Задать исключения можно на уровне групповой политики в панели управления Мультифактор.

Запрашивать второй фактор только у пользователей из указанной группы AD можно в режиме единого входа (SSO) с помощью следующей настройки:

<add key="active-directory-2fa-group" value="2FA Users"/>

В: Какие командлеты PowerShell использует портал для работы с устройствами Exchange ActiveSync?

О: Работа идёт напрямую с Active Directory, без командлетов.

Пользователю, под которым запущен сайт в IIS необходимы права на чтение и запись следующих LDAP атрибутов в контейнере пользователей:

На чтение:

  1. Объекты User
distinguishedName
  1. Объекты msExchActiveSyncDevice
msExchDeviceID
msExchDeviceFriendlyName
msExchDeviceModel
msExchDeviceType
whenCreated
msExchDeviceAccessState
msExchDeviceAccessStateReason
objectClass

На запись:

  1. Объекты User
msExchMobileAllowedDeviceIDs
msExchMobileBlockedDeviceIDs
  1. Объекты 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 в Мультифактор?

О: По умолчанию, логин пользователя передается в Мультифактор в формате, в котором его вводит пользователь на странице логина.

Можно задать требование ввода логина пользователем в формате UPN с помощью следующей настройки (см. Работа с несколькими доменами):

<ActiveDirectory requiresUserPrincipalName="true">
</ActiveDirectory>

Альтернативно, можно разрешить ввод логина пользователем в любом формате, но включить преобразование логина в UserPrincipalName (UPN) при отправке запроса доступа в Мультифактор с помощью следующей настройки:

<add key="use-upn-as-identity" value="true"/>

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