Настройте многофакторную аутентификацию 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
- Сервер должен иметь возможность взаимодействовать со следующими URL-адресами через порт 443.
- Локальная среда должна быть федеративной с идентификатором 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>
Шаг 2. Добавьте новые учетные данные в главное приложение службы многофакторной аутентификации Azure
Чтобы серверы AD FS могли взаимодействовать с клиентом многофакторной проверки подлинности Azure, необходимо добавить учетные данные в главный объект службы для клиента многофакторной проверки подлинности Azure. Сертификаты, созданные с помощью командлета New-AdfsAzureMFaTenantCertificate, используются в качестве этих учетных данных. Откройте PowerShell и выполните следующие действия, чтобы добавить новые учетные данные в учетную запись службы клиента многофакторной аутентификации Azure.
Шаг 3. Установка сертификата в качестве новых учетных данных для клиента многофакторной проверки подлинности Azure
Примечание.
Чтобы выполнить этот шаг, необходимо подключиться к экземпляру идентификатора Microsoft Entra с помощью Connect-MgGraph
Microsoft 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
Windows Server без последнего пакета обновления не поддерживает параметр -Environment
для cmdlet Set-AdfsAzureMfaTenant
. Если вы используете облачный сервис Azure для государственных организаций и предыдущие шаги не удалось выполнить, чтобы настроить арендатора Azure из-за отсутствия параметра -Environment
, выполните следующие действия, чтобы вручную создать записи реестра. Пропустите эти действия, если предыдущий командлет правильно зарегистрировал сведения о клиенте или если вы не в облаке Azure для государственных организаций:
Откройте редактор реестра на сервере AD FS.
Перейдите к 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
Перезапустите службу 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, действительны в течение двух лет. Чтобы определить, как близко к истечению срока действия сертификатов, а также продлить и установить новые сертификаты, используйте следующую процедуру.
Оценка срока действия сертификата многофакторной проверки подлинности Microsoft Entra AD FS.
На каждом сервере AD FS на локальном компьютере My store есть самозаверяющий сертификат с помощью многофакторной проверки подлинности Microsoft AD FS Microsoft Entra в области издателя и субъекта. Этот сертификат является сертификатом многофакторной проверки подлинности Microsoft Entra. Проверьте срок действия этого сертификата на каждом сервере AD FS, чтобы определить дату истечения срока.
Создайте новый сертификат многофакторной проверки подлинности 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.
Настройте каждый новый сертификат многофакторной проверки подлинности Microsoft Entra AD FS в клиенте Microsoft Entra.
Примечание.
Чтобы выполнить этот шаг, необходимо подключиться к экземпляру идентификатора Microsoft Entra с помощью
Connect-MgGraph
Microsoft 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, если вы обновили сертификат до истечения срока его действия.
Убедитесь, что для многофакторной проверки подлинности 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 'username@contoso.com'. Choose another authentication method or contact your system administrator for details.
</div>
Поймайте ошибку и обновите текст страницы
Чтобы поймать ошибку и показать пользовательское руководство пользователя, добавьте JavaScript в конец onload.js
файла, который является частью веб-темы AD FS. Это позволяет:
- Найдите определяющие строки ошибок.
- Предоставьте пользовательское веб-содержимое.
Примечание.
Общие сведения о настройке файла onload.js см. в статье "Расширенная настройка страниц входа AD FS".
Ниже приведен простой пример.
Откройте Windows PowerShell на основном сервере AD FS и создайте новую веб-тему AD FS, выполнив следующую команду.
New-AdfsWebTheme –Name ProofUp –SourceName default
Создайте папку и экспортируйте веб-тему AD FS по умолчанию.
New-Item -Path 'C:\Theme' -ItemType Directory;Export-AdfsWebTheme –Name default –DirectoryPath C:\Theme
Откройте файл C:\Theme\script\onload.js в текстовом редакторе.
Добавьте следующий код в конец файла 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";
.Сохраните файл onload.js.
Импортируйте файл onload.js в настраиваемую тему, введя следующую команду Windows PowerShell:
Set-AdfsWebTheme -TargetName ProofUp -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
Примените настраиваемую веб-тему AD FS, введя следующую команду Windows PowerShell:
Set-AdfsWebConfig -ActiveThemeName "ProofUp"