使用 Microsoft Entra 应用程序代理发布远程桌面

结合使用远程桌面服务和 Microsoft Entra 应用程序代理可提高远程办公人员的工作效率。

本文的目标读者为:

  • 想要通过远程桌面服务发布本地应用程序,为最终用户提供更多应用程序的当前应用程序代理客户。
  • 想要使用 Microsoft Entra 应用程序代理减小其部署的受攻击面的当前远程桌面服务客户。 此访问在 RDS 中提供一组双重验证和条件访问控制机制。

应用程序代理如何适应标准 RDS 部署

标准 RDS 部署包括 Windows Server 上运行的各种远程桌面角色服务。 远程桌面服务体系结构中存在多个部署选项。 和其他 RDS 部署选项不同,使用 Microsoft Entra 应用程序代理的 RDS 部署(如下图所示)可以从运行连接器服务的服务器提供永久性出站连接。 其他部署通过负载均衡器保留打开的入站连接。

Application proxy sits between the RDS VM and the public internet

在 RDS 部署中,远程桌面 (RD) Web 角色和 RD 网关角色在面向 Internet 的计算机上运行。 由于以下原因,已公开这些终结点:

  • RD Web 为用户提供一个公共终结点用于登录以及查看他们可以访问的各个本地应用程序和桌面。 选择资源后,会在 OS 上使用本机应用创建远程桌面协议 (RDP) 连接。
  • 用户启动 RDP 连接后,RD 网关开始发挥作用。 RD 网关处理通过 Internet 传入的加密 RDP 流量,并将其转换到用户要连接的本地服务器。 在此方案中,RD 网关接收的流量来自 Microsoft Entra 应用程序代理。

提示

如果以前尚未部署 RDS,或者在开始之前想要了解详细信息,请了解如何使用 Azure 资源管理器和 Azure 市场无缝部署 RDS

要求

  • RD Web 和 RD 网关终结点必须位于同一台计算机上,并且有一个共用的根。 RD Web 和 RD 网关将作为具有应用程序代理的单个应用程序发布,因此,可以在两个应用程序之间体验单一登录。
  • 部署 RDS启用应用程序代理。 启用应用程序代理并打开所需的端口和 URL,在服务器上启用传输层安全性 (TLS) 1.2。 若要了解需要打开哪些端口以及其他详细信息,请参阅教程:在 Microsoft Entra ID 中添加一个本地应用程序以通过应用程序代理进行远程访问
  • 最终用户必须使用兼容的浏览器才能连接到 RD Web 或 RD Web 客户端。 有关详细信息,请参阅客户端配置支持
  • 发布 RD Web 时,请尽可能使用相同的内部和外部完全限定的域名 (FQDN)。 如果内部和外部完全限定的域名 (FQDN) 不同,请禁用请求头转换,以免客户端收到无效链接。
  • 如果使用 RD Web 客户端,则必须使用相同的内部和外部 FQDN。 如果内部和外部 FQDN 不同,则通过 RD Web 客户端建立 RemoteApp 连接时会遇到 Websocket 错误。
  • 如果在 Internet Explorer 上使用 RD Web,则需要启用 RDS ActiveX 加载项。
  • 如果使用 RD Web 客户端,则需使用应用程序代理连接器 1.5.1975 或更高版本
  • 对于 Microsoft Entra 预身份验证流,用户只能连接到“RemoteApp 和桌面”窗格中发布给他们的资源。 用户无法使用“连接到远程电脑”窗格连接到桌面。
  • 如果使用 Windows Server 2019,则需禁用 HTTP2 协议。 有关详细信息,请参阅教程:添加本地应用程序以通过 Microsoft Entra ID 应用程序代理进行远程访问

部署 RDS 和应用程序代理联合方案

为环境设置 RDS 和 Microsoft Entra 应用程序代理后,请遵循合并两个解决方案的步骤。 这些步骤将会引导你以应用程序的形式发布两个面向 Web 的 RDS 终结点(RD Web 和 RD 网关),并定向 RDS 上的流量,使其流经应用程序代理。

