Konfigurowanie logowania jednokrotnego dla usługi Azure Virtual Desktop przy użyciu usług AD FS

Ten artykuł przeprowadzi Cię przez proces konfigurowania logowania jednokrotnego (SSO) usługi Active Directory Federation Service (AD FS) dla usługi Azure Virtual Desktop.

Uwaga

Usługa Azure Virtual Desktop (wersja klasyczna) nie obsługuje tej funkcji.

Wymagania wstępne

Przed skonfigurowaniem logowania jednokrotnego usług AD FS musisz mieć następującą konfigurację uruchomioną w środowisku:

  • Hosty sesji z obsługiwaną wersją systemu Windows 10 lub Windows 11.

  • Musisz wdrożyć rolę usług certyfikatów Active Directory (CA). Wszystkie serwery z rolą muszą być przyłączone do domeny, mają zainstalowane najnowsze aktualizacje systemu Windows i być skonfigurowane jako urzędy certyfikacji przedsiębiorstwa.

  • Należy wdrożyć rolę usług Active Directory Federation Services (AD FS). Wszystkie serwery z tą rolą muszą być przyłączone do domeny, mają zainstalowane najnowsze aktualizacje systemu Windows i muszą mieć zainstalowany system Windows Server 2016 lub nowszy. Zobacz nasz samouczek dotyczący federacji, aby rozpocząć konfigurowanie tej roli.

  • Zalecamy skonfigurowanie roli serwer proxy aplikacji sieci Web w celu zabezpieczenia połączenia środowiska z serwerami usług AD FS. Wszystkie serwery z tą rolą muszą mieć zainstalowane najnowsze aktualizacje systemu Windows i mieć zainstalowany system Windows Server 2016 lub nowszy. Zobacz ten przewodnik po serwer proxy aplikacji sieci Web, aby rozpocząć konfigurowanie tej roli.

  • Musisz wdrożyć Połączenie firmy Microsoft, aby zsynchronizować użytkowników z identyfikatorem Entra firmy Microsoft. Microsoft Entra Połączenie musi być skonfigurowany w trybie federacji.

  • Skonfiguruj środowisko programu PowerShell dla usługi Azure Virtual Desktop na serwerze usług AD FS.

Uwaga

To rozwiązanie nie jest obsługiwane w usługach Microsoft Entra Domain Services. Należy użyć kontrolera domeny usług domena usługi Active Directory Services.

Obsługiwani klienci

Następujący klienci usługi Azure Virtual Desktop obsługują tę funkcję:

Konfigurowanie urzędu certyfikacji do wystawiania certyfikatów

Należy prawidłowo utworzyć następujące szablony certyfikatów, aby usługi AD FS mogły używać logowania jednokrotnego:

  • Najpierw należy utworzyć szablon certyfikatu Agent rejestracji programu Exchange (żądanie offline). Usługi AD FS używają szablonu certyfikatu agenta rejestracji programu Exchange do żądania certyfikatów w imieniu użytkownika.
  • Należy również utworzyć szablon certyfikatu logowania karty inteligentnej, którego usługi AD FS będą używać do tworzenia certyfikatu logowania.

Po utworzeniu tych szablonów certyfikatów należy włączyć szablony w urzędzie certyfikacji, aby usługi AD FS mogły je zażądać.

Uwaga

To rozwiązanie generuje nowe certyfikaty krótkoterminowe za każdym razem, gdy użytkownik loguje się, co może wypełnić bazę danych urzędu certyfikacji, jeśli masz wielu użytkowników. Można uniknąć przeciążenia bazy danych, konfigurując urząd certyfikacji na potrzeby przetwarzania certyfikatów nietrwalnych. Jeśli to zrobisz, na zduplikowanym szablonie certyfikatu logowania karty inteligentnej upewnij się, że włączono tylko opcję Nie przechowuj certyfikatów i żądań w bazie danych urzędu certyfikacji. Nie włączaj opcji Nie dołączaj informacji odwołania do wystawionych certyfikatów lub konfiguracja nie będzie działać.

Tworzenie szablonu certyfikatu agenta rejestracji

W zależności od środowiska możesz już skonfigurować szablon certyfikatu agenta rejestracji dla innych celów, takich jak Windows Hello dla firm, certyfikaty logowania lub certyfikaty sieci VPN. Jeśli tak, należy zmodyfikować go w celu obsługi logowania jednokrotnego. Jeśli nie, możesz utworzyć nowy szablon.

Aby określić, czy używasz już szablonu certyfikatu agenta rejestracji, uruchom następujące polecenie programu PowerShell na serwerze usług AD FS i sprawdź, czy zwracana jest wartość. Jeśli jest on pusty, utwórz nowy szablon certyfikatu agenta rejestracji. W przeciwnym razie zapamiętaj nazwę i zaktualizuj istniejący szablon certyfikatu agenta rejestracji.

Import-Module adfs
(Get-AdfsCertificateAuthority).EnrollmentAgentCertificateTemplateName

Aby utworzyć nowy szablon certyfikatu agenta rejestracji:

  1. W urzędzie certyfikacji uruchom mmc.exe z menu Start, aby uruchomić program Microsoft Management Console.

  2. Wybierz pozycję Plik...>Dodaj/zdalne przystawki...>Szablony certyfikatów>Dodaj >>OK, aby wyświetlić listę szablonów certyfikatów.

  3. Rozwiń szablony certyfikatów, kliknij prawym przyciskiem myszy pozycję Agent rejestracji programu Exchange (żądanie offline) i wybierz pozycję Duplikuj szablon.

  4. Wybierz kartę Ogólne , a następnie wprowadź ciąg "Agent rejestracji usług AD FS" w polu Nazwa wyświetlana szablonu. Spowoduje to automatyczne ustawienie nazwy szablonu na "ADFSEnrollmentAgent".

  5. Wybierz kartę Zabezpieczenia , a następnie wybierz pozycję Dodaj....

  6. Następnie wybierz pozycję Typy obiektów..., a następnie pozycję Konta usług, a następnie przycisk OK.

  7. Wprowadź nazwę konta usługi dla usług AD FS i wybierz przycisk OK.

    • W izolowanej konfiguracji usług AD FS konto usługi będzie mieć nazwę "adfssvc$"
    • Jeśli skonfigurujesz usługi AD FS przy użyciu usługi Microsoft Entra Połączenie, konto usługi będzie mieć nazwę "aadcsvc$"
  8. Po dodaniu konta usługi i jego wyświetlaniu na karcie Zabezpieczenia wybierz je w okienku Nazwy grup lub użytkowników, wybierz pozycję Zezwalaj zarówno na rejestrację, jak i automatyczne rejestrowanie w okienku Uprawnienia dla konta usługi AD FS, a następnie wybierz przycisk OK , aby zapisać.

    A screenshot showing the security tab of the Enrollment Agent certificate template after it is properly configured.

Aby zaktualizować istniejący szablon certyfikatu agenta rejestracji:

  1. W urzędzie certyfikacji uruchom mmc.exe z menu Start, aby uruchomić program Microsoft Management Console.
  2. Wybierz pozycję Plik...>Dodaj/zdalne przystawki...>Szablony certyfikatów>Dodaj >>OK, aby wyświetlić listę szablonów certyfikatów.
  3. Rozwiń szablony certyfikatów, kliknij dwukrotnie szablon, który odpowiada szablonowi skonfigurowanemu na serwerze usług AD FS. Na karcie Ogólne nazwa szablonu powinna być zgodna z nazwą znalezioną powyżej.
  4. Wybierz kartę Zabezpieczenia , a następnie wybierz pozycję Dodaj....
  5. Następnie wybierz pozycję Typy obiektów..., a następnie pozycję Konta usług, a następnie przycisk OK.
  6. Wprowadź nazwę konta usługi dla usług AD FS i wybierz przycisk OK.
    • W izolowanej konfiguracji usług AD FS konto usługi będzie mieć nazwę "adfssvc$"
    • Jeśli skonfigurujesz usługi AD FS przy użyciu usługi Microsoft Entra Połączenie, konto usługi będzie mieć nazwę "aadcsvc$"
  7. Po dodaniu konta usługi i jego wyświetlaniu na karcie Zabezpieczenia wybierz je w okienku Nazwy grup lub użytkowników, wybierz pozycję Zezwalaj zarówno na rejestrację, jak i automatyczne rejestrowanie w okienku Uprawnienia dla konta usługi AD FS, a następnie wybierz przycisk OK , aby zapisać.

Tworzenie szablonu certyfikatu logowania karty inteligentnej

Aby utworzyć szablon certyfikatu logowania karty inteligentnej:

  1. W urzędzie certyfikacji uruchom mmc.exe z menu Start, aby uruchomić program Microsoft Management Console.

  2. Wybierz pozycję Plik...>Dodaj/zdalne przystawki...>Szablony certyfikatów>Dodaj>OK, aby wyświetlić listę szablonów certyfikatów.

  3. Rozwiń szablony certyfikatów, kliknij prawym przyciskiem myszy pozycję Logon karty inteligentnej i wybierz pozycję Duplikuj szablon.

  4. Wybierz kartę Ogólne , a następnie wprowadź ciąg "ADFS SSO" w polu Nazwa wyświetlana szablonu. Spowoduje to automatyczne ustawienie nazwy szablonu na "ADFSSSO".

    Uwaga

    Ponieważ ten certyfikat jest żądany na żądanie, zalecamy skrócenie okresu ważności do 8 godzin i okres odnowienia do 1 godziny.

  5. Wybierz kartę Nazwa podmiotu, a następnie wybierz pozycję Podaj w żądaniu. Po wyświetleniu komunikatu ostrzegawczego wybierz przycisk OK.

    A screenshot showing the subject name tab of the SSO certificate template and what it should look like when properly configured.

  6. Wybierz kartę Wymagania dotyczące wystawiania.

  7. Wybierz tę liczbę autoryzowanych podpisów i wprowadź wartość 1.

    A screenshot showing the issuance requirements tab of the SSO certificate template and what it should look like when properly configured.

  8. W obszarze Zasady aplikacji wybierz pozycję Agent żądania certyfikatu.

  9. Wybierz kartę Zabezpieczenia , a następnie wybierz pozycję Dodaj....

  10. Wybierz pozycję Typy obiektów..., Konta usług i OK.

  11. Wprowadź nazwę konta usługi dla usług AD FS tak jak w sekcji Tworzenie szablonu certyfikatu agenta rejestracji.

    • W izolowanej konfiguracji usług AD FS konto usługi będzie mieć nazwę "adfssvc$"
    • Jeśli skonfigurujesz usługi AD FS przy użyciu usługi Microsoft Entra Połączenie, konto usługi będzie mieć nazwę "aadcsvc$"
  12. Po dodaniu konta usługi i jego widoczności na karcie Zabezpieczenia wybierz je w okienku Grupy lub nazwy użytkowników, wybierz pozycję Zezwalaj zarówno na rejestrację, jak i pozycję "Rejestracja automatyczna", a następnie wybierz przycisk OK , aby zapisać.

A screenshot showing the security tab of the SSO certificate template after it is properly configured.

Włącz nowe szablony certyfikatów:

Aby włączyć nowe szablony certyfikatów:

  1. W urzędzie certyfikacji uruchom mmc.exe z menu Start, aby uruchomić program Microsoft Management Console.

  2. Wybierz pozycję Plik...>Dodaj/usuń przystawkę...>Urząd>certyfikacji Dodaj >>zakończ> i OK, aby wyświetlić urząd certyfikacji.

  3. Rozwiń pozycję Urząd certyfikacji w okienku po lewej stronie i otwórz pozycję Szablony certyfikatów.

  4. Kliknij prawym przyciskiem myszy w środkowym okienku, które pokazuje listę szablonów certyfikatów, wybierz pozycję Nowy, a następnie wybierz pozycję Szablon certyfikatu do wystawienia.

  5. Wybierz zarówno agenta rejestracji usług AD FS, jak i logowanie jednokrotne usług AD FS, a następnie wybierz przycisk OK. Oba szablony powinny być widoczne w środkowym okienku.

    A screenshot showing list of certificate templates that can be issued, including the new ADFS Enrollment Agent and ADFS SSO.

    Uwaga

    Jeśli masz już skonfigurowany szablon certyfikatu agenta rejestracji, wystarczy dodać szablon logowania jednokrotnego usług AD FS.

Konfigurowanie serwerów AD FS

Należy skonfigurować serwery usług Active Directory Federation Services (AD FS) do używania nowych szablonów certyfikatów i ustawić zaufanie jednostki uzależnionej do obsługi logowania jednokrotnego.

Zaufanie jednostki uzależnionej między serwerem usług AD FS a usługą Azure Virtual Desktop umożliwia poprawne przekazywanie żądań certyfikatów logowania jednokrotnego do środowiska domeny.

Podczas konfigurowania logowania jednokrotnego usług AD FS należy wybrać klucz współużytkowany lub certyfikat:

  • Jeśli masz jeden serwer usług AD FS, możesz wybrać klucz współużytkowany lub certyfikat.
  • Jeśli masz wiele serwerów usług AD FS, wymagane jest wybranie certyfikatu.

Klucz współużytkowany lub certyfikat używany do generowania tokenu do logowania się do systemu Windows musi być bezpiecznie przechowywany w usłudze Azure Key Vault. Wpis tajny można przechowywać w istniejącym magazynie Key Vault lub wdrożyć nowy. W obu przypadkach należy ustawić odpowiednie zasady dostępu, aby usługa Azure Virtual Desktop mogła uzyskać do niej dostęp.

W przypadku korzystania z certyfikatu można użyć dowolnego certyfikatu ogólnego przeznaczenia i nie ma wymagania dotyczącego nazwy podmiotu ani alternatywnej nazwy podmiotu (SAN). Chociaż nie jest to wymagane, zaleca się utworzenie certyfikatu wystawionego przez prawidłowy urząd certyfikacji. Ten certyfikat można utworzyć bezpośrednio w usłudze Azure Key Vault i musi mieć eksportowalny klucz prywatny. Klucz publiczny można wyeksportować i użyć do skonfigurowania serwera usług AD FS przy użyciu poniższego skryptu. Należy pamiętać, że ten certyfikat różni się od certyfikatu SSL usług AD FS, który musi mieć odpowiednią nazwę podmiotu i prawidłowy urząd certyfikacji.

Skrypt programu PowerShell ConfigureWVDSSO.ps1 dostępny w Galeria programu PowerShell skonfiguruje serwer usług AD FS dla zaufania jednostki uzależnionej i zainstaluje certyfikat w razie potrzeby.

Ten skrypt ma tylko jeden wymagany parametr ADFSAuthority, który jest adresem URL rozpoznawanym przez usługi AD FS i używa wartości "/adfs" jako sufiksu. Na przykład https://adfs.contoso.com/adfs.

  1. Na maszynach wirtualnych usług AD FS uruchom następujące polecenie cmdlet programu PowerShell, aby skonfigurować usługi AD FS do używania szablonów certyfikatów z poprzedniej sekcji:

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

    Uwaga

    Jeśli masz już skonfigurowaną aplikację EnrollmentAgentCertificateTemplate, upewnij się, że używasz istniejącej nazwy szablonu zamiast ADFSEnrollmentAgent.

  2. Uruchom skrypt ConfigureWVDSSO.ps1.

    Uwaga

    Aby ukończyć następną część instrukcji, potrzebne są $config wartości zmiennych, więc nie zamykaj okna programu PowerShell użytego do wykonania poprzednich instrukcji. Możesz nadal używać tego samego okna programu PowerShell lub pozostawić je otwarte podczas uruchamiania nowej sesji programu PowerShell.

    • Jeśli używasz klucza współużytkowanego w usłudze Key Vault, uruchom następujące polecenie cmdlet programu PowerShell na serwerze usług AD FS z elementem ADFSServiceUrl zastąpione pełnym adresem URL, aby uzyskać dostęp do usługi AD FS:

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

      Uwaga

      Aby skonfigurować środowisko w suwerennej chmurze, takiej jak Azure Government, potrzebne są właściwości WvdWebAppAppIDUri i RdWebURL. W chmurze komercyjnej platformy Azure te właściwości są automatycznie ustawiane na https://www.wvd.microsoft.com i https://rdweb.wvd.microsoft.com odpowiednio.

    • Jeśli używasz certyfikatu w usłudze Key Vault, uruchom następujące polecenie cmdlet programu PowerShell na serwerze usług AD FS z elementem ADFSServiceUrl zastąpione pełnym adresem URL, aby uzyskać dostęp do usługi 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>"]
      

      Uwaga

      Aby skonfigurować środowisko w suwerennej chmurze, takiej jak Azure Government, potrzebne są właściwości WvdWebAppAppIDUri i RdWebURL. W chmurze komercyjnej platformy Azure te właściwości są automatycznie ustawiane na https://www.wvd.microsoft.com i https://rdweb.wvd.microsoft.com odpowiednio.

  3. Ustaw zasady dostępu w usłudze Azure Key Vault, uruchamiając następujące polecenie cmdlet programu PowerShell:

    Set-AzKeyVaultAccessPolicy -VaultName "<Key Vault Name>" -ServicePrincipalName 9cdead84-a844-4324-93f2-b2e6bb768d07 -PermissionsToSecrets get -PermissionsToKeys sign
    
  4. Przechowuj klucz udostępniony lub certyfikat w usłudze Azure Key Vault z tagiem zawierającym rozdzieloną przecinkami listę identyfikatorów subskrypcji, które mogą używać wpisu tajnego.

    • Jeśli używasz klucza współużytkowanego w usłudze Key Vault, uruchom następujące polecenie cmdlet programu PowerShell, aby zapisać klucz udostępniony i ustawić tag:

      $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]}
      
    • Jeśli certyfikat znajduje się już w usłudze Key Vault, uruchom następujące polecenie cmdlet programu PowerShell, aby ustawić tag:

      $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
      
    • Jeśli masz certyfikat lokalny, uruchom następujące polecenie cmdlet programu PowerShell, aby zaimportować certyfikat w usłudze Key Vault i ustawić tag:

      $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)
      

Uwaga

Opcjonalnie można skonfigurować, jak często użytkownicy są monitowani o poświadczenia, zmieniając ustawienia logowania jednokrotnego usług AD FS. Domyślnie użytkownicy będą monitowani co 8 godzin na niezarejestrowanych urządzeniach.

Konfigurowanie puli hostów usługi Azure Virtual Desktop

Nadszedł czas, aby skonfigurować parametry logowania jednokrotnego usług AD FS w puli hostów usługi Azure Virtual Desktop. W tym celu skonfiguruj środowisko programu PowerShell dla usługi Azure Virtual Desktop, jeśli jeszcze tego nie zrobiono i połącz się z kontem.

Następnie zaktualizuj informacje logowania jednokrotnego dla puli hostów, uruchamiając jedno z następujących dwóch poleceń cmdlet w tym samym oknie programu PowerShell na maszynie wirtualnej usług AD FS:

  • Jeśli używasz klucza współużytkowanego w usłudze Key Vault, uruchom następujące polecenie cmdlet programu 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
    

    Uwaga

    Należy ustawić właściwość SsoClientId tak, aby odpowiadała chmurze platformy Azure, w której wdrażasz logowanie jednokrotne. W chmurze komercyjnej platformy Azure ta właściwość powinna być ustawiona na https://www.wvd.microsoft.comwartość . Jednak wymagane ustawienie dla tej właściwości będzie inne w przypadku innych chmur, takich jak chmura platformy Azure Government.

  • Jeśli używasz certyfikatu w usłudze Key Vault, uruchom następujące polecenie cmdlet programu 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
    

    Uwaga

    Należy ustawić właściwość SsoClientId tak, aby odpowiadała chmurze platformy Azure, w której wdrażasz logowanie jednokrotne. W chmurze komercyjnej platformy Azure ta właściwość powinna być ustawiona na https://www.wvd.microsoft.comwartość . Jednak wymagane ustawienie dla tej właściwości będzie inne w przypadku innych chmur, takich jak chmura platformy Azure Government.

Konfigurowanie dodatkowych pul hostów

Jeśli musisz skonfigurować dodatkowe pule hostów, możesz pobrać ustawienia użyte do skonfigurowania istniejącej puli hostów w celu skonfigurowania nowej.

Aby pobrać ustawienia z istniejącej puli hostów, otwórz okno programu PowerShell i uruchom następujące polecenie cmdlet:

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

Aby skonfigurować pulę hostów usługi Azure Virtual Desktop, użyj tych samych wartości SsoClientId, SsoClientSecretKeyVaultPath, SsoSecretType i SsoadfsAuthority .

Usuwanie logowania jednokrotnego

Aby wyłączyć logowanie jednokrotne w puli hostów, uruchom następujące polecenie cmdlet:

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

Jeśli chcesz również wyłączyć logowanie jednokrotne na serwerze usług AD FS, uruchom następujące polecenie cmdlet:

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

Uwaga

Właściwość WvdWebAppAppIDUri musi być zgodna z wdrażaną chmurą platformy Azure. W chmurze komercyjnej platformy Azure ta właściwość to https://www.wvd.microsoft.com. Będzie ona inna w przypadku innych chmur, takich jak chmura platformy Azure Government.

Następne kroki

Po skonfigurowaniu logowania jednokrotnego możesz zalogować się do obsługiwanego klienta usługi Azure Virtual Desktop, aby przetestować go w ramach sesji użytkownika. Jeśli chcesz dowiedzieć się, jak nawiązać połączenie z sesją przy użyciu nowych poświadczeń, zapoznaj się z następującymi artykułami: