Настройка многофакторной проверки подлинности Microsoft Entra в качестве поставщика проверки подлинности с помощью AD FS

Сведения, приведенные в этой статье, относятся к Windows 2016 и более поздним версиям.

Если ваша организация федеративна с идентификатором Microsoft Entra, можно использовать многофакторную проверку подлинности Microsoft Entra для защиты ресурсов службы федерации Active Directory (AD FS) (AD FS), как локальных, так и в облаке. Многофакторная проверка подлинности Microsoft Entra позволяет устранять пароли и обеспечивать более безопасный способ проверки подлинности. С помощью AD FS можно настроить многофакторную проверку подлинности Microsoft Entra для первичной проверки подлинности или использовать ее в качестве дополнительного поставщика проверки подлинности.

В отличие от AD FS в Windows Server 2012 R2, адаптер многофакторной проверки подлинности Microsoft Entra Ad FS 2016 интегрируется непосредственно с идентификатором Microsoft Entra и не требует локального сервера Многофакторной идентификации Azure. Адаптер многофакторной проверки подлинности Microsoft Entra встроен в Windows Server 2016. Другая установка не требуется.

Регистрация пользователей для многофакторной проверки подлинности Microsoft Entra с помощью AD FS

AD FS не поддерживает встроенную регистрацию сведений о проверке подлинности многофакторной проверки подлинности Microsoft Entra, например на номере телефона или мобильном приложении. Без поддержки встроенного подтверждения пользователи должны получить подтверждение путем посещения https://account.activedirectory.windowsazure.com/Proofup.aspx , прежде чем использовать многофакторную проверку подлинности Microsoft Entra для проверки подлинности в приложениях AD FS. Если пользователь, еще не прошедший проверку подлинности в идентификаторе Microsoft Entra ID, пытается пройти проверку подлинности с помощью многофакторной проверки подлинности Microsoft Entra в AD FS, они получают ошибку AD FS. Администратор AD FS позволяет настроить эту ошибку, чтобы пользователь перенаправлял пользователя на страницу проверки правописания. Это сообщение можно создать с помощью onload.js настройки для обнаружения строки сообщения об ошибке на странице AD FS. Затем вы можете отобразить новое сообщение, чтобы направить пользователя, https://aka.ms/mfasetup чтобы он смог повторно выполнить проверку подлинности. Дополнительные сведения см. в разделе "Настройка веб-страницы AD FS", чтобы помочь пользователям зарегистрировать методы проверки MFA.

Примечание.

До этого обновления пользователи должны были пройти проверку подлинности с помощью многофакторной проверки подлинности Microsoft Entra для регистрации.https://account.activedirectory.windowsazure.com/Proofup.aspx В этом обновлении пользователь AD FS, который еще не зарегистрировал сведения о многофакторной проверке подлинности Microsoft Entra, может получить доступ к странице проверки правописания Azure, используя ярлык https://aka.ms/mfasetup только для первичной проверки подлинности, например встроенную проверку подлинности Windows или имя пользователя и пароль на веб-страницах AD FS. Если у пользователя нет методов проверки, идентификатор Microsoft Entra выполняет встроенную регистрацию. Пользователь увидит сообщение "Администратор должен настроить эту учетную запись для дополнительной проверки безопасности". Затем пользователь выбирает его сейчас. Пользователям, у которых уже настроен хотя бы один метод проверки подлинности, будет предложено предоставить многофакторную проверку подлинности (MFA) при посещении страницы проверки подлинности.

В этом разделе рассматривается использование многофакторной проверки подлинности Microsoft Entra в качестве основного метода проверки подлинности с AD FS и многофакторной проверки подлинности Microsoft Entra для Office 365.

Многофакторная проверка подлинности Microsoft Entra в качестве основной проверки подлинности

Существует несколько отличных причин использовать многофакторную проверку подлинности Microsoft Entra в качестве основной проверки подлинности с AD FS:

  • Это позволяет избежать паролей для входа в Идентификатор Microsoft Entra, Office 365 и другие приложения AD FS.
  • Он защищает вход на основе пароля, требуя другого фактора, например кода проверки перед паролем.

Кроме того, может потребоваться использовать многофакторную проверку подлинности Microsoft Entra в качестве основного метода проверки подлинности и условного доступа Microsoft Entra, включая true MFA, запрашивая дополнительные факторы. Чтобы использовать многофакторную проверку подлинности Microsoft Entra в локальной среде, можно настроить параметр домена Microsoft Entra, установив для $trueпараметра SupportsMfa значение . В этой конфигурации идентификатор Microsoft Entra может предложить AD FS выполнить дополнительную проверку подлинности или "true MFA" для сценариев условного доступа, требующих его.

Любой пользователь AD FS, который не зарегистрирован (еще не настроены сведения о проверке MFA), должен быть предложено настроить сведения о проверке. Чтобы запрашивать незарегистрированных пользователей, можно использовать настраиваемую страницу ошибок AD FS для направления пользователей в https://aka.ms/mfasetup сведения о проверке и настройки сведений о проверке. После настройки пользователь может повторно выполнить вход AD FS.

Многофакторная проверка подлинности Microsoft Entra в качестве основной проверки подлинности считается одним фактором. После первоначальной настройки пользователям необходимо предоставить другой фактор для управления или обновления сведений о проверке в идентификаторе Microsoft Entra или доступа к другим ресурсам, которым требуется MFA.

Примечание.

При использовании AD FS 2019 необходимо внести изменения в тип утверждения привязки для доверия поставщика утверждений Active Directory и изменить его с windowsaccountname имени участника-пользователя (UPN). Выполните приведенный ниже командлет PowerShell. Это не влияет на внутреннее функционирование фермы AD FS. Возможно, несколько пользователей могут повторно запрашивать учетные данные после внесения этого изменения. После повторного входа конечные пользователи не увидят разницы.

Set-AdfsClaimsProviderTrust -AnchorClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" -TargetName "Active Directory"

Многофакторная проверка подлинности Microsoft Entra в качестве дополнительной проверки подлинности в Office 365

Адаптер многофакторной проверки подлинности Microsoft Entra для AD FS позволяет пользователям выполнять MFA в AD FS. Чтобы защитить ресурс Microsoft Entra, необходимо выполнить многофакторную проверку подлинности с помощью политики условного доступа. Необходимо также задать для параметра SupportsMfa$true домена значение и выпустить утверждение multipleauthn, когда пользователь успешно выполняет двухфакторную проверку подлинности.

Как описано ранее, любой пользователь AD FS, который не зарегистрирован (еще не настроена информация о проверке MFA), должен быть предложено настроить сведения о проверке. Чтобы запрашивать незарегистрированных пользователей, можно использовать настраиваемую страницу ошибок AD FS для направления пользователей в https://aka.ms/mfasetup сведения о проверке и настройки сведений о проверке. После настройки пользователь может повторно выполнить вход AD FS.

Необходимые компоненты

При использовании многофакторной проверки подлинности Microsoft Entra для проверки подлинности с ad FS требуются следующие предварительные требования:

Примечание.

Идентификатор Microsoft Entra и многофакторная проверка подлинности Microsoft Entra включены в Microsoft Entra ID P1 или P2 и Enterprise Mobility Suite (EMS). Если у вас есть одно из этих приложений, вам не нужна отдельная подписка.

  • Локальная среда Windows Server 2016 AD FS.
    • Сервер должен иметь возможность взаимодействовать со следующими URL-адресами через порт 443.
      • https://adnotifications.windowsazure.com
        • https://login.microsoftonline.com
  • Локальная среда должна быть федеративной с идентификатором Microsoft Entra.
  • Модуль Microsoft Azure Active Directory для Windows PowerShell.
  • Разрешения глобального администратора для экземпляра идентификатора Microsoft Entra, чтобы настроить его с помощью Azure AD PowerShell.
  • Учетные данные администратора предприятия для настройки фермы AD FS для многофакторной проверки подлинности Microsoft Entra.

Примечание.