发布 RD 主机终结点

  1. 使用以下值发布新的应用程序代理应用程序

    • 内部 URL:https://<rdhost>.com/,其中,<rdhost> 是 RD Web 和 RD 网关共享的共用根。
    • 外部 URL:系统会根据应用程序的名称自动填充此字段,但可以修改它。 用户在访问 RDS 时会转到此 URL。
    • 预身份验证方法:Microsoft Entra ID。
    • 转换 URL 标头:否。
    • 使用仅限 HTTP 的 Cookie:否。
  2. 将用户分配到已发布的 RD 应用程序。 确保这些用户也都有权访问 RDS。

  3. 将应用程序的单一登录方法保留为“已禁用 Microsoft Entra 单一登录”。

    注意

    用户必须在 Microsoft Entra ID 和 RD Web 上各执行身份验证一次,但用户可以单一登录到 RD 网关。

  4. 浏览到“标识”>“应用程序”>“应用注册”。 从列表中选择应用。

  5. 在“管理”下,选择“品牌打造” 。

  6. 更新“主页 URL”字段以指向你的 RD Web 终结点(如 https://<rdhost>.com/RDWeb)。

将 RDS 流量定向到应用程序代理

以管理员身份连接到 RDS 部署,并更改部署的 RD 网关服务器名称。 此配置可确保连接通过 Microsoft Entra 应用程序代理服务。

  1. 连接到运行 RD 连接代理角色的 RDS 服务器。

  2. 启动“服务器管理器”。

  3. 在左侧窗格中选择“远程桌面服务”。

  4. 选择“概述”。

  5. 在“部署概述”部分中,选择下拉菜单并选择“编辑部署属性”。

  6. 在“RD 网关”选项卡中,将“服务器名称”字段更改为针对应用程序代理中的 RD 主机终结点设置的外部 URL。

  7. 将“登录方法”字段更改为“密码身份验证”。

    Deployment Properties screen on RDS

  8. 为所有集合运行此命令。 用自己的信息替换 <yourcollectionname> 和 <proxyfrontendurl>。 此命令在 RD Web 与 RD 网关之间启用单一登录,并优化性能。

    Set-RDSessionCollectionConfiguration -CollectionName "<yourcollectionname>" -CustomRdpProperty "pre-authentication server address:s:<proxyfrontendurl>`nrequire pre-authentication:i:1"
    

    例如:

    Set-RDSessionCollectionConfiguration -CollectionName "QuickSessionCollection" -CustomRdpProperty "pre-authentication server address:s:https://remotedesktoptest-aadapdemo.msappproxy.net/`nrequire pre-authentication:i:1"
    

    注意

    上面的命令在“`nrequire”中使用反引号。

  9. 若要验证对自定义 RDP 属性的修改并查看从此集合的 RDWeb 下载的 RDP 文件内容,请运行以下命令。

    (get-wmiobject -Namespace root\cimv2\terminalservices -Class Win32_RDCentralPublishedRemoteDesktop).RDPFileContents
    

配置远程桌面后,Microsoft Entra 应用程序代理会充当 RDS 的面向 Internet 的组件。 请在 RD Web 和 RD 网关计算机上删除其他面向 Internet 的公共终结点。

启用 RD Web 客户端

如果希望用户使用 RD Web 客户端,请按照为用户设置远程桌面 Web 客户端中的步骤操作。

远程桌面 Web 客户端提供对组织的远程桌面基础结构的访问。 需要与 HTML5 兼容的 Web 浏览器,例如 Microsoft Edge、Google Chrome、Safari 或 Mozilla Firefox(v55.0 及更高版本)。

测试方案

在 Windows 7 或 10 计算机上使用 Internet Explorer 测试该方案。

  1. 转到设置的外部 URL,或者在 MyApps 面板中找到应用程序。
  2. 对 Microsoft Entra ID 进行身份验证。 请使用分配给应用程序的帐户。
  3. 向 RD Web 进行身份验证。
  4. RDS 身份验证成功后,可以选择所需的桌面或应用程序,并开始工作。

对其他客户端配置的支持

本文中所述的配置适用于通过 RD Web 或 RD Web 客户端访问 RDS。 但是,如果需要,也可以支持其他操作系统或浏览器。 区别在于你使用的身份验证方法会有不同。

身份验证方法 支持的客户端配置
预身份验证 RD Web - 使用 Microsoft Edge Chromium IE mode + RDS ActiveX 加载项的 Windows 7/10/11
预身份验证 RD Web 客户端 - 与 HTML5 兼容的 Web 浏览器(如 Microsoft Edge、Internet Explorer 11、Google Chrome、Safari 或 Mozilla Firefox(v55.0 和更高版本))
传递 支持 Microsoft 远程桌面应用程序的任何其他操作系统

注意

当“我的应用”门户用于访问远程桌面应用时,需要 Microsoft Edge Chromium IE 模式。

相比传递流,预身份验证流具有更多安全优势。 使用预身份验证,可以将单一登录、条件访问和双重验证等 Microsoft Entra 身份验证功能应用于本地资源。 此外,你还可以确保只有经过身份验证的流量才能访问你的网络。

若要使用传递身份验证,本文列出的步骤仅有下面两处修改:

  1. 发布 RD 主机终结点步骤 1 中,将预身份验证方法设置为“传递”
  2. 使 RDS 流量直接流向应用程序代理中,完全跳过步骤 8。

后续步骤