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


Настройка единого входа для Виртуального рабочего стола Azure с помощью AD FS

В этой статье рассматривается процесс настройки единого входа с использованием службы федерации Active Directory (AD FS) для Виртуального рабочего стола Azure.

Примечание.

Виртуальный рабочий стол Azure (классический) не поддерживает эту возможность.

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

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

  • Узлы сеансов под управлением поддерживаемой версии Windows 10 или Windows 11.

  • Необходимо развернуть роль служб сертификатов Active Directory. Все серверы, на которых выполняется роль, должны быть присоединены к домену, иметь установленные последние обновления Windows и быть настроены как центры сертификации предприятия.

  • Необходимо развернуть роль служб федерации Active Directory (AD FS). Все серверы, на которых запущена эта роль, должны быть присоединены к домену, иметь установленные последние обновления Windows и работать под управлением Windows Server 2016 или более поздней версии. Чтобы приступить к настройке этой роли, см. руководство по федерации.

  • Мы рекомендуем настроить роль прокси веб-приложения для защиты подключения окружения к серверам AD FS. Все серверы, на которых запущена эта роль, должны иметь установленные последние обновления Windows и работать под управлением Windows Server 2016 или более поздней версии. Чтобы приступить к настройке этой роли, ознакомьтесь с этим руководством по настройке прокси веб-приложения.

  • Чтобы синхронизировать пользователей с идентификатором Microsoft Entra Id, необходимо развернуть Microsoft Entra Connect . Microsoft Entra Connect необходимо настроить в режиме федерации.

  • Настройте окружение PowerShell для Виртуального рабочего стола Azure на сервере AD FS.

Примечание.

Это решение не поддерживается в доменных службах Microsoft Entra. Необходимо использовать контроллер домена служб домен Active Directory.

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

Этот компонент поддерживают следующие клиенты Виртуального рабочего стола Azure:

Настройка центра сертификации для выдачи сертификатов

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

  • Сначала необходимо создать шаблон сертификата агента регистрации Exchange (автономный запрос). AD FS используют шаблон сертификата агента регистрации Exchange для запроса сертификатов от имени пользователя.
  • Вам также потребуется создать шаблон сертификата для входа со смарт-картой, который AD FS будут использовать для создания сертификата входа.

После создания этих шаблонов сертификатов необходимо включить шаблоны в центре сертификации, чтобы AD FS могли запрашивать их.

Примечание.

Это решение при каждом входе пользователя создает новые временные сертификаты, которые могут заполнить базу данных Центра сертификации, если у вас много пользователей. Перегрузки базы данных можно избежать, настроив центр сертификации для обработки временных сертификатов. В этом случае в дублированном шаблоне сертификата для входа на смарт-карту необходимо включить только параметр Не хранить сертификаты и запросы в базе данных центра сертификации. Не включайте параметр Не включать сведения об отзыве в выданные сертификаты, поскольку конфигурация не будет работать.

Создание шаблона сертификата агента регистрации

В зависимости от среды вы уже могли настроить шаблон сертификата агента регистрации для других целей, например для Windows Hello для бизнеса, сертификатов входа или VPN-сертификатов. Если это так, необходимо изменить его для поддержки единого входа. В противном случае шаблон можно создать.

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

Import-Module adfs
(Get-AdfsCertificateAuthority).EnrollmentAgentCertificateTemplateName

Чтобы создать шаблон сертификата агента регистрации, сделайте следующее:

  1. В центре сертификации запустите файл mmc.exe из меню "Пуск", чтобы запустить консоль управления (MMC).

  2. Чтобы просмотреть список шаблонов сертификатов, выберите Файл...>Добавить/удалить оснастки...>Шаблоны сертификатов>Добавить >>OK.

  3. Разверните узел Шаблоны сертификатов, щелкните правой кнопкой мыши Агент регистрации Exchange (автономный запрос) и выберите пункт Скопировать шаблон.

  4. Перейдите на вкладку Общие и в поле Отображаемое имя шаблона введите "агент регистрации ADFS". При этом имя шаблона будет автоматически задано как "ADFSEnrollmentAgent".

  5. Перейдите на вкладку Безопасность и нажмите кнопку Добавить...

  6. Далее выберите Типы объектов..., а затем — Учетные записи служб и нажмите кнопку ОК.

  7. Введите имя учетной записи службы для AD FS и нажмите кнопку ОК.

    • В изолированной настройке AD FS учетная запись службы будет называться adfssvc$.
    • Если вы настроили AD FS с помощью Microsoft Entra Connect, учетная запись службы будет называться aadcsvc$.
  8. После добавления учетной записи службы и отображения ее на вкладке Безопасность выберите ее в области Group or user names (Имена групп или пользователей), установите флажок Разрешить для параметров "Регистрация" и "Автоматическая регистрация" в области Permissions for the AD FS service account (Разрешения для учетной записи службы AD FS), а затем нажмите кнопку ОК, чтобы сохранить.

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

