为 Azure 虚拟桌面配置使用 Microsoft Entra ID 的单一登录
使用 Microsoft Entra ID 的 Azure 虚拟桌面单一登录 (SSO) 可为连接到会话主机的用户提供无缝的登录体验。 启用单一登录后,用户可使用 Microsoft Entra ID 令牌向 Windows 进行身份验证。 此令牌允许在连接到会话主机时使用与 Microsoft Entra ID 联合的无密码身份验证和第三方标识提供程序,从而实现无缝登录体验。
使用 Microsoft Entra ID 的单一登录还可以为会话中基于 Microsoft Entra ID 的资源提供无缝体验。 若要详细了解如何在会话中使用无密码身份验证,请参阅会话内无密码身份验证。
若要启用使用 Microsoft Entra ID 身份验证的单一登录,必须完成以下 5 项任务:
为远程桌面协议 (RDP) 启用 Microsoft Entra 身份验证。
隐藏许可提示对话框。
如果 Active Directory 域服务是环境的一部分,请创建 Kerberos Server 对象。 有关条件的详细信息,请参阅其相关部分。
检查你的条件访问策略。
配置主机池以启用单一登录。
启用单一登录之前
在启用单一登录之前,请查看以下信息,了解如何在环境中使用它。
会话锁定行为
在启用使用 Microsoft Entra ID 的单一登录,并且远程会话被用户或策略锁定时,可以选择是断开会话连接还是显示远程锁定屏幕。 默认行为是在会话锁定时将其断开连接。
当会话锁定行为设置为断开连接时,会显示一个对话框,让用户知道他们已断开连接。 用户可以在准备好再次连接时从对话框中选择“重新连接”选项。 此行为出于安全原因执行,并确保完全支持无密码身份验证。 断开会话连接具有以下好处:
在需要时通过 Microsoft Entra ID 获得一致的登录体验。
在条件访问策略允许时获得单一登录体验,并且在无需身份验证提示的情况下重新连接。
与远程锁定屏幕相反,支持无密码身份验证,如密钥和 FIDO2 设备。
当用户重新连接到其会话时,会重新评估条件访问策略,包括多重身份验证和登录频率。
可以需要完成多重身份验证才能返回会话,并防止用户使用简单的用户名和密码解锁。
若要配置会话锁定行为以显示远程锁定屏幕而不是断开会话,请参阅配置会话锁定行为。
支持单一登录功能的 Active Directory 域管理员帐户
在具有 Active Directory 域服务 (AD DS) 和混合用户帐户的环境中,只读域控制器上的默认密码复制策略将拒绝域管理员和管理员安全组成员的密码复制。 此策略会阻止这些管理员帐户登录到 Microsoft Entra 混合联接主机,并可能持续提示其输入凭据。 它还将阻止管理员帐户从已联接到 Microsoft Entra 的主机访问使用 Kerberos 身份验证的本地资源。 出于安全原因,不建议使用域管理员帐户连接到远程会话。
如果需要以管理员身份更改会话主机,请使用非管理员帐户登录会话主机,然后从一个命令提示符使用以管理员身份运行选项或 runas 工具,以更改为管理员。
先决条件
在启用单一登录之前,必须满足以下先决条件:
若要配置 Microsoft Entra 租户,你必须分配有以下 Microsoft Entra 内置角色之一或等效角色:
会话主机必须运行安装了相关累积更新的以下操作系统之一:
安装了适用于 Windows 11 的 2022-10 累积更新 (KB5018418) 或更高版本更新的 Windows 11 企业版单会话或多会话。
安装了适用于 Windows 10 的 2022-10 累积更新 (KB5018410) 或更高版本更新的 Windows 10 企业版单会话或多会话。
安装了适用于 Microsoft 服务器操作系统的 2022-10 累积更新 (KB5018421) 或更高版本更新的 Windows Server 2022。
你的会话主机必须已加入 Microsoft Entra 或已建立 Microsoft Entra 混合联接。 不支持仅加入 Microsoft Entra域服务或 Active Directory 域服务的会话主机。
如果已建立 Microsoft Entra 混合联接的会话主机位于不同于用户帐户的 Active Directory 域中,则这两个域之间必须存在双向信任。 如果没有双向信任,则连接将回退到较旧的身份验证协议。
在本地设备上安装 Microsoft Graph PowerShell SDK 2.9.0 或更高版本。
用于连接到远程会话的受支持的远程桌面客户端。 支持以下客户端:
在运行 Windows 10 或更高版本的本地电脑上的 Windows 桌面客户端。 本地电脑无需加入 Microsoft Entra ID 或 Active Directory 域。
iOS 客户端 10.5.1 或更高版本。
启用面向 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 API 与 Graph 浏览器等工具配合使用。
在本地设备上运行 PowerShell。
- 如果在本地使用 PowerShell,请先使用 Azure PowerShell 登录,然后确保将 Azure 上下文设置为要使用的订阅。
请确保按照先决条件安装 Microsoft Graph PowerShell SDK,然后通过运行以下命令导入身份验证和应用程序 Microsoft Graph 模块,并使用
Application.Read.All
和Application-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"
通过运行以下命令获取每个服务主体的对象 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
通过运行以下命令将属性
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 }
通过运行以下命令确认属性
isRemoteDesktopProtocolEnabled
已设置为true
:Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId
输出应为:
Id IsRemoteDesktopProtocolEnabled -- ------------------------------ id True
隐藏许可提示对话框
默认情况下,启用单一登录后,用户会在连接到新的会话主机时看到一个对话框,用于允许远程桌面连接。 Microsoft Entra 最多记住 15 台主机 30 天,在 30 天之后会再次提示。 如果用户看到这个允许远程桌面连接的对话框,可以选择“是”进行连接。
可以通过配置受信任的设备列表来隐藏此对话框。 若要配置设备列表,请在包含会话主机的 Microsoft Entra ID 中创建一个或多个组,然后将组 ID 添加到 SSO 服务主体、Microsoft 远程桌面和 Windows 云登录上的属性中。
提示
建议使用动态组并配置动态成员身份规则,以包括所有 Azure 虚拟桌面会话主机。 可以使用此组中的设备名称,但为了获得更安全的选项,可以使用 Microsoft Graph API 设置和使用设备扩展属性。 动态组通常可在 5-10 分钟内完成更新,而大型租户可能需要 24 小时。
动态组需要 Microsoft Entra ID P1 许可证。 有关详细信息,请参阅组的动态成员身份规则。
若要配置服务主体,请使用 Microsoft Graph PowerShell SDK 在具有动态组对象 ID 和显示名称的服务主体上创建新的 targetDeviceGroup 对象。 还可以将 Microsoft Graph API 与 Graph 浏览器等工具配合使用。
在 Microsoft Entra ID 中创建动态组,其中包含要为其隐藏对话框的会话主机。 记下组的对象 ID,以便执行下一步操作。
在同一 PowerShell 会话中,通过运行以下命令创建
targetDeviceGroup
对象,并将<placeholders>
替换为你自己的值:$tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup $tdg.Id = "<Group object ID>" $tdg.DisplayName = "<Group display name>"
通过运行以下命令将组添加到
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 个组。如果以后需要从
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”。
后续步骤
请查看会话内无密码身份验证,以了解如何启用无密码身份验证。
了解如何配置 Azure 虚拟桌面的会话锁定行为。
有关 Microsoft Entra Kerberos 的详细信息,请参阅深入探讨:Microsoft Entra Kerberos 的工作原理。
如果遇到任何问题,请转到排查已联接 Microsoft Entra 的 VM 的连接问题。