Модули Azure AD и MSOnline PowerShell устарели с 30 марта 2024 г. Дополнительные сведения см. в обновлении об отмене. После этой даты поддержка этих модулей ограничена поддержкой миграции в пакет SDK Для Microsoft Graph PowerShell и исправления безопасности. Устаревшие модули будут продолжать функционировать до 30 марта 2025 года.

Рекомендуется перенести в Microsoft Graph PowerShell для взаимодействия с идентификатором Microsoft Entra (ранее — Azure AD). Часто задаваемые вопросы о миграции см. в разделе "Вопросы и ответы о миграции". Примечание. Версии 1.0.x MSOnline могут возникнуть сбоем после 30 июня 2024 г.

Настройка серверов AD FS

Чтобы завершить настройку многофакторной проверки подлинности Microsoft Entra для AD FS, необходимо настроить каждый сервер AD FS, выполнив описанные здесь действия.

Примечание.

Убедитесь, что эти действия выполняются на всех серверах AD FS в ферме. Если у вас несколько серверов AD FS в ферме, вы можете выполнить необходимую настройку удаленно с помощью Azure AD PowerShell.

Шаг 1. Создание сертификата для многофакторной проверки подлинности Microsoft Entra на каждом сервере AD FS

Первое, что необходимо сделать, — использовать New-AdfsAzureMfaTenantCertificate команду PowerShell для создания сертификата для многофакторной проверки подлинности Microsoft Entra. После создания сертификата найдите его в хранилище сертификатов локальных компьютеров. Сертификат помечается именем субъекта, содержащим идентификатор клиента для каталога Microsoft Entra.

Снимок экрана: хранилище сертификатов локального компьютера с созданным сертификатом.

Идентификатор клиента — это имя каталога в идентификаторе Microsoft Entra. Чтобы создать новый сертификат, используйте следующий командлет PowerShell:

$certbase64 = New-AdfsAzureMfaTenantCertificate -TenantID <tenantID>

Снимок экрана: окно PowerShell с выходными данными из New-AdfsAzureMfaTenantCertificate.

Шаг 2. Добавление новых учетных данных в субъект-службу многофакторной проверки подлинности Azure

Чтобы серверы AD FS могли взаимодействовать с клиентом многофакторной проверки подлинности Azure, необходимо добавить учетные данные в субъект-службу для клиента многофакторной проверки подлинности Azure. Сертификаты, созданные с помощью командлета New-AdfsAzureMFaTenantCertificate, служат этими учетными данными. Откройте PowerShell и выполните следующие действия, чтобы добавить новые учетные данные в субъект-службу клиента многофакторной проверки подлинности Azure.

Шаг 3. Установка сертификата в качестве новых учетных данных для клиента многофакторной проверки подлинности Azure

Примечание.

Чтобы выполнить этот шаг, необходимо подключиться к экземпляру идентификатора Microsoft Entra с помощью Connect-MgGraphMicrosoft Graph PowerShell. В этих шагах предполагается, что вы уже подключились через PowerShell.