Чтобы обновить имеющийся шаблон сертификата агента регистрации, сделайте следующее:

  1. В центре сертификации запустите файл mmc.exe из меню "Пуск", чтобы запустить консоль управления (MMC).
  2. Чтобы просмотреть список шаблонов сертификатов, выберите Файл...>Добавить/удалить оснастки...>Шаблоны сертификатов>Добавить >>OK.
  3. Разверните узел Шаблоны сертификатов, дважды щелкните шаблон, соответствующий настроенному на сервере AD FS. На вкладке Общие имя шаблона должно совпадать с именем, которое вы нашли выше.
  4. Перейдите на вкладку Безопасность и нажмите кнопку Добавить...
  5. Далее выберите Типы объектов..., а затем — Учетные записи служб и нажмите кнопку ОК.
  6. Введите имя учетной записи службы для AD FS и нажмите кнопку ОК.
    • В изолированной настройке AD FS учетная запись службы будет называться adfssvc$.
    • Если вы настроили AD FS с помощью Microsoft Entra Connect, учетная запись службы будет называться aadcsvc$.
  7. После добавления учетной записи службы и отображения ее на вкладке Безопасность выберите ее в области Group or user names (Имена групп или пользователей), установите флажок Разрешить для параметров "Регистрация" и "Автоматическая регистрация" в области Permissions for the AD FS service account (Разрешения для учетной записи службы AD FS), а затем нажмите кнопку ОК, чтобы сохранить.

Создание шаблона сертификата входа со смарт-картой

Чтобы создать шаблон сертификата для входа с помощью смарт-карты, сделайте следующее:

  1. В центре сертификации запустите файл mmc.exe из меню "Пуск", чтобы запустить консоль управления (MMC).

  2. Чтобы просмотреть список шаблонов сертификатов, выберите Файл...>Add/Remote Snap-in... (Добавить или удалить оснастку...)>Шаблоны сертификатов>Добавить>ОК.

  3. Разверните узел Шаблоны сертификатов, щелкните правой кнопкой мыши Вход со смарт-картой и выберите пункт Скопировать шаблон.

  4. Перейдите на вкладку Общие и в поле Отображаемое имя шаблона введите "ADFS SSO". При этом имя шаблона будет автоматически задано как ADFSSSO.

    Примечание.

    Так как этот сертификат запрашивается по требованию, мы рекомендуем сократить период действия до 8 часов и период продления до 1 часа.

  5. Откройте вкладку Имя субъекта и нажмите кнопку Предоставляется в запросе. При появлении сообщения с предупреждением нажмите кнопку ОК.

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

  6. Перейдите на вкладку Требования выдачи.

  7. Выберите This number of authorized signatures (Указанное число авторизованных подписей) и введите значение 1.

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

  8. Для параметра Политика применения выберите Агент запроса сертификата.

  9. Перейдите на вкладку Безопасность и нажмите кнопку Добавить...

  10. Выберите Типы объектов..., затем — Учетные записи служб и нажмите кнопку ОК.

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

    • В изолированной настройке AD FS учетная запись службы будет называться adfssvc$.
    • Если вы настроили AD FS с помощью Microsoft Entra Connect, учетная запись службы будет называться aadcsvc$.
  12. После добавления учетной записи службы и отображения ее на вкладке Безопасность выберите ее в области Group or user names (Имена групп или пользователей), установите флажок Разрешить для параметров "Регистрация" и "Автоматическая регистрация", а затем нажмите кнопку ОК для сохранения.

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

Включите новые шаблоны сертификатов:

Чтобы включить новые шаблоны сертификатов, сделайте следующее:

  1. В центре сертификации запустите файл mmc.exe из меню "Пуск", чтобы запустить консоль управления (MMC).

  2. Чтобы просмотреть центр сертификации, выберите Файл...>Добавить/удалить оснастку...>Центр сертификации>Добавить >>Готово> и нажмите OK.

  3. Разверните центр сертификации на левой панели и откройте вкладку Шаблоны сертификатов.

  4. Щелкните правой кнопкой мыши среднюю панель, на которой отображается список шаблонов сертификатов, нажмите кнопку Создать, а затем выберите Выдаваемый шаблон сертификата.

  5. Выберите ADFS Enrollment Agent (Агент регистрации ADFS) и ADFS SSO (Единый вход ADFS), а затем нажмите кнопку ОК. На средней панели должны отобразиться оба шаблона.

    Снимок экрана: список шаблонов сертификатов, которые могут быть выданы, включая новый агент регистрации ADFS и единый вход ADFS.

    Примечание.

    Если шаблон сертификата агента регистрации уже настроен, необходимо добавить шаблон единого входа ADFS.

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

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

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

