다음을 통해 공유


AD FS를 사용하여 Azure Virtual Desktop에 대한 Single Sign-On 구성

이 문서에서는 Azure Virtual Desktop용 AD DS(Active Directory Federation Services) SSO(Single Sign-On)를 구성하는 과정을 안내합니다.

참고 항목

Azure Virtual Desktop(클래식)은 이 기능을 지원하지 않습니다.

필수 조건

AD FS Single Sign-On를 구성하기 전에 사용자 환경에서 다음 설정을 실행해야 합니다.

  • 지원되는 버전의 Windows 10 또는 Windows 11을 실행하는 세션 호스트입니다.

  • Active Directory CA(인증서 서비스) 역할을 배포해야 합니다. 이 역할을 실행하는 모든 서버는 도메인에 가입되어 있고, 최신 Windows 업데이트가 설치되어 있고, 엔터프라이즈 인증 기관으로 구성되어야 합니다.

  • AD FS(Active Directory Federation Services) 역할을 배포해야 합니다. 이 역할을 실행하는 모든 서버는 도메인에 가입되어 있고, 최신 Windows 업데이트가 설치되어 있고, Windows Server 2016 이상에서 실행되고 있어야 합니다. 이 역할 설정을 시작하려면 페더레이션 자습서를 참조하세요.

  • AD FS 서버에 대한 작업 환경의 연결을 보호하려면 웹 애플리케이션 프록시 역할을 설정하는 것이 좋습니다. 이 역할을 실행하는 모든 서버는 최신 Windows 업데이트가 설치되어 있고, Windows Server 2016 이상에서 실행되고 있어야 합니다. 이 역할 설정을 시작하려면 이 웹 애플리케이션 프록시 가이드를 참조하세요.

  • Microsoft Entra Connect를 배포하여 사용자를 Microsoft Entra ID에 동기화해야 합니다. Microsoft Entra Connect는 페더레이션 모드로 구성해야 합니다.

  • AD FS 서버에서 Azure Virtual Desktop에 대한 PowerShell 환경을 설정합니다.

참고 항목

이 솔루션은 Microsoft Entra Domain Services에서 지원되지 않습니다. Active Directory Domain Services 도메인 컨트롤러를 사용해야 합니다.

지원되는 클라이언트

다음 Azure Virtual Desktop 클라이언트가 이 기능을 지원합니다.

인증서를 발급하도록 인증 기관 구성

AD FS에서 SSO를 사용할 수 있도록 하려면 다음 인증서 템플릿을 올바르게 만들어야 합니다.

  • 먼저 Exchange 등록 에이전트(오프라인 요청) 인증서 템플릿을 만들어야 합니다. AD FS는 Exchange 등록 에이전트 인증서 템플릿을 사용하여 사용자 대신 인증서를 요청합니다.
  • 또한 AD FS가 로그인 인증서를 만드는 데 사용할 스마트 카드 로그온 인증서 템플릿을 만들어야 합니다.

이러한 인증서 템플릿을 만든 후에는 AD FS에서 요청할 수 있도록 인증 기관에서 템플릿을 사용하도록 설정해야 합니다.

참고 항목

이 솔루션은 사용자가 로그인할 때마다 새로운 단기 인증서를 생성하며, 사용자가 많은 경우 인증 기관 데이터베이스를 채울 수 있습니다. 비영구적 인증서 처리를 위한 CA를 설정하여 데이터베이스 과부하를 방지할 수 있습니다. 이 작업을 수행하는 경우 복제된 스마트 카드 로그온 인증서 템플릿에서 인증서 및 요청을 CA 데이터베이스에 저장하지 않음만 사용하도록 설정해야 합니다. 발급된 인증서에 해지 정보를 포함하지 않음을 사용하도록 설정하지 마세요. 그렇지 않으면 구성이 작동하지 않습니다.

등록 에이전트 인증서 템플릿 만들기

사용자 환경에 따라 비즈니스용 Windows Hello, 로그온 인증서 또는 VPN 인증서 등의 다른 용도로 등록 에이전트 인증서 템플릿을 이미 구성했을 수 있습니다. 이 경우 SSO를 지원하도록 수정해야 합니다. 그렇지 않은 경우 새 템플릿을 만들 수 있습니다.

등록 에이전트 인증서 템플릿을 이미 사용하고 있는지 확인하려면 AD FS 서버에서 다음 PowerShell 명령을 실행하고 값이 반환되는지 확인합니다. 비어 있는 경우 새 등록 에이전트 인증서 템플릿을 만듭니다. 그렇지 않으면 이름을 저장한 후 기존 등록 에이전트 인증서 템플릿을 업데이트합니다.

Import-Module adfs
(Get-AdfsCertificateAuthority).EnrollmentAgentCertificateTemplateName

새 등록 에이전트 인증서 템플릿을 만들려면 다음을 수행합니다.

  1. 인증 기관의 시작 메뉴에서 mmc.exe를 실행하여 Microsoft Management Console을 시작합니다.

  2. 파일...>스냅인 추가/제거...>인증서 템플릿>추가 >>확인을 선택하여 인증서 템플릿 목록을 확인합니다.

  3. 인증서 템플릿을 확장하고 Exchange 등록 에이전트(오프라인 요청)를 마우스 오른쪽 단추로 클릭한 후 템플릿 복제를 선택합니다.

  4. 일반 탭을 선택한 다음, 템플릿 표시 이름 필드에 "ADFS 등록 에이전트"를 입력합니다. 그러면 템플릿 이름이 자동으로 "ADFSEnrollmentAgent"로 설정됩니다.

  5. 보안 탭을 선택한 다음, 추가...를 선택합니다.

  6. 다음으로 개체 유형..., 서비스 계정확인을 차례로 선택합니다.

  7. AD FS의 서비스 계정 이름을 입력하고 확인을 선택합니다.

    • 격리된 AD FS 설정에서 서비스 계정의 이름은 "adfssvc$"로 지정됩니다.
    • Microsoft Entra Connect를 사용하여 AD FS를 설정하는 경우 서비스 계정의 이름은 "aadcsvc$"로 지정됩니다.
  8. 서비스 계정이 추가되고 보안 탭에 표시되면 그룹 또는 사용자 이름 창에서 해당 계정을 선택하고 AD FS 서비스 계정에 대한 권한 창에서 "등록" 및 "자동 등록" 둘 다에 대해 허용을 선택한 다음, 확인을 선택하여 저장합니다.

    등록 에이전트 인증서 템플릿이 제대로 구성된 후의 보안 탭을 보여 주는 스크린샷

기존 등록 에이전트 인증서 템플릿을 업데이트하려면

  1. 인증 기관의 시작 메뉴에서 mmc.exe를 실행하여 Microsoft Management Console을 시작합니다.
  2. 파일...>스냅인 추가/제거...>인증서 템플릿>추가 >>확인을 선택하여 인증서 템플릿 목록을 확인합니다.
  3. 인증서 템플릿을 확장하고 AD FS 서버에 구성된 템플릿에 해당하는 템플릿을 두 번 클릭합니다. 일반 탭에서 템플릿 이름은 위에서 찾은 이름과 일치해야 합니다.
  4. 보안 탭을 선택한 다음, 추가...를 선택합니다.
  5. 다음으로 개체 유형..., 서비스 계정확인을 차례로 선택합니다.
  6. AD FS의 서비스 계정 이름을 입력하고 확인을 선택합니다.
    • 격리된 AD FS 설정에서 서비스 계정의 이름은 "adfssvc$"로 지정됩니다.
    • Microsoft Entra Connect를 사용하여 AD FS를 설정하는 경우 서비스 계정의 이름은 "aadcsvc$"로 지정됩니다.
  7. 서비스 계정이 추가되고 보안 탭에 표시되면 그룹 또는 사용자 이름 창에서 해당 계정을 선택하고 AD FS 서비스 계정에 대한 권한 창에서 "등록" 및 "자동 등록" 둘 다에 대해 허용을 선택한 다음, 확인을 선택하여 저장합니다.

스마트 카드 로그온 인증서 템플릿 만들기

스마트 카드 로그온 인증서 템플릿을 만들려면

  1. 인증 기관의 시작 메뉴에서 mmc.exe를 실행하여 Microsoft Management Console을 시작합니다.

  2. 파일...>스냅인 추가/제거...>인증서 템플릿>추가>확인을 선택하여 인증서 템플릿 목록을 확인합니다.

  3. 인증서 템플릿을 확장하고 스마트 카드 로그온을 마우스 오른쪽 단추로 클릭한 후 템플릿 복제를 선택합니다.

  4. 일반 탭을 선택한 다음, 템플릿 표시 이름 필드에 "ADFS SSO"를 입력합니다. 그러면 템플릿 이름이 자동으로 "ADFSSSO"로 설정됩니다.

    참고 항목

    이 인증서는 주문형으로 요청되므로 유효 기간을 8시간으로, 갱신 기간을 1시간으로 줄이는 것이 좋습니다.

  5. 주체 이름 탭을 선택한 다음, 요청에서 제공을 선택합니다. 경고 메시지가 표시되면 확인을 선택합니다.

    SSO 인증서 템플릿의 주체 이름 탭과 올바르게 구성된 경우의 모양을 보여 주는 스크린샷

  6. 발급 요구 사항 탭을 선택합니다.

  7. 다음 개수의 인증된 서명을 선택하고 값 1을 입력합니다.

    SSO 인증서 템플릿의 발급 요구 사항 탭과 올바르게 구성된 경우의 모양을 보여 주는 스크린샷

  8. 애플리케이션 정책으로 인증서 요청 에이전트를 선택합니다.

  9. 보안 탭을 선택한 다음, 추가...를 선택합니다.

  10. 개체 유형..., 서비스 계정확인을 차례로 선택합니다.

  11. 등록 에이전트 인증서 템플릿 만들기 섹션에서와 마찬가지로 AD FS의 서비스 계정 이름을 입력합니다.

    • 격리된 AD FS 설정에서 서비스 계정의 이름은 "adfssvc$"로 지정됩니다.
    • Microsoft Entra Connect를 사용하여 AD FS를 설정하는 경우 서비스 계정의 이름은 "aadcsvc$"로 지정됩니다.
  12. 서비스 계정이 추가되고 보안 탭에 표시되면 그룹 또는 사용자 이름 창에서 해당 계정을 선택하고 "등록" 및 "자동 등록" 둘 다에 대해 허용을 선택한 다음, 확인을 선택하여 저장합니다.

올바르게 구성된 후 SSO 인증서 템플릿의 보안 탭을 보여 주는 스크린샷

새 인증서 템플릿을 사용하도록 설정합니다.

새 인증서 템플릿을 사용하도록 설정하려면

  1. 인증 기관의 시작 메뉴에서 mmc.exe를 실행하여 Microsoft Management Console을 시작합니다.

  2. 파일...>스냅인 추가/제거...>인증 기관> 추가 >>마침> 확인을 선택하여 인증 기관을 확인합니다.

  3. 왼쪽 창에서 인증 기관을 확장하고 인증서 템플릿을 엽니다.

  4. 인증서 템플릿 목록을 표시하는 가운데 창에서 마우스 오른쪽 단추를 클릭하고, 새로 만들기를 선택한 다음, 발급할 인증서 템플릿을 선택합니다.

  5. ADFS 등록 에이전트ADFS SSO를 둘 다 선택한 후 확인을 선택합니다. 가운데 창에 두 템플릿이 모두 표시됩니다.

    새 ADFS 등록 에이전트 및 ADFS SSO를 포함하여 발급할 수 있는 인증서 템플릿 목록을 보여 주는 스크린샷

    참고 항목

    등록 에이전트 인증서 템플릿이 이미 구성되어 있으면 ADFS SSO 템플릿만 추가하면 됩니다.

AD FS 서버를 구성 합니다.

새 인증서 템플릿을 사용하도록 AD FS(Active Directory Federation Services) 서버를 구성하고 SSO를 지원하도록 신뢰 당사자 트러스트를 설정해야 합니다.

AD FS 서버와 Azure Virtual Desktop 서비스 간의 신뢰 당사자 트러스트를 통해 Single Sign-On 인증서 요청이 도메인 환경에 올바르게 전달될 수 있습니다.

AD FS Single Sign-On을 구성하는 경우 공유 키 또는 인증서를 선택해야 합니다.

  • 단일 AD FS 서버가 있는 경우 공유 키 또는 인증서를 선택할 수 있습니다.
  • AD FS 서버가 여러 개 있는 경우 인증서를 선택해야 합니다.

Windows에 로그인하기 위한 토큰을 생성하는 데 사용되는 공유 키 또는 인증서는 Azure Key Vault에 안전하게 저장해야 합니다. 기존 Key Vault에 비밀을 저장하거나 새 비밀을 배포할 수 있습니다. 어떤 경우든 Azure Virtual Desktop 서비스에서 액세스할 수 있도록 올바른 액세스 정책을 설정해야 합니다.

인증서를 사용하는 경우 어떤 범용 인증서도 사용할 수 있으며 주체 이름 또는 SAN(주체 대체 이름)에 대한 요구 사항은 없습니다. 필수는 아니지만 유효한 인증 기관에서 발급한 인증서를 만드는 것이 좋습니다. 이 인증서는 Azure Key Vault에서 직접 만들 수 있으며, 내보낼 수 있는 프라이빗 키가 있어야 합니다. 퍼블릭 키를 내보낸 다음, 아래 스크립트를 사용하여 AD FS 서버를 구성하는 데 사용할 수 있습니다. 이 인증서는 적절한 주체 이름과 유효한 인증 기관이 있어야 하는 AD FS SSL 인증서와는 다릅니다.

PowerShell 갤러리에서 사용할 수 있는 PowerShell 스크립트 ConfigureWVDSSO.ps1은 신뢰 당사자 트러스트에 대한 AD FS 서버를 구성하고 필요한 경우 인증서를 설치합니다.

이 스크립트에는 AD FS로 확인되고 "/adfs"를 접미사로 사용하는 URL에 해당하는 하나의 필수 매개 변수 ADFSAuthority만 있습니다. 예: https://adfs.contoso.com/adfs.

  1. AD FS VM에서 다음 PowerShell cmdlet을 실행하여 이전 섹션의 인증서 템플릿을 사용하도록 AD FS를 구성합니다.

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

    참고 항목

    EnrollmentAgentCertificateTemplate이 이미 구성되어 있는 경우 ADFSEnrollmentAgent 대신 기존 템플릿 이름을 사용해야 합니다.

  2. ConfigureWVDSSO.ps1 스크립트를 실행 합니다.

    참고 항목

    지침의 다음 부분을 완료하려면 $config 변수 값이 필요하므로 이전 지침을 완료하는 데 사용한 PowerShell 창을 닫지 마세요. 동일한 PowerShell 창을 계속 사용하거나 새 PowerShell 세션을 시작하는 동안 열어 둘 수 있습니다.

    • Key Vault에서 공유 키를 사용하는 경우 ADFSServiceUrl을 AD FS 서비스에 도달하기 위한 전체 URL로 바꾸고 AD FS 서버에서 다음 PowerShell cmdlet을 실행합니다.

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

      참고 항목

      Azure Government와 같은 소버린 클라우드에서 환경을 구성하려면 WvdWebAppAppIDUri 및 RdWebURL 속성이 필요 합니다. Azure 상용 클라우드에서 이러한 속성은 각각 https://www.wvd.microsoft.comhttps://rdweb.wvd.microsoft.com으로 자동 설정됩니다.

    • Key Vault에서 인증서를 사용하는 경우 ADFSServiceUrl을 AD FS 서비스에 도달하기 위한 전체 URL로 바꾸고 AD FS 서버에서 다음 PowerShell cmdlet을 실행합니다.

      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 Government와 같은 소버린 클라우드에서 환경을 구성하려면 WvdWebAppAppIDUri 및 RdWebURL 속성이 필요 합니다. Azure 상용 클라우드에서 이러한 속성은 각각 https://www.wvd.microsoft.comhttps://rdweb.wvd.microsoft.com으로 자동 설정됩니다.

  3. 다음 PowerShell cmdlet을 실행하여 Azure Key Vault에 대한 액세스 정책을 설정합니다.

    Set-AzKeyVaultAccessPolicy -VaultName "<Key Vault Name>" -ServicePrincipalName 9cdead84-a844-4324-93f2-b2e6bb768d07 -PermissionsToSecrets get -PermissionsToKeys sign
    
  4. 비밀을 사용하도록 허용된 쉼표로 구분된 구독 ID 목록을 포함하는 태그를 사용하여 Azure Key Vault에 공유 키 또는 인증서를 저장합니다.

    • Key Vault에서 공유 키를 사용하는 경우 다음 PowerShell cmdlet을 실행하여 공유 키를 저장하고 태그를 설정합니다.

      $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 cmdlet을 실행하여 태그를 설정합니다.

      $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 cmdlet을 실행하여 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 Single Sign-On 설정을 변경하여 사용자에게 자격 증명을 묻는 메시지가 표시되는 빈도를 구성할 수 있습니다. 기본적으로 등록되지 않은 디바이스에서는 8시간마다 메시지가 표시됩니다.

Azure Virtual Desktop 호스트 풀 구성

이제 Azure Virtual Desktop 호스트 풀에서 AD FS SSO 매개 변수를 구성해야 합니다. 이렇게 하려면 Azure Virtual Desktop에 대한 PowerShell 환경을 설정하지 않았으면 설정하고 계정에 연결합니다.

그런 다음, AD FS VM의 동일한 PowerShell 창에서 다음 두 cmdlet 중 하나를 실행하여 호스트 풀에 대한 SSO 정보를 업데이트합니다.

  • Key Vault에서 공유 키를 사용하는 경우 다음 PowerShell cmdlet을 실행합니다.

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

    참고 항목

    SSO를 배포하는 Azure 클라우드와 일치하도록 SsoClientId 속성을 설정해야 합니다. Azure 상용 클라우드에서 이 속성은 https://www.wvd.microsoft.com으로 설정해야 합니다. 그러나 이 속성의 필수 설정은 Azure Government 클라우드 등의 다른 클라우드의 경우에는 다릅니다.

  • Key Vault의 인증서를 사용하는 경우 다음 PowerShell cmdlet을 실행합니다.

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

    참고 항목

    SSO를 배포하는 Azure 클라우드와 일치하도록 SsoClientId 속성을 설정해야 합니다. Azure 상용 클라우드에서 이 속성은 https://www.wvd.microsoft.com으로 설정해야 합니다. 그러나 이 속성의 필수 설정은 Azure Government 클라우드 등의 다른 클라우드의 경우에는 다릅니다.

추가 호스트 풀 구성

추가 호스트 풀을 구성해야 하는 경우 기존 호스트 풀을 구성하는 데 사용한 설정을 검색하여 새 호스트 풀을 설정할 수 있습니다.

기존 호스트 풀에서 설정을 검색하려면 PowerShell 창을 열고 다음 cmdlet을 실행합니다.

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

동일한 SsoClientId, SsoClientSecretKeyVaultPath, SsoSecretTypeSsoadfsAuthority 값을 사용하여 Azure Virtual Desktop 호스트 풀을 구성하는 단계를 수행할 수 있습니다.

SSO 제거

호스트 풀에서 SSO를 사용하지 않도록 설정하려면 다음 cmdlet을 실행합니다.

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

또한 AD FS 서버에서 SSO를 사용하지 않도록 설정하려면 다음 cmdlet을 실행합니다.

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 Government 클라우드 등의 다른 클라우드에서는 달라집니다.

다음 단계

Single Sign-On을 구성했으므로 이제 지원되는 Azure Virtual Desktop 클라이언트에 로그인하여 사용자 세션의 일부로 테스트할 수 있습니다. 새 자격 증명을 사용하여 세션에 연결하는 방법을 알아보려면 다음 문서를 확인하세요.