Общие сведения
Avanpost FAM позволяет обеспечить двухфакторную аутентификацию (2FA), многофакторную аутентификацию (MFA) и Single-Sign On (SSO) для пользователей, выполняющих подключение к почтовому веб-клиенту Exchange Outlook Web Access (OWA) и административному веб-интерфейсу Exchange Control Panel (ECP) из состава Microsoft Exchange. В инструкции описывается настройка 2FA для OWA и ECP по протоколу SAML с использованием Microsoft AD FS (Microsoft Active Directory Federation Services) в роли WS-Federation Identity Provider.
Для Microsoft Exchange Outlook Web Access при использовании Avanpost FAM посредством SAML через AD FS могут использоваться следующие факторы аутентификации:
- Мобильное приложение Avanpost Authenticator (push + TOTP);
- SMS;
- TOTP;
- E-mail;
- Мессенджер Telegram;
- Электронная подпись;
- FIDO WebAuthn/U2F;
- Доменная Kerberos-аутентификация;
- ЕСИА (Единая система идентификации и аутентификации) в режиме Federation;
- OpenID Connect-провайдер в режиме Federation;
- SAML-провайдер в режиме Federation.
Необходимость использования Microsoft AD FS обоснована наличием поддержки на стороне Microsoft Exchange OWA и Microsoft Exchange CP протокола WS-Federation, не совместимого со стандартным для таких задач протоколом SAML. Поэтому Microsoft AD FS выступает в данной схеме в качестве средства трансляции SAML-взаимодействия между Avanpost FAM и AD FS в WS-Federation-взаимодействие между AD FS и Exchange OWA/Exchange ECP.
Системные требования для интеграции Microsoft Exchange Outlook Web Access:
- Сервер Avanpost FAM 1.4.0 или выше;
- Сервер Microsoft Exchange 2016+ с настроенным веб-приложением Outlook Web Access.
- Сервер Microsoft Active Directory Federation Services (AD FS).
Для выполнения настройки 2FA/MFA/SSO в соответствии с инструкцией необходимо выполнить следующие предварительные условия:
- Установить в сети сервер Microsoft Exchange и опубликовать веб-приложение Outlook Web Access;
- Установить в сети сервер Microsoft AD FS, обеспечить сетевую доступность для сервера Avanpost FAM;
- Установить в сети компонент Avanpost FAM Server, обеспечить сетевую доступность с сервера Microsoft Exchange интерфейса аутентификации SAML развёрнутой системы Avanpost FAM (как минимум документа
http(s)://%Avanpost_FAM_base_URL%/.well-known/samlidp.xml).
Дополнительно может потребоваться при необходимости аутентификации:
- через мобильное приложение Avanpost Authenticator – установить компоненты Avanpost FAM Mobile Services;
- через мобильное приложение SafeTech PayControl – установить сервер SafeTech PayControl;
- через SMS – настроить подключение к внешнему SMS-шлюзу, который предоставляет услугу доставки SMS-сообщений;
- через E-mail – настроить подключение к SMTP-шлюзу, который обеспечивает доставку почтовых сообщений;
- через Telegram – настроить подключение к Telegram Bot API;
- посредством электронной подписи – настроить криптопровайдер и установить плагин в браузер;
- посредством FIDO WebAuthn/U2F – настроить сертификат;
- посредством Kerberos – настроить keytab-файл;
- посредством Federation через ЕСИА – настроить подключение к ЕСИА;
- посредством Federation через OpenID Connect-провайдер – настроить подключение к OpenID Connect-провайдеру;
- посредством Federation через SAML-провайдер – настроить подключение к SAML-провайдеру.
Настройка на стороне сервера Microsoft Exchange
Настройку на стороне сервера Microsoft Exchange необходимо выполнять следующим образом:
- От имени администратора открыть Powershell (нажать Win+R и ввести
powershell) и перейти в консоль PowerShell Exchange при помощи команды:Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
В консоли PowerShell Exchange на стороне сервера Microsoft Exchange подготовить и выполнить с правами администратора указанный ниже скрипт, внеся целевые значения параметров вместо
%заменителей%:$ADFSSigningCertificateThumbprint="%значение_отпечатка_сертификата_на_стороне_AD_FS%" $owaURL="%URL-адрес_OWA%" $ecpURL="%URL-адрес_ECP%" $ADFSIssuerURL="%URL-адрес_Issuer_AD_FS%" $uris = @($owaURL,$ecpURL) Set-OrganizationConfig -AdfsIssuer $ADFSIssuerURL -AdfsAudienceUris $uris -AdfsSignCertificateThumbprints $ADFSSigningCertificateThumbprints Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false
где PowerShell-переменная:
$ADFSSigningCertificateThumbprintsсодержит отпечаток (thumbprint) сертификата на стороне AD FS (пример значения – «2F4A8553226E3AC3BCDBA171A4F73E9B23A486DD»); целевое значение параметра следует указать вместо заменителя%значение_отпечатка_сертифката_на_стороне_AD_FS%; методика получения отпечатка сертификата описана в Приложении 1 текущей инструкции;$owaURLсодержит URL-адрес веб-интерфейса Exchange OWA (пример значения – «https://mail.avanpost.ru/owa»); целевое значение параметра следует указать вместо заменителя%URL-адрес_OWA%;$ecpURLсодержит URL-адрес веб-интерфейса ECP (пример значения – «https://mail.avanpost.ru/ecp»); целевое значение параметра следует указать вместо заменителя%URL-адрес_ECP%;$ADFSIssuerURLсодержит URL-адрес сервера аутентификации (пример значения – «https://adfs.avanpost.ru/adfs/ls/»); целевое значение параметра следует указать вместо заменителя%URL-адрес_Issuer_AD_FS%.
- Убедиться в корректности настройки интеграции Microsoft Exchange и AD FS. Для этого следует запросить параметры конфигурации Microsoft Exchange, связанные с AD FS, посредством команды:
Get-OrganizationConfig | f1 Adfs*
Настройка на стороне сервера AD FS
Настройку на стороне сервера AD FS необходимо выполнять следующим образом:
- От имени администратора открыть Powershell.
Через PowerShell выполнить сценарий с правами администратора на сервере AD FS, создающий «Доверие проверяющей стороны» (Relying Party Trust) для Exchange OWA и Exchange CP (либо выполнить настройку через графический интерфейс AD FS вместо выполнения PowerShell-команды в соответствии с Приложением 2 текущей инструкции):
$owaURL="%URL-адрес_OWA%" $ecpURL="%URL-адрес_ECP%" $IssuanceAuthorizationRules=@' @RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true"); '@ $IssuanceTransformRules=@' @RuleName = "UPN" c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"] => issue(claim = c); '@ Add-ADFSRelyingPartyTrust -Name "OWA" -Enabled $true -WSFedEndpoint $owaURL -Identifier $owaURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules Add-ADFSRelyingPartyTrust -Name "ECP" -Enabled $true -WSFedEndpoint $ecpURL -Identifier $ecpURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules
где PowerShell-переменная:
$owaURLсодержит URL-адрес веб-интерфейса Exchange OWA (пример значения – «https://mail.avanpost.ru/owa»); целевое значение параметра следует указать вместо заменителя%URL-адрес_OWA%;$ecpURLсодержит URL-адрес веб-интерфейса ECP (пример значения – «https://mail.avanpost.ru/ecp»); целевое значение параметра следует указать вместо заменителя%URL-адрес_ECP%.
Через PowerShell выполнить сценарий с правами администратора на сервере AD FS, создающий «Доверие поставщиков утверждений» (Claims Provider Trust) для Avanpost FAM (либо выполнить настройку через графический интерфейс AD FS в соответствии с Приложением 3 текущей инструкции):
$AvanpostFAMMetadataURL="%URL-адрес_SAML_Discovery-документа_Avanpost_FAM%" $AcceptanceTransformRules=@' @RuleName = "UPN" c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"] => issue(claim = c); '@ Add-AdfsClaimsProviderTrust -Name "Avanpost FAM" -Enabled $true -AcceptanceTransformRules $AcceptanceTransformRules -MetadataURL $AvanpostFAMMetadataURLгде PowerShell-переменная:
$AvanpostFAMMetadataURLсодержит URL-адрес SAML Discovery-документа Avanpost FAM (обычноhttp(s)://%Avanpost_FAM_base_URL%/.well-known/samlidp.xml, где%Avanpost_FAM_base_URL%– базовый URL Avanpost FAM); целевое значение параметра следует указать в PowerShell-сценарии вместо заменителя%URL-адрес_SAML_Discovery-документа_Avanpost_FAM%.
Настройка на стороне Avanpost FAM
Перед настройкой следует убедиться, что скорректированы CSP (Content-Security-Policy) на стороне сервера Nginx, где располагается Avanpost FAM. В секции location должна быть предусмотрена следующая строка:
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https: *; style-src 'self' 'unsafe-inline' *; connect-src 'self' *; script-src 'self' 'unsafe-inline' https://idp.avanpost.local;";
Настройку на стороне административной консоли Avanpost FAM необходимо выполнять следующим образом:
- Перейти во вкладку создания приложения, нажав кнопку "Добавить приложение" в сервисе "Приложения".
На этапе "Основные настройки" требуется ввести наименование (например,
AD FS) и выбрать тип SAML (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление SAML-приложениями).- На этапе "Настройки интеграции" необходимо установить настройки приложения (в URL, представленных в таблице в качестве примеров, вместо значения “ADFS” необходимо указывать DNS сервера, на котором развернут Avanpost FAM ADFS Plugin):
Параметр Значение Issuer http://ADFS/adfs/services/trustACS http://ADFS/adfs/lsBase URL http://ADFS/adfs/ks/idpinitiatedsignonBackchannel-logout URL http://ADFS/adfs/logoutПодпись Рекомендуется выбрать " Подписывать сообщение".Значение NameID Рекомендуется выбрать " Адрес электронной почты". - На этапе "Настройки аутентификации" выбрать факторы аутентификации для приложения, установив переключатели напротив тех или иных факторов.
- На этапе "Завершение" установить флажок "Сделать приложение активным" и сохранить.
- Перейти в профиль созданного приложения из режима "Приложения" и войти во вкладку "Attributes".
- Добавить следующие атрибуты для схем утверждений (claims):
Наименование атрибута Тип атрибута Описание http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressЗначение из атрибута Данному атрибуту присваивается значение электронной почты пользователя. http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameЗначение из атрибута Данному атрибуту присваивается значение основных атрибутов имени и фамилии пользователя. http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnЗначение из атрибута Данному атрибуту присваивается значение дополнительного атрибута UPN. - Во вкладке "Настройки" рекомендуется присвоить параметру
Signing AlgorithmзначенияSHA-256. - Проверить корректность настроек и нажать кнопку "Сохранить".
После завершения настройки рекомендуется:
- выполнить проверку корректности настройки в соответствии с данной инструкцией
- отключить вход через Active Directory на стороне AD FS в соответствии с Приложением 4 текущей инструкции.
Для корректной обработки процедуры выхода Single Logout ADFS должен инициировать Logout-запрос на SAML Logout Endpoint на стороне FAM по следующему алгоритму:
- Выполнение процедуры Logout из Exchange.
- Exchange должен послать Logout-запрос в ADFS по стандарту WS-Federation.
- ADFS должен отправить Logout-запрос в SAML Logout Endpoint Avanpost FAM.
Проверка настройки
Перед проверкой настройки необходимо выполнить следующие условия:
- Пользователь имеет доступ к приложению AD FS в Avanpost FAM через группы (более подробно описано в статье Управление доступом).
- У пользователя выполнена настройка необходимого аутентификатора (фактора аутентификации).
- У пользователя должен быть заполнен атрибут «E-mail».
- Проверяемый пользователь может быть идентифицирован Microsoft Exchange по значению E-mail, передаваемому в соответствующий атрибут UPN в ADFS и далее ретранслируемому средствами ADFS в Microsoft Exchange OWA и Microsoft ECP.
Выполнять проверку настройки требуется следующим образом:
- Инициировать выполнение аутентификации в Microsoft Exchange OWA или Microsoft ECP через браузер.
- Дождаться, когда Microsoft Exchange перенаправить пользователя в AD FS.
- На стороне AD FS выбрать вариант входа через Avanpost FAM.
- Используя веб-интерфейс аутентификации Avanpost FAM, пройти аутентификацию с использованием настроенного сценария.
- После завершения аутентификации пользователь должен авторизоваться в Microsoft Exchange OWA или Microsoft ECP.
В случае успешного выполнения указанной проверки настройка интеграции считается завершенной.
Диагностика ошибок
Сбор диагностической информации может осуществляться следующими способами:
- Сбор сообщений об ошибке в браузере при взаимодействии с Microsoft Exchange OWA или Microsoft ECP в процессе аутентификации;
- Сбор сообщений об ошибке в браузере при взаимодействии с Microsoft AD FS в процессе аутентификации;
- Сбор сообщений об ошибке через eventvwr.msc на сервере Microsoft Exchange;
- Сбор сообщений об ошибке через eventvwr.msc на сервере Microsoft AD FS;
- Сбор сообщений об ошибке через systemctl для службы Avanpost FAM или просмотр файла журнала на сервере Avanpost FAM.
| Место фиксации ошибки | Сообщение об ошибке | Причина и способ устранения |
|---|---|---|
| Браузер при аутентификации на стороне Microsoft Exchange OWA или Microsoft ECP | WrongAudienceUriOrBadSigningCert | Сертификат AD FS Signing не является доверенным для Microsoft Exchange сервера. Требуется выполнить импорт сертификата AD FS Signing в доверенные ЦС Exchange либо настроить доверие средствами инфраструктуры Microsoft. |
| Браузер при аутентификации на стороне Microsoft Exchange OWA или Microsoft ECP | UpnClaimMissing | В составе WS-Federation-ответа от ADFS отсутствует Claim UPN, содержащий UserPrincipalName. Требуется проверить корректность выполнения настроек «Доверия проверяющей стороны» на стороне AD FS. |
Приложение 1. Получение отпечатка (thumbprint) сертификата AD FS Signing
Для получения отпечатка сертификата AD FS Signing на сервере с AD FS открыть панель управления AD FS, далее открыть раздел «Служба» → «Сертификаты» и найти сертификат с «CN=ADFS Signing». В меню выбрать пункт «Просмотр сертификата» и скопировать его отпечаток:
Отпечаток (thumbprint) сертификата AD FS Signing получен и может быть использован в настройке.
Приложение 2. Добавление доверия проверяющей стороны (Relying Party Trust) OWA и ECP на стороне AD FS через панель управления AD FS
Данный вариант настройки подойдёт в качестве альтернативы при невозможности выполнения настройки через консоль AD FS PowerShell, описанную в основном разделе настройки.
Через консоль управления AD FS добавить «Доверие проверяющей стороны» на OWA и ECP, где в «Мастере добавления отношений доверия проверяющей стороны» на вкладке:
- «Добро пожаловать» – выбрать вариант – «поддерживающее утверждения»:
- «Выбор источника данных» – «Ввод данных о проверяющей стороне вручную»:
- «Отображаемое имя» – «OWA»:
- «Настройка сертификата» – через кнопку «Обзор» указать доверенный сертификат (файл сертификата с Avanpost FAM):
- «Настройка URL-адреса» – включить чекбокс «Включить поддержку пассивного протокола WS-Federation» и указать для параметра «URL-адрес пассивного протокола WS-Federation проверяющей стороны» в качестве значения URL, на котором размещён Exchange OWA (например, «
https://mail.avanpost.ru/owa»): - «Настройка идентификатора» – указать значение, аналогичное указанному на предыдущей вкладке (например, «https://mail.avanpost.ru/owa»):
- «Выбрать политику управления доступом» – выбрать вариант «Разрешение для каждого», если не требуется применение другой политики доступа со стороны Microsoft AD FS либо со стороны Microsoft Exchange:
- «Готовность для добавления отношения доверия» – оставить по умолчанию.
Сохранить внесённые изменения.
Приложение 3. Добавление доверия поставщика утверждений Avanpost FAM (Claims Provider Trust) на стороне AD FS через панель управления AD FS
http(s)://%Avanpost_FAM_base_URL%/.well-known/samlidp.xml
- Через консоль управления AD FS добавить «Доверие поставщика утверждений» (Claims Provider Trust) к Avanpost FAM, где в «Мастере добавления отношений доверия поставщиков утверждений» на вкладке «Выбор источника данных» – для параметра «Адрес метаданных федерации» указать в качестве значения URL SAML Discovery-документа Avanpost FAM (обычно
http(s)://%Avanpost_FAM_base_URL%/.well-known/samlidp.xml,где%Avanpost_FAM_base_URL%– базовый URL Avanpost FAM; пример значения для параметра –https://famdemo.avanpost.ru/.well-known/samlidp.xml): - Далее перейти в свойства созданной на предыдущем шаге записи доверия поставщика утверждений и открыть вкладку «Сертификаты». На данной вкладке необходимо добавить в доверенные корневые центры сертификации файл сертификата с Avanpost FAM:
- Далее выбрать в списке созданную запись доверия поставщика утверждений и открыть меню «Изменить правила утверждений»:
- Для того, чтобы ADFS извлекал необходимое для Microsoft Exchange утверждение из SAML Response, формируемого Avanpost FAM (в нашем случае – UPN, UserPrincipalName), необходимо добавить правило, выбрав шаблон «Проход через входящие утверждения или его фильтрация»:
- На следующем шаге необходимо указать в параметре «Имя правила утверждения» – «UPN», выбрать тип входящего утверждения — «UPN» и выбрать вариант «Пройти по всем значениям утверждений»:
Сохранить внесённые изменения.
Приложение 4. Отключение в AD FS стандартного метода аутентификации через Active Directory
Отключение стандартного метода входа в Microsoft Outlook Web Access через Active Directory позволяет:
- Исключить аутентификацию только по доменному логину и паролю в обход функции 2FA/MFA, обеспечиваемой интеграцией с Avanpost FAM;
- Обеспечить прозрачное автоматическое перенаправление пользователя с ADFS на аутентификацию через Avanpost FAM.
Для выполнения такой настройки в PowerShell на сервере Microsoft AD FS версии 2019 и старше следует выполнить от имени администратора команду:
Set-ADFSProperties -EnableLocalAuthenticationTypes $false
Для предыдущих версии Microsoft AD FS (младше 2019) можно использовать команду
Set-ADFSProperty -EnableLocalAuthenticationTypes $false
Для отмены выполненной настройки и возврата возможности вход через Active Directory следует выполнить такую же команду, заменив значение $false на $true.