Connect-MgGraph -Scopes 'Application.ReadWrite.All'
$servicePrincipalId = (Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'").Id
$keyCredentials = (Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'").KeyCredentials
$certX509 = [System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($certBase64))
$newKey = @(@{
    CustomKeyIdentifier = $null
    DisplayName = $certX509.Subject
    EndDateTime = $null
    Key = $certX509.GetRawCertData()
    KeyId = [guid]::NewGuid()
    StartDateTime = $null
    Type = "AsymmetricX509Cert"
    Usage = "Verify"
    AdditionalProperties = $null
})
$keyCredentials += $newKey
Update-MgServicePrincipal -ServicePrincipalId $servicePrincipalId -KeyCredentials $keyCredentials

Внимание

Эта команда должна выполняться на всех серверах AD FS в ферме. Многофакторная проверка подлинности Microsoft Entra завершится ошибкой на серверах, которые не установили сертификат в качестве новых учетных данных для клиента многофакторной проверки подлинности Azure.

Примечание.

981f26a1-7f43-403b-a875-f8b09b8cd720 — это GUID для клиента многофакторной проверки подлинности Azure.

Настройка фермы AD FS

После выполнения действий, описанных в предыдущем разделе для каждого сервера AD FS, задайте сведения о клиенте Azure с помощью командлета Set-AdfsAzureMfaTenant . Этот командлет необходимо выполнить только один раз для фермы AD FS.

Откройте PowerShell и введите собственный идентификатор клиента с помощью командлета Set-AdfsAzureMfaTenant . Для клиентов, использующих облако Microsoft Azure для государственных организаций, добавьте -Environment USGov параметр:

Примечание.

Чтобы эти изменения вступили в силу, необходимо перезапустить службу AD FS на каждом сервере в ферме. Чтобы обеспечить минимальное влияние, возьмите каждый сервер AD FS из поворота NLB по одному за раз и дождитесь очистки всех подключений.

Set-AdfsAzureMfaTenant -TenantId <tenant ID> -ClientId 981f26a1-7f43-403b-a875-f8b09b8cd720

Снимок экрана: окно PowerShell с предупреждением, полученное после выполнения командлета Set-AdfsAzureMfaTenant.

Windows Server без последнего пакета обновления не поддерживает -Environment параметр для командлета Set-AdfsAzureMfaTenant . Если вы используете Azure для государственных организаций облако и предыдущие шаги не удалось настроить клиент Azure из-за отсутствующих -Environment параметров, выполните следующие действия, чтобы вручную создать записи реестра. Пропустите эти действия, если предыдущий командлет правильно зарегистрировал сведения о клиенте или если вы не в облаке Azure для государственных организаций:

  1. Откройте редактор реестра на сервере AD FS.

  2. Перейдите к HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS. Создайте следующие значения раздела реестра:

    Раздел реестра Значение
    SasUrl https://adnotifications.windowsazure.us/StrongAuthenticationService.svc/Connector
    StsUrl https://login.microsoftonline.us
    ResourceUri https://adnotifications.windowsazure.us/StrongAuthenticationService.svc/Connector
  3. Перезапустите службу AD FS на каждом сервере фермы, прежде чем эти изменения вступили в силу. Чтобы уменьшить влияние на системы, примите каждый сервер AD FS из поворота NLB по одному за раз и дождитесь очистки всех подключений.

На этом шаге вы увидите, что многофакторная проверка подлинности Microsoft Entra доступна в качестве основного метода проверки подлинности для использования интрасети и экстрасети.

Снимок экрана: диалоговое окно

Если вы хотите использовать многофакторную проверку подлинности Microsoft Entra в качестве дополнительного метода проверки подлинности, в поле "Изменить методы проверки подлинности" выберите вкладку многофакторной (дополнительная вкладка в AD FS 2019) и убедитесь, что она включена. В противном случае могут появиться сообщения об ошибках, например "Недопустимый надежный метод проверки подлинности не найден. Обратитесь к администратору, чтобы настроить и включить соответствующий поставщик строгой проверки подлинности".

Продление сертификатов многофакторной проверки подлинности Microsoft Entra и управление ими

Ниже приведено руководство по управлению сертификатами многофакторной проверки подлинности Microsoft Entra на серверах AD FS.

По умолчанию при настройке AD FS с многофакторной проверкой подлинности Microsoft Entra сертификаты, созданные с помощью командлета New-AdfsAzureMfaTenantCertificate PowerShell, действительны в течение двух лет. Чтобы определить, как близко к истечению срока действия сертификатов, а также продлить и установить новые сертификаты, используйте следующую процедуру.

  1. Оценка срока действия сертификата многофакторной проверки подлинности Microsoft Entra AD FS.

    На каждом сервере AD FS на локальном компьютере My store есть самозаверяющий сертификат с помощью многофакторной проверки подлинности Microsoft AD FS Microsoft Entra в области издателя и субъекта. Этот сертификат является сертификатом многофакторной проверки подлинности Microsoft Entra. Проверьте срок действия этого сертификата на каждом сервере AD FS, чтобы определить дату истечения срока.

  2. Создайте новый сертификат многофакторной проверки подлинности Microsoft Entra AD FS на каждом сервере AD FS.

    Если срок действия сертификатов приближается к концу, запустите процесс продления, создав новый многофакторный сертификат проверки подлинности Microsoft Entra на каждом сервере AD FS. В PowerShell создайте новый сертификат на каждом сервере AD FS с помощью следующего командлета:

    Внимание

    Если срок действия сертификата уже истек, не добавьте -Renew $true параметр в следующую команду. В этом сценарии существующий сертификат с истекшим сроком действия заменяется новым, а не остается на месте и создается дополнительный сертификат.

    $newcert = New-AdfsAzureMfaTenantCertificate -TenantId <tenant id such as contoso.onmicrosoft.com> -Renew $true
    

    Если срок действия сертификата еще не истек, команда создает новый сертификат, действительный с двух дней после текущего дня до двух лет плюс два дня в будущем. Операции многофакторной проверки подлинности AD FS и Microsoft Entra не затрагиваются при выполнении командлета или возобновлении сертификата. Двухдневная задержка является преднамеренной и предоставляет время, чтобы выполнить следующие действия, чтобы настроить новый сертификат в клиенте, прежде чем AD FS начнет использовать его для многофакторной проверки подлинности Microsoft Entra.

  3. Настройте каждый новый сертификат многофакторной проверки подлинности Microsoft Entra AD FS в клиенте Microsoft Entra.

    Примечание.

    Чтобы выполнить этот шаг, необходимо подключиться к экземпляру идентификатора Microsoft Entra с помощью Connect-MgGraphMicrosoft Graph PowerShell. В этих шагах предполагается, что вы уже подключились через PowerShell.

    Connect-MgGraph -Scopes 'Application.ReadWrite.All'
    $servicePrincipalId = (Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'").Id
    $keyCredentials = (Get-MgServicePrincipal -Filter "appid eq '981f26a1-7f43-403b-a875-f8b09b8cd720'").KeyCredentials
    $certX509 = [System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($newcert))
    $newKey = @(@{
        CustomKeyIdentifier = $null
        DisplayName = $certX509.Subject
        EndDateTime = $null
        Key = $certX509.GetRawCertData()
        KeyId = [guid]::NewGuid()
        StartDateTime = $null
        Type = "AsymmetricX509Cert"
        Usage = "Verify"
        AdditionalProperties = $null
    })
    $keyCredentials += $newKey
    Update-MgServicePrincipal -ServicePrincipalId $servicePrincipalId -KeyCredentials $keyCredentials
    

    Если срок действия предыдущего сертификата истек, перезапустите службу AD FS, чтобы получить новый сертификат. Вам не нужно перезапускать службу AD FS, если вы обновили сертификат до истечения срока его действия.

  4. Убедитесь, что для многофакторной проверки подлинности Microsoft Entra используется новый сертификат.

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

Log Name:      AD FS/Admin
Source:        AD FS
Date:          2/27/2018 7:33:31 PM
Event ID:      547
Task Category: None
Level:         Information
Keywords:      AD FS
User:          DOMAIN\adfssvc
Computer:      ADFS.domain.contoso.com
Description:
The tenant certificate for Azure MFA has been renewed.

TenantId: contoso.onmicrosoft.com.
Old thumbprint: 7CC103D60967318A11D8C51C289EF85214D9FC63.
Old expiration date: 9/15/2019 9:43:17 PM.
New thumbprint: 8110D7415744C9D4D5A4A6309499F7B48B5F3CCF.
New expiration date: 2/27/2020 2:16:07 AM.

Настройка веб-страницы AD FS для регистрации методов проверки MFA

Используйте следующие примеры, чтобы настроить веб-страницы AD FS для пользователей, которые еще не были проверены (настроены сведения о проверке MFA).

Поиск ошибки

Во-первых, AD FS возвращает несколько различных сообщений об ошибках, когда пользователю не хватает сведений о проверке. Если вы используете многофакторную проверку подлинности Microsoft Entra в качестве основной проверки подлинности, незащищенный пользователь увидит страницу ошибки AD FS со следующими сообщениями:

    <div id="errorArea">
        <div id="openingMessage" class="groupMargin bigText">
            An error occurred
        </div>
        <div id="errorMessage" class="groupMargin">
            Authentication attempt failed. Select a different sign in option or close the web browser and sign in again. Contact your administrator for more information.
        </div>

При попытке проверки подлинности идентификатора Microsoft Entra в качестве дополнительной проверки подлинности незащищенный пользователь видит страницу ошибки AD FS со следующими сообщениями:

<div id='mfaGreetingDescription' class='groupMargin'>For security reasons, we require additional information to verify your account (mahesh@jenfield.net)</div>
    <div id="errorArea">
        <div id="openingMessage" class="groupMargin bigText">
            An error occurred
        </div>
        <div id="errorMessage" class="groupMargin">
            The selected authentication method is not available for &#39;username@contoso.com&#39;. Choose another authentication method or contact your system administrator for details.
        </div>

Перехват ошибки и обновление текста страницы

Чтобы поймать ошибку и показать пользовательское руководство пользователя, добавьте JavaScript в конец onload.js файла, который является частью веб-темы AD FS. Это позволяет:

  • Найдите определяющие строки ошибок.
  • Предоставьте пользовательское веб-содержимое.

Примечание.

Общие сведения о настройке файла onload.js см. в статье "Расширенная настройка страниц входа AD FS".

Ниже приведен простой пример.

  1. Откройте Windows PowerShell на основном сервере AD FS и создайте новую веб-тему AD FS, выполнив следующую команду.

        New-AdfsWebTheme –Name ProofUp –SourceName default
    
  2. Создайте папку и экспортируйте веб-тему AD FS по умолчанию.

       New-Item -Path 'C:\Theme' -ItemType Directory;Export-AdfsWebTheme –Name default –DirectoryPath C:\Theme
    
  3. Откройте файл C:\Theme\script\onload.js в текстовом редакторе.

  4. Добавьте следующий код в конец файла onload.js:

    //Custom Code
    //Customize MFA exception
    //Begin
    
    var domain_hint = "<YOUR_DOMAIN_NAME_HERE>";
    var mfaSecondFactorErr = "The selected authentication method is not available for";
    var mfaProofupMessage = "You will be automatically redirected in 5 seconds to set up your account for additional security verification. After you've completed the setup, please return to the application you are attempting to access.<br><br>If you are not redirected automatically, please click <a href='{0}'>here</a>."
    var authArea = document.getElementById("authArea");
    if (authArea) {
        var errorMessage = document.getElementById("errorMessage");
        if (errorMessage) {
            if (errorMessage.innerHTML.indexOf(mfaSecondFactorErr) >= 0) {
    
                //Hide the error message
                var openingMessage = document.getElementById("openingMessage");
                if (openingMessage) {
                    openingMessage.style.display = 'none'
                }
                var errorDetailsLink = document.getElementById("errorDetailsLink");
                if (errorDetailsLink) {
                    errorDetailsLink.style.display = 'none'
                }
    
                //Provide a message and redirect to Azure AD MFA Registration Url
                var mfaRegisterUrl = "https://account.activedirectory.windowsazure.com/proofup.aspx?proofup=1&whr=" + domain_hint;
                errorMessage.innerHTML = "<br>" + mfaProofupMessage.replace("{0}", mfaRegisterUrl);
                window.setTimeout(function () { window.location.href = mfaRegisterUrl; }, 5000);
            }
        }
    }
    
    //End Customize MFA Exception
    //End Custom Code
    

    Внимание

    Чтобы использовать доменное имя, необходимо изменить "<YOUR_DOMAIN_NAME_HERE>". Например: var domain_hint = "contoso.com";.

  5. Сохраните файл onload.js.

  6. Импортируйте файл onload.js в настраиваемую тему, введя следующую команду Windows PowerShell:

    Set-AdfsWebTheme -TargetName ProofUp -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
    
  7. Примените настраиваемую веб-тему AD FS, введя следующую команду Windows PowerShell:

    Set-AdfsWebConfig -ActiveThemeName "ProofUp"