При настройке единого входа AD FS необходимо выбрать общий ключ или сертификат:

  • При наличии одного сервера AD FS можно выбрать общий ключ или сертификат.
  • При наличии нескольких серверов AD FS необходимо выбрать сертификат.

Общий ключ или сертификат, используемый для создания маркера для входа в Windows, должен безопасно храниться в Azure Key Vault. Вы можете сохранить секрет в имеющемся Key Vault или развернуть новый. В любом случае необходимо настроить правильную политику доступа, чтобы служба "Виртуальный рабочий стол Azure" могла получить к ней доступ.

При использовании сертификата можно использовать любой сертификат общего назначения, а в имени субъекта или альтернативном имени субъекта (SAN) нет необходимости. Хотя это не является обязательным, рекомендуется создать сертификат, выданный действительным центром сертификации. Этот сертификат можно создать непосредственно в Azure Key Vault, а также он должен иметь экспортируемый закрытый ключ. Открытый ключ можно экспортировать и использовать для настройки сервера AD FS с помощью приведенного ниже сценария. Обратите внимание, что этот сертификат отличается от SSL-сертификата AD FS, который должен иметь правильное имя субъекта и допустимый центр сертификации.

С помощью скрипта PowerShell ConfigureWVDSSO.ps1, доступного в коллекции PowerShell, можно настроить сервер AD FS для отношения доверия с проверяющей стороной и при необходимости установить сертификат.

Этот скрипт имеет только один обязательный параметр ADFSAuthority, который является URL-адресом и разрешается в AD FS с помощью суффикса "/adfs". Например, https://adfs.contoso.com/adfs.

  1. На виртуальных машинах AD FS выполните следующий командлет PowerShell, чтобы настроить AD FS для использования шаблонов сертификатов из предыдущего раздела.

    Set-AdfsCertificateAuthority -EnrollmentAgentCertificateTemplate "ADFSEnrollmentAgent" -LogonCertificateTemplate "ADFSSSO" -EnrollmentAgent
    

    Примечание.

    Если у вас уже есть настроенный шаблон EnrollmentAgentCertificateTemplate, убедитесь, что вместо ADFSEnrollmentAgent используется имеющееся имя шаблона.

  2. Запустите скрипт ConfigureWVDSSO.ps1.

    Примечание.

    Для выполнения следующей части инструкций необходимы значения переменных $config, поэтому не закрывайте окно PowerShell, использованное для выполнения предыдущих инструкций. Вы можете использовать то же окно PowerShell или оставить его открытым при запуске нового сеанса PowerShell.

    • Если вы используете общий ключ в Key Vault, выполните следующий командлет PowerShell на сервере AD FS, в котором замените ADFSServiceUrl на полный URL-адрес для доступа к службе AD FS:

      Install-Script ConfigureWVDSSO
      $config = ConfigureWVDSSO.ps1 -ADFSAuthority "<ADFSServiceUrl>" [-WvdWebAppAppIDUri "<WVD Web App URI>"] [-RdWebURL "<RDWeb URL>"]
      

      Примечание.

      Для настройки среды в независимом облаке, например Azure для государственных организаций, необходимы свойства WvdWebAppAppIDUri и RdWebURL. В коммерческом облаке Azure для этих свойств автоматически задаются значения https://www.wvd.microsoft.com и https://rdweb.wvd.microsoft.com соответственно.

    • Если вы используете сертификат в Key Vault, выполните следующий командлет PowerShell на сервере AD FS, в котором замените ADFSServiceUrl на полный URL-адрес для доступа к службе AD FS:

      Install-Script ConfigureWVDSSO
      $config = ConfigureWVDSSO.ps1 -ADFSAuthority "<ADFSServiceUrl>" -UseCert -CertPath "<Path to the pfx file>" -CertPassword <Password to the pfx file> [-WvdWebAppAppIDUri "<WVD Web App URI>"] [-RdWebURL "<RDWeb URL>"]
      

      Примечание.

      Для настройки среды в независимом облаке, например Azure для государственных организаций, необходимы свойства WvdWebAppAppIDUri и RdWebURL. В коммерческом облаке Azure для этих свойств автоматически задаются значения https://www.wvd.microsoft.com и https://rdweb.wvd.microsoft.com соответственно.

  3. Задайте политику доступа в Azure Key Vault, выполнив следующий командлет PowerShell:

    Set-AzKeyVaultAccessPolicy -VaultName "<Key Vault Name>" -ServicePrincipalName 9cdead84-a844-4324-93f2-b2e6bb768d07 -PermissionsToSecrets get -PermissionsToKeys sign
    
  4. Сохраните общий ключ или сертификат в Azure Key Vault с помощью тега, содержащего список идентификаторов подписок, разделенных запятыми, которые могут использовать секрет.

    • Если вы используете общий ключ в Key Vault, выполните следующий командлет PowerShell, чтобы сохранить общий ключ и задать тег:

      $hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" 
      $secret = Set-AzKeyVaultSecret -VaultName "<Key Vault Name>" -Name "adfsssosecret" -SecretValue (ConvertTo-SecureString -String $config.SSOClientSecret  -AsPlainText -Force) -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]}
      
    • Если сертификат уже находится в Key Vault, выполните следующий командлет PowerShell, чтобы задать тег:

      $hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>"
      $secret = Update-AzKeyVaultCertificate -VaultName "<Key Vault Name>" -Name "<Certificate Name>" -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -PassThru
      
    • Если у вас есть локальный сертификат, выполните следующий командлет PowerShell, чтобы импортировать сертификат в Key Vault и задать тег:

      $hp = Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" 
      $secret = Import-AzKeyVaultCertificate -VaultName "<Key Vault Name>" -Name "adfsssosecret" -Tag @{ 'AllowedWVDSubscriptions' = $hp.Id.Split('/')[2]} -FilePath "<Path to pfx>" -Password (ConvertTo-SecureString -String "<pfx password>"  -AsPlainText -Force)
      

Примечание.

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

Настройка пула узлов Виртуального рабочего стола Azure

Пора настроить параметры единого входа AD FS в пуле узлов Виртуального рабочего стола Azure. Для этого настройте среду PowerShell для Виртуального рабочего стола Azure, если вы еще не сделали этого, и подключитесь к вашей учетной записи.

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

  • Если вы используете общий ключ в Key Vault, выполните следующий командлет PowerShell:

    Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -SsoadfsAuthority "<ADFSServiceUrl>" -SsoClientId "<WVD Web App URI>" -SsoSecretType SharedKeyInKeyVault -SsoClientSecretKeyVaultPath $secret.Id
    

    Примечание.

    Необходимо задать свойство SsoClientId в соответствии с облаком Azure, в котором вы развертываете единый вход. В коммерческом облаке Azure этому свойству необходимо присвоить значение https://www.wvd.microsoft.com. Тем не менее обязательный параметр для этого свойства будет отличаться для других облаков, таких как облако Azure для государственных организаций.

  • Если вы используете сертификат в Key Vault, выполните следующий командлет PowerShell:

    Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -SsoadfsAuthority "<ADFSServiceUrl>" -SsoClientId "<WVD Web App URI>" -SsoSecretType CertificateInKeyVault -SsoClientSecretKeyVaultPath $secret.Id
    

    Примечание.

    Необходимо задать свойство SsoClientId в соответствии с облаком Azure, в котором вы развертываете единый вход. В коммерческом облаке Azure этому свойству необходимо присвоить значение https://www.wvd.microsoft.com. Тем не менее обязательный параметр для этого свойства будет отличаться для других облаков, таких как облако Azure для государственных организаций.

Настройка дополнительных пулов узлов

При необходимости настройки дополнительных пулов узлов можно получить параметры, которые использовались для настройки имеющегося пула узлов, чтобы настроить новый.

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

Get-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" | fl *

Вы можете выполнить действия по настройке пула узлов Виртуального рабочего стола Azure, используя те же значения SsoClientId, SsoClientSecretKeyVaultPath, SsoSecretType и SsoadfsAuthority.

Удаление единого входа

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

Update-AzWvdHostPool -Name "<Host Pool Name>" -ResourceGroupName "<Host Pool Resource Group Name>" -SsoadfsAuthority ''

Если вы также хотите отключить единый вход на сервере AD FS, выполните следующий командлет:

Install-Script UnConfigureWVDSSO
UnConfigureWVDSSO.ps1 -WvdWebAppAppIDUri "<WVD Web App URI>" -WvdClientAppApplicationID "a85cf173-4192-42f8-81fa-777a763e6e2c"

Примечание.

Свойство WvdWebAppAppIDUri должно соответствовать облаку Azure, в котором выполняется развертывание. В коммерческом облаке Azure этому свойству должно быть присвоено значение https://www.wvd.microsoft.com. Оно будет отличаться для других облаков, таких как облако Azure для государственных организаций.

Следующие шаги

Теперь, когда вы настроили единый вход, можно войти в клиент Виртуального рабочего стола Azure, чтобы протестировать его в рамках пользовательского сеанса. Если вы хотите узнать, как подключиться к сеансу с помощью новых учетных данных, ознакомьтесь со следующими статьями: