Публикация Exchange Server поможет в решении задачи удаленного доступа к почтовой инфраструктуре из сети Интернет. Разнообразие средств довольно велико. Среди них присутствуют как коммерческие решения, так и решения с открытым кодом. В рамках данной статьи, будет рассмотрен вариант использования служб федерации Active Directory (ADFS) и их компонента Web Application Proxy.
Публикация Exchange Server с помощью ADFS / Web Application Proxy
Итак, в контексте задачи публикации 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.
В самом ADFS потребуется создать два новых отношения доверия с проверяющей стороной (Relying Party Trust) для OWA и ECP. В этом поможет PowerShell скрипт, который необходимо выполнить на master ноде:
$owaURL="https://mail.ithelpspb.blogspot.com/owa" # URL веб-каталога OWA
$ecpURL="https://mail.ithelpspb.blogspot.com/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 скрипт:
$ADFSSigningCertificateThumbprint="2F4A8553226E3AC3BCDBA171A4F73E9B23A486DD" # Thumbprint
$owaURL="https://mail.ithelpsb.blogspot.com/owa"
$ecpURL="https://mail.ithelpsb.blogspot.com/ecp"
$ADFSIssuerURL="https://sts.ithelpsb.blogspot.com/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:
Этот сертификат необходимо экспортировать и импортировать в доверенные ЦС каждого Exchange сервера.
Значение второй переменной можно получить подставить FQDN фермы ADFS. Выполняем его в Exchange Management Shell.
Перегружаем IIS командой IISReset.
После перезагрузки веб сервера и его инициализации можно выполнить проверку работоспособности. Перейдем на URL ECP.
Автоматически отработает перенаправление на страницу входа ADFS, где необходимо пройти аутентификацию.
В случае если ADFS Signing сертификат не был импортирован в доверенные ЦС Exchange сервера, будет получена ошибка WrongAudienceUriOrBadSigningCert:
Публикация 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 инфраструктуру. О том как это настроить, в скором времени, выйдет отдельная статья.
На этом все. Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.