Публикация Exchange Server поможет в решении задачи удаленного доступа к почтовой инфраструктуре из сети Интернет. Разнообразие средств довольно велико. Среди них присутствуют как коммерческие решения, так и решения с открытым кодом. В рамках данной статьи, будет рассмотрен вариант использования служб федерации Active Directory (ADFS) и их компонента Web Application Proxy.
Публикация Exchange Server с помощью ADFS / Web Application Proxy
Ранее, в 2014 году, я уже затрагивал данную тему в одноименном цикле статей. Тогда преаутентификация достигалась с помощью Integrated Windows Authentication, публикация с помощью WAP. Основная проблема данного метода в том, что сервера WAP должны были присутствовать в домене Active Directory. Это, в свою очередь, накладывало определенные ограничения и вопросы с точки зрения сетевой безопасности.
С того времени произошло уж очень много интересного в развитии продуктов. Во-первых, начиная с Exchange 2013 SP1 появилась возможность аутентификации в OWA и ECP с помощью ADFS. Во-вторых, сервисы федерации обзавелись новым функционалом безопасности. Это дает хорошее основание переписать материал используя новые возможности продуктов. В более ранних статьях я уже делал обзор и развертывание служб федерации. Они пригодятся, если ранее вы не сталкивались с конфигурированием данного сервиса:
Итак, в контексте задачи публикации Exchange Server, компоненты служб федерации будут выполнять следующее:
- ADFS ответственен за аутентификацию пользователей в веб-приложениях OWA и ECP. На основе доменной аутентификации будут создаваться пользовательские токены безопасности, которым Exchange Server будет доверять.
- На плечи Web Application Proxy возложена задача проксирования запросов аутентификации на сервера ADFS фермы и проксирование https запросов от клиентов к Exchange инфраструктуре. Другими словами, WAP выступает в качестве реверс-прокси сервера.
К процессу публикации стоит относить не только OWA и ECP, но и другие веб сервисы Exchange. Например, веб-каталоги ActiveSync, EWS и другие. Для их публикации будет использоваться Pass-through метод преаутентификации службами ADFS.
Подготовка служб ADFS к публикации Exchange
Первый шаг состоит в подготовке служб ADFS к публикации Exchange. Но, перед тем как начинать, в Exchange инфраструктуре должны быть корректно настроены URL адреса веб-каталогов OWA и ECP. Если это не сделано, статья “Конфигурирование пространства имен в Exchange Server” поможет вам в этом.
В самом ADFS потребуется создать два новых отношения доверия с проверяющей стороной (Relying Party Trust) для OWA и ECP. В этом поможет PowerShell скрипт, который необходимо выполнить на master ноде:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | $owaURL="https://mail.ait.in.ua/owa" # URL веб-каталога OWA $ecpURL="https://mail.ait.in.ua/ecp" # URL веб-каталога ECP $IssuanceAuthorizationRules=@' @RuleTemplate = "AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true"); '@ $IssuanceTransformRules=@' @RuleName = "ActiveDirectoryUserSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value); @RuleName = "ActiveDirectoryGroupSID" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid"), query = ";tokenGroups(SID);{0}", param = c.Value); @RuleName = "ActiveDirectoryUPN" c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value); '@ Add-ADFSRelyingPartyTrust -Name "Outlook Web App" -Enabled $true -WSFedEndpoint $owaURL -Identifier $owaURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules Add-ADFSRelyingPartyTrust -Name "Exchange Control Panel" -Enabled $true -WSFedEndpoint $ecpURL -Identifier $ecpURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules |
Не забудьте поменять переменные URL адресов OWA и ECP на собственные.
Результат его работы:

Интеграция Exchange инфраструктуры с ADFS
На каждом сервере Exchange c Client Access Services необходимо выполнить еще один PowerShell скрипт:
1 2 3 4 5 6 7 8 9 | $ADFSSigningCertificateThumbprint="2F4A8553226E3AC3BCDBA171A4F73E9B23A486DD" # Thumbprint $owaURL="https://mail.ait.in.ua/owa" $ecpURL="https://mail.ait.in.ua/ecp" $ADFSIssuerURL="https://sts.ait.in.ua/adfs/ls/" # URL ADFS фермы $uris = @($owaURL,$ecpURL) Set-OrganizationConfig -AdfsIssuer $ADFSIssuerURL -AdfsAudienceUris $uris -AdfsSignCertificateThumbprint $ADFSSigningCertificateThumbprint 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 |
Обратите внимание, что указаны переменные ADFSSigningCertificateThumbprint и ADFSIssuerURL. Значение первой можно получить в оснастке ADFS:

Открыв свойства сертификата ADFS Signing. Более подробно о типах SSL сертификатов в ADFS можно ознакомится в этой статье.

Этот сертификат необходимо экспортировать и импортировать в доверенные ЦС каждого Exchange сервера.
Значение второй переменной можно получить подставить FQDN фермы ADFS. Выполняем его в Exchange Management Shell.

Перегружаем IIS командой IISReset.
После перезагрузки веб сервера и его инициализации можно выполнить проверку работоспособности. Перейдем на URL ECP.

Автоматически отработает перенаправление на страницу входа ADFS, где необходимо пройти аутентификацию.
В случае если ADFS Signing сертификат не был импортирован в доверенные ЦС Exchange сервера, будет получена ошибка WrongAudienceUriOrBadSigningCert:

После добавления сертификата ошибка пропала, и аутентификация в Exchange с помощью ADFS получилась.

Публикация Exchange с помощью Web Application Proxy
Завершающим шагом будет публикация веб-каталогов Exchange сервера в сеть Интернет. Перейдем на сервер Web Application Proxy и откроем оснастку управления. В ней необходимо запустить мастер добавления новой публикации и выбрать тип ADFS:

Далее, выбираем тип преаутентификации MSOFBA:

На следующей странице выбираем из списка Exchange Control Panel:

На завершающем этапе, добавляем конфигурацию публикации:

Аналогичным образом настраиваем OWA.
Оставшиеся каталоги (RPC, EWS, OAB, Autodiscover), будут опубликованы так же, но с отличием в методе преаутентификации. Они не могут использовать аутентификацию на основе утверждений, поэтому будет использоваться Pass–through. Единственное исключение составит каталог Autodiscover, так как в его случае публикация осуществляется отдельного поддомена autodiscover. Это требование работы механизма, заложенного в процесс автообнаружения конфигурации Exchange.
В перечисленных выше веб-каталогах отсутствует каталог, отвечающий за подключение мобильных клиентов по протоколу ActiveSync. Начиная с версии ADFS 4.0 (Windows Server 2016), в функционале служб федерации появилась поддержка метода аутентификации HTTP Basic. Этот факт позволит выполнять преаутентификацию клиентов службами федерации, а не перенаправлять не аутентифицированные запросы прямиком на Exchange инфраструктуру. О том как это настроить, в скором времени, выйдет отдельная статья.
На этом все. Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.
Добрый день,
Спасибо большое за статью. Хотел бы у Вас уточнить:
“Публикация Exchange Server поможет в решении задачи удаленного доступа к почтовой инфраструктуре из сети Интернет. Разнообразие средств довольно велико. Среди них присутствуют как коммерческие решения, так и решения с открытым кодом.”
Какие бы Вы посоветовали решения с открытым кодом, которые могли бы заменить ADFS ?
Технически можно использовать это https://docs.nginx.com/nginx/deployment-guides/load-balance-third-party/microsoft-exchange/
Но NGINX Plus платное решения ?
да, прошу прощения чуть не то сбросил. Можно использовать бесплатную версию. Вот пример https://gist.github.com/Brainiarc7/439e2cdf1dfc5482a4e9 Но лучшим решением будет все же WAP
Не сталкивались с такой ошибкой: при доступе в owa через браузер chrome после авторизации на сервере adfs выдает ошибку HTTP ERROR 401.
В остальных браузерах (ie, firefox, opera) все в порядке. ОС win server 2012, exchange 2013.
К сожалению нет.
при подключении из интернета к OWA нужно публиковать наружу ADFS? Как происходит переадресация?
Добрый день. В тексте указана статья про адфс и активсинк. Можно на неё ссылочку?