Включение Modern Auth для Exchange и его работа с ADFS Extension
Автор Igor Kuzmin, Last modified by Igor Kuzmin на 09 сентября 2026 11:12 AM

Включение Modern Auth для Exchange и его работа с Indeed ADFS Extension

Exchange Server 2019 CU15 поддерживает OAuth 2.0 (Modern Authentication) c использованием ADFS в качестве службы токенов безопасности (STS). После включения Modern Authentication клиент Outlook перенаправляет пользователя на сервер ADFS, где в качестве дополнительного метода аутентификации будет использоваться провайдер Indeed AMВ статье описаны предварительные требования, порядок настройки Modern Authentication и пример работы с Indeed ADFS Extension.
За основу статьи взята официальная документация Microsoft по настройке Modern Authentication в Exchange Server с использованием ADFS

Предусловия

  • Exchange Server 2019 CU15 
  • Microsoft Outlook (Classic)
  • Microsoft Windows 11 22H2 и позднее с обновлением KB5023706 от 14 марта 2023 года
  • ADFS 2019 и позднее с английской локализацией с предварительно настроенным ADFS Extension по инструкции 
  • В DNS настроена CNAME-запись autodiscover.<домен> на FQDN Exchange Server
  • Между Exchange Server, ADFS и клиентскими компьютерами настроено доверие к используемым сертификатам.

    Поддерживаемые клиентские платформы

    В рамках данной конфигурации поддерживаются:

    • Outlook для Windows (Classic) 2021 Retail сборка от 16327.20214, 2024 Retail сборка от 18129.20158, 2024 Volume сборка от 17932.20162;

    • Outlook для Mac (Microsoft 365) на поддерживаемых версиях macOS;

    • Apple Mail на поддерживаемых версиях iOS и macOS.

    Outlook для Windows (New) в данной конфигурации не поддерживается. Для сценария, описанного в статье, рекомендуется использовать Outlook для Windows (Classic) на поддерживаемой версии Windows.

    Проверка Autodiscover

    Перед началом настройки Modern Authentication необходимо убедиться, что Autodiscover работает корректно.

    Проверить конфигурацию виртуального каталога:

    Get-AutodiscoverVirtualDirectory | Format-List Server,InternalUrl,ExternalUrl,*Authentication*

    Если InternalUrl и/или ExternalUrl не настроены, необходимо указать их:

    Set-AutodiscoverVirtualDirectory -Identity "EXCHANGE\Autodiscover (Default Web Site)" `
    -InternalUrl "https://autodiscover.company.com/Autodiscover/Autodiscover.xml" `
    -ExternalUrl "https://autodiscover.company.com/Autodiscover/Autodiscover.xml"

    Настройка времени жизни SSO и KMSI в ADFS

    Можно включить функцию Keep Me Signed In (KMSI), после успешной аутентификации ADFS создает постоянную cookie. Пока cookie остается действительной, пользователю не требуется повторно проходить аутентификацию.

    Для включения выполните:

    Set-AdfsProperties -EnableKmsi $true
    

    При отключенном KMSI время жизни SSO по умолчанию составляет 480 минут (8 часов).

    Параметр задается в минутах:

    Set-AdfsProperties -SsoLifetime <LifetimeInMinutes>
    

    При включенном KMSI время жизни SSO по умолчанию составляет (24 часа).

    Параметр также задается в минутах:

    Set-AdfsProperties -KmsiLifetimeMins <LifetimeInMinutes>
    
    
    

    Создание группы приложений ADFS для Outlook

    Все команды данного раздела выполняются в PowerShell на сервере ADFS.

    Если не планируется использовать приложения iOS и macOS, например встроенное приложение Apple Mail, создание соответствующего native client application можно пропустить. Однако рекомендуется создать его для полноты конфигурации.

    1. Создание Application Group
      New-AdfsApplicationGroup -Name "Outlook" -ApplicationGroupIdentifier "Outlook" -Disabled:$false
    2. Создание Scope
      Add-AdfsScopeDescription -Name "EAS.AccessAsUser.All" -Description "EAS scope" Add-AdfsScopeDescription -Name "EWS.AccessAsUser.All" -Description "EWS scope" Add-AdfsScopeDescription -Name "offline_access" -Description "Offline Access"
    3. Создание Native Client Applications
      Add-AdfsNativeClientApplication -Name "Outlook - Native application" -ApplicationGroupIdentifier "Outlook" -Identifier "d3590ed6-52b3-4102-aeff-aad2292ab01c" -RedirectUri @("ms-appx-web://Microsoft.AAD.BrokerPlugin/d3590ed6-52b3-4102-aeff-aad2292ab01c","msauth.com.microsoft.Outlook://auth","urn:ietf:wg:oauth:2.0:oob") Add-AdfsNativeClientApplication -Name "iOS and macOS - Native mail application" -ApplicationGroupIdentifier "Outlook" -Identifier "f8d98a96-0999-43f5-8af3-69971c7bb423" -RedirectUri @("com.apple.mobilemail://oauth-redirect","com.apple.preferences.internetaccounts://oauth-redirect/","com.apple.Preferences://oauth-redirect/")
    4. Создание Web API Applications

      Для каждого URI, используемого в среде Exchange Server, необходимо создать отдельное Web API Application.

      Например, если в среде используются:

      • autodiscover.company.com;

      • mail.company.com;

      необходимо создать два Web API Applications.

      Важно:

      • URI должен начинаться с https://;

      • необходимо использовать завершающий /.

      Пример создания Web API Application для mail.company.com:

      # Замените URI на используемые в вашей среде
      $exchangeServerServiceFqdns = @("https://mail.company.com/")
      $issuanceTransformRules = @"
      @RuleName = "ActiveDirectoryUserSID"
      c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]
       => issue(claim = c);
      @RuleName = "ActiveDirectoryUPN"
      c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"]
       => issue(claim = c);
      @RuleName = "AppIDACR"
       => issue(Type = "appidacr", Value = "2");
      @RuleName = "SCP"
       => issue(Type = "scp", Value = "user_impersonation");
      @RuleName = "SCPEAS"
       => issue(Type = "scp", Value = "EAS.AccessAsUser.All");
      @RuleName = "SCPEWS"
       => issue(Type = "scp", Value = "EWS.AccessAsUser.All");
      @RuleName = "offlineaccess"
       => issue(Type = "scp", Value = "offline_access");
      "@
      foreach ($fqdn in $exchangeServerServiceFqdns) {
          Add-AdfsWebApiApplication -Name "Outlook - Web API ($((New-Guid).ToString("N")))" -ApplicationGroupIdentifier "Outlook" -Identifier $fqdn -IssuanceTransformRules $issuanceTransformRules -AccessControlPolicyName "Permit Everyone"
      }
    5. Добавление разрешений клиентским приложениям

      Добавляем разрешения для всех Native Client Applications в созданных Web API Applications:

      $clientRoleIdentifier = @("f8d98a96-0999-43f5-8af3-69971c7bb423","d3590ed6-52b3-4102-aeff-aad2292ab01c")
      (Get-AdfsWebApiApplication -ApplicationGroupIdentifier "Outlook") | ForEach-Object {
          [string]$serverRoleIdentifier = $_.Identifier
          foreach ($id in $clientRoleIdentifier) {
              Grant-AdfsApplicationPermission -ClientRoleIdentifier $id -ServerRoleIdentifier $serverRoleIdentifier -ScopeNames "winhello_cert","email","profile","vpn_cert","logon_cert","user_impersonation","allatclaims","offline_access","EAS.AccessAsUser.All","EWS.AccessAsUser.All","openid","aza"
          }
      }
    6.  Настройка метода аутентификации в ADFS

      Для работы Modern Authentication с Outlook необходимо настроить Forms Authentication в качестве метода первичной аутентификации ADFS.

      Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider FormsAuthentication
      Set-AdfsGlobalAuthenticationPolicy -PrimaryExtranetAuthenticationProvider FormsAuthentication

    Настройка Exchange Server для использования OAuth-токенов ADFS

    1. Проверка OAuth на виртуальных каталогах

      Необходимо проверить, на наличие значения OAuth на следующих виртуальных каталогах:

      Get-MapiVirtualDirectory | Format-List Server, *auth*
      Get-WebServicesVirtualDirectory | Format-List Server, *auth*
      Get-OabVirtualDirectory | Format-List Server, *auth*
      Get-AutodiscoverVirtualDirectory | Format-List Server, *auth*
      Get-ActiveSyncVirtualDirectory | Format-List Server, *auth*
      
      Например:
      Get-MapiVirtualDirectory | Format-List Server, *auth*
      Server                        : EXCHANGE
      IISAuthenticationMethods      : {Ntlm, OAuth, Negotiate}
      InternalAuthenticationMethods : {Ntlm, OAuth, Negotiate}
      ExternalAuthenticationMethods: {Ntlm, OAuth, Negotiate}
      

      Если OAuth отсутствует на каком-либо сервере или одном из пяти виртуальных каталогов, необходимо добавить его соответствующей командой

      Например:

      Set-ActiveSyncVirtualDirectory -ExternalAuthenticationMethods @("OAuth") -InternalAuthenticationMethods @("OAuth")

    2. Добавление ADFS как доверенного поставщика токенов

      Создаем объект Auth Server в Exchange Server для ADFS:

      New-AuthServer -Type ADFS -Name MyADFSServer -AuthMetadataUrl https://<adfs_сервер>/FederationMetadata/2007-06/FederationMetadata.xml

    3. Назначение ADFS Default Authorization Endpoint

      Когда Exchange Server сообщает клиенту о поддержке Modern Authentication, он передает URL этого endpoint. Таким образом клиент получает информацию о том, куда необходимо обращаться для аутентификации.

      Выполните:

      Set-AuthServer -Identity MyADFSServer -IsDefaultAuthorizationEndpoint $true

    4. Включение Modern Authentication на уровне организации

      Выполните:

      Set-OrganizationConfig -OAuth2ClientProfileEnabled $true
    5. Включение Modern Authentication для пользователей

      Для пользователей, использующих поддерживаемые клиенты, необходимо назначить политику Allow Modern Auth:

      Set-User -Identity User -AuthenticationPolicy "Allow Modern Auth"

    Настройка Microsoft Windows

    Необходимо включить Modern Authentication и добавить домен ADFS в список доверенных доменов Outlook.

    1. Добавление ADFS в доверенные домены

      Необходимо создать следующие параметры реестра:

      HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains\https://your-ADFS-domain/
      
      HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains\https://your-ADFS-domain
      

      Важно создать оба ключа — с / в конце и без него.

      Это можно выполнить вручную, через PowerShell или развернуть централизованно с помощью групповой политики.

      Пример PowerShell:

      New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains" -Force
      (Get-Item HKLM:).OpenSubKey("SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains", $true).CreateSubKey("https://your-ADFS-domain/")
      (Get-Item HKLM:).OpenSubKey("SOFTWARE\Policies\Microsoft\AAD\AuthTrustedDomains", $true).CreateSubKey("https://your-ADFS-domain")
      

      Вместо your-ADFS-domain необходимо указать фактическое имя ADFS-сервера.


    2. Включение Modern Authentication в Outlook

      Для каждого пользователя необходимо создать параметр:

      Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Identity\" -Name "EnableExchangeOnPremModernAuth" -Value 1 -Type DWord
      

      Настройку также можно развернуть централизованно с помощью групповой политики.

    Проверка работы

    1. При входе в клиент Outlook открывается окно ADFS, вводим логин и пароль

    2. Выбираем метод аутентификации Indeed ADFS Extension

    3. Подтверждаем вход

    4. Успешный вход

    5. Проверяем аутентификацию

      Нажмите правый Ctrl, ПКМ на Outlook в трее - Connection Status.

      Если в Connection Status для соединения Outlook отображается Bearer, это означает, что Outlook установил соединение с Exchange с использованием OAuth/Modern Authentication.

    (0 голос(а))
    Эта статья полезна
    Эта статья бесполезна