Поделиться через


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

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

Если ваша организация федеративно связана с Microsoft Entra ID, можно использовать многофакторную аутентификацию Microsoft Entra для защиты ресурсов службы федерации Active Directory (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, установив для SupportsMfa параметра $true значение. В этой конфигурации Microsoft Entra ID может предложить AD FS выполнить дополнительную проверку подлинности или настоящую многофакторную аутентификацию для сценариев условного доступа, требующих её.

Любой пользователь 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, который не зарегистрирован (еще не настроил сведения для многофакторной аутентификации), должен быть предложен настроить сведения о проверке. Чтобы сделать запрос к незарегистрированным пользователям, можно использовать настраиваемую страницу ошибок 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.
  • Учетные данные администратора предприятия для настройки фермы AD FS для многофакторной проверки подлинности Microsoft Entra.
  • Вам потребуется учетная запись с ролью администратора приложений в вашем экземпляре Microsoft Entra ID для его настройки с помощью PowerShell.

Примечание.

Модули 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.

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

TenantID — это имя вашего каталога в Microsoft Entra ID. Чтобы создать новый сертификат, используйте следующий командлет 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 для cmdlet 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) и убедитесь, что она включена. В противном случае вы можете получить такие сообщения об ошибках, как "Не найден допустимый надежный метод проверки подлинности." Обратитесь к администратору, чтобы настроить и включить соответствующий поставщик строгой проверки подлинности".

Продление и управление сертификатами многофакторной проверки подлинности AD FS 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"