你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure 虚拟桌面配置使用 Microsoft Entra ID 身份验证的单一登录

本文将引导你完成为 Azure 虚拟桌面配置使用 Microsoft Entra ID 身份验证的单一登录 (SSO) 的过程。 启用单一登录后,用户可使用 Microsoft Entra ID 令牌向 Windows 进行身份验证。 此令牌允许在连接到会话主机时使用与 Microsoft Entra ID 联合的无密码身份验证和第三方标识提供程序,从而实现无缝登录体验。

使用 Microsoft Entra ID 身份验证的单一登录还可以为会话中基于 Microsoft Entra ID 的资源提供无缝体验。 若要详细了解如何在会话中使用无密码身份验证,请参阅会话内无密码身份验证

若要启用使用 Microsoft Entra ID 身份验证的单一登录,必须完成以下 5 项任务:

  1. 为远程桌面协议 (RDP) 启用 Microsoft Entra 身份验证。

  2. 配置目标设备组。

  3. 如果 Active Directory 域服务是环境的一部分,请创建 Kerberos Server 对象。 有关条件的详细信息,请参阅其相关部分。

  4. 检查你的条件访问策略。

  5. 配置主机池以启用单一登录。

启用单一登录之前

在启用单一登录之前,请查看以下信息,了解如何在环境中使用它。

会话锁定时断开连接

启用单一登录后,可以使用 Microsoft Entra ID 身份验证令牌登录 Windows,该令牌支持向 Windows 进行无密码身份验证。 远程会话中的 Windows 锁屏界面不支持 Microsoft Entra ID 身份验证令牌或 FIDO 密钥之类的无密码身份验证方法。 不支持这些身份验证方法意味着用户无法在远程会话中解锁屏幕。 当你尝试通过用户操作或系统策略锁定远程会话时,会话会断开连接,服务会向用户发送一条消息,说明其已断开连接。

断开会话还可以确保在一段时间不活动后重新启动连接时,Microsoft Entra ID 会重新评估任何适用的条件访问策略。

将 Active Directory 域管理员帐户与单一登录配合使用

在具有 Active Directory 域服务 (AD DS) 和混合用户帐户的环境中,只读域控制器上的默认密码复制策略将拒绝域管理员管理员安全组成员的密码复制。 此策略会阻止这些管理员帐户登录到 Microsoft Entra 混合联接主机,并可能持续提示其输入凭据。 它还将阻止管理员帐户从已联接到 Microsoft Entra 的主机访问使用 Kerberos 身份验证的本地资源。

若要允许这些管理员帐户在启用单一登录时进行连接,请参阅允许 Active Directory 域管理员帐户连接

先决条件

在启用单一登录之前,必须满足以下先决条件:

启用面向 RDP 的 Microsoft Entra 身份验证

必须先允许 Microsoft Entra 租户中的 Windows 进行 Microsoft Entra 身份验证,这样才能发出 RDP 访问令牌,从而允许用户登录到 Azure 虚拟桌面会话主机。 在以下 Microsoft Entra 应用程序的服务主体的 remoteDesktopSecurityConfiguration 对象上,将 isRemoteDesktopProtocolEnabled 属性设置为 true:

应用程序名称 应用程序 ID
Microsoft 远程桌面 a4a365df-50f1-4397-bc59-1a1564b8bb9c
Windows 云登录 270efc09-cd0d-444b-a71f-39af4910ec45

重要

作为即将进行的更改的一部分,我们将从 2024 年开始从 Microsoft 远程桌面过渡到 Windows 云登录。 配置这两个应用程序现在可确保为更改做好准备。

若要配置服务主体,请使用 Microsoft Graph PowerShell SDK 在服务主体上创建新的 remoteDesktopSecurityConfiguration 对象,并将属性 isRemoteDesktopProtocolEnabled 设置为 true。 还可以将 Microsoft Graph APIGraph 浏览器等工具配合使用。

  1. 在 Azure 门户中启动 PowerShell 终端类型的 Azure Cloud Shell,或在本地设备上运行 PowerShell。

    1. 如果使用 Cloud Shell,请确保将 Azure 上下文设置为要使用的订阅

    2. 如果在本地使用 PowerShell,请先使用 PowerShell 登录,然后确保 Azure 上下文设置为要使用的订阅

  1. 请确保按照先决条件安装 Microsoft Graph PowerShell SDK,然后通过运行以下命令导入身份验证应用程序 Microsoft Graph 模块,并使用 Application.Read.AllApplication-RemoteDesktopConfig.ReadWrite.All 范围连接到 Microsoft Graph:

    Import-Module Microsoft.Graph.Authentication
    Import-Module Microsoft.Graph.Applications
    
    Connect-MgGraph -Scopes "Application.Read.All","Application-RemoteDesktopConfig.ReadWrite.All"
    
  2. 通过运行以下命令获取每个服务主体的对象 ID 并将其存储在变量中:

    $MSRDspId = (Get-MgServicePrincipal -Filter "AppId eq 'a4a365df-50f1-4397-bc59-1a1564b8bb9c'").Id
    $WCLspId = (Get-MgServicePrincipal -Filter "AppId eq '270efc09-cd0d-444b-a71f-39af4910ec45'").Id
    
  3. 通过运行以下命令将属性 isRemoteDesktopProtocolEnabled 设置为 true。 这些命令没有输出。

    If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId) -ne $true) {
        Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId -IsRemoteDesktopProtocolEnabled
    }
    
    If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId) -ne $true) {
        Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled
    }
    
  4. 通过运行以下命令确认属性 isRemoteDesktopProtocolEnabled 已设置为 true

    Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId
    Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId
    

    输出应为:

    Id IsRemoteDesktopProtocolEnabled
    -- ------------------------------
    id True
    

配置目标设备组

为 RDP 启用 Microsoft Entra 身份验证后,需要配置目标设备组。 默认情况下,在启用单一登录后,系统会在启动与新主机的连接时提示用户向 Microsoft Entra ID 进行身份验证并允许远程桌面连接。 Microsoft Entra 最多记住 15 台主机 30 天,在 30 天之后会再次提示。 如果看到允许远程桌面连接的对话框,请选择“”进行连接。

可以隐藏此对话框,并通过配置受信任设备的列表为连接到所有会话主机提供单一登录。 需要在包含会话主机的 Microsoft Entra ID 中创建一个或多个组,然后在与上一部分中使用的相同 Microsoft 远程桌面Windows 云登录应用程序的服务主体上,为该组设置属性。

提示

建议使用动态组并配置动态成员身份规则,以包括所有 Azure 虚拟桌面会话主机。 可以使用此组中的设备名称,但为了获得更安全的选项,可以使用 Microsoft Graph API 设置和使用设备扩展属性。 动态组通常可在 5-10 分钟内完成更新,而大型租户可能需要 24 小时。

动态组需要 Microsoft Entra ID P1 许可证或 Intune 教育版许可证。 有关详细信息,请参阅组的动态成员身份规则

若要配置服务主体,请使用 Microsoft Graph PowerShell SDK 在具有动态组对象 ID 和显示名称的服务主体上创建新的 targetDeviceGroup 对象。 还可以将 Microsoft Graph APIGraph 浏览器等工具配合使用。

  1. 在 Microsoft Entra ID 中创建动态组,其中包含要为其隐藏对话框的会话主机。 记下组的对象 ID,以便执行下一步操作。

  2. 在同一 PowerShell 会话中,通过运行以下命令创建 targetDeviceGroup 对象,并将 <placeholders> 替换为你自己的值:

    $tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup
    $tdg.Id = "<Group object ID>"
    $tdg.DisplayName = "<Group display name>"
    
  3. 通过运行以下命令将组添加到 targetDeviceGroup 对象:

    New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $MSRDspId -BodyParameter $tdg
    New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -BodyParameter $tdg
    

    输出应类似于:

    Id                                   DisplayName
    --                                   -----------
    12345678-abcd-1234-abcd-1234567890ab Contoso-session-hosts
    

    对要添加到 targetDeviceGroup 对象的每个组重复步骤 2 和步骤 3,最多 10 个组。

  4. 如果以后需要从 targetDeviceGroup 对象中删除设备组,请运行以下命令,并将 <placeholders> 替换为你自己的值:

    Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $MSRDspId -TargetDeviceGroupId "<Group object ID>"
    Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -TargetDeviceGroupId "<Group object ID>"
    

创建 Kerberos 服务器对象

如果会话主机符合以下条件,则必须创建 Kerberos 服务器对象

  • 会话主机已进行 Microsoft Entra 混合联接。 必须具有 Kerberos 服务器对象才能完成对域控制器的身份验证。
  • 会话主机已联接到 Microsoft Entra,并且你的环境包含 Active Directory 域控制器。 必须具有 Kerberos 服务器对象,用户才能访问本地资源(例如 SMB 共享),还必须对网站进行 Windows 集成身份验证。

重要

如果在创建 Kerberos 服务器对象之前在已建立 Microsoft Entra 混合联接的会话主机上启用了单一登录,则可能发生以下情况之一:

  • 收到一条错误消息,指出特定会话不存在。
  • 将跳过单一登录,你会看到会话主机的标准身份验证对话框。

若要解决这些问题,请创建 Kerberos 服务器对象,然后重新连接。

查看你的条件访问策略

启用单一登录后,将会引入新的 Microsoft Entra ID 应用,以向会话主机验证用户身份。 如果具有在访问 Azure 虚拟桌面时应用的条件访问策略,请查看有关设置多重身份验证的建议,以确保用户获得所需的体验。

配置主机池以启用单一登录

若要在主机池上启用单一登录,必须配置以下 RDP 属性,可以使用 Microsoft Azure 门户或 PowerShell 执行此操作。 可以在自定义主机池的远程桌面协议 (RDP) 属性中找到配置 RDP 属性的步骤。

  • 在Azure 门户中,将“Microsoft Entra 单一登录”设置为“连接将使用 Microsoft Entra 身份验证来提供单一登录”
  • 对于 PowerShell,请将“enablerdsaadauth”属性设置为“1”。

允许 Active Directory 域管理员帐户连接

若要允许 Active Directory 域管理员帐户在启用单一登录时进行连接,请执行以下操作:

  1. 在用于管理 Active Directory 域的设备上,使用属于域管理员安全组成员的帐户,打开“Active Directory 用户和计算机”控制台。

  2. 打开域的“域控制器”组织单位。

  3. 找到 AzureADKerberos 对象,右键单击它,然后选择“属性”。

  4. 选择“密码复制策略”选项卡。

  5. 将“域管理员”的策略从“拒绝”更改为“允许”。

  6. 删除“管理员”的策略。 “域管理员”组是“管理员”组的成员,因此拒绝管理员复制也会拒绝域管理员的复制。

  7. 选择“确定”,保存所做更改。

后续步骤