使用 SharePoint、Exchange 和 RDG 发布应用程序

本部分内容与 Web 应用程序代理的本地版本相关。 若要支持通过云对本地应用程序进行安全访问,请参阅 Microsoft Entra 应用程序代理内容

本主题介绍通过 Web 应用程序代理发布 SharePoint Server、Exchange Server 或远程桌面网关 (RDP) 所需的任务。

注意

此信息按原样提供。 远程桌面服务支持并建议使用 Azure 应用程序代理来提供对本地应用程序的安全远程访问

发布 SharePoint Server

在 SharePoint 站点配置为基于声明的身份验证或集成 Windows 身份验证时,你可以通过 Web 应用程序代理发布该站点。 如果要使用 Active Directory 联合身份验证服务 (AD FS) 进行预身份验证,则必须使用其中一个向导配置信赖方。

  • 如果 SharePoint 站点使用基于声明的身份验证,则必须使用添加信赖方信任向导来配置用于身份验证的信赖方信任。

  • 如果 SharePoint 站点使用集成 Windows 身份验证,则必须使用添加非基于声明的信赖方信任向导来配置用于身份验证的信赖方信任。 假如配置 KDC,可以将 IWA 与基于声明的 Web 应用程序一起使用。

    若要允许用户通过使用集成 Windows 身份验证进行身份验证,则 Web 应用程序代理服务器必须加入域。

    必须将应用程序配置为支持 Kerberos 约束委派。 可以在域控制器上针对任何应用程序执行此操作。 如果应用程序在 Windows Server 2012 R2 或 Windows Server 2012 上运行,你还可以直接在后端服务器上配置该应用程序。 有关详细信息,请参阅 Kerberos 身份验证的新增功能。 还必须确保 Web 应用程序代理服务器配置为委派给后端服务器的服务主体名称。 有关如何配置 Web 应用程序代理以发布使用集成 Windows 身份验证的应用程序的操作实例,请参阅将站点配置为使用集成 Windows 身份验证

如果使用备用访问映射 (AAM) 或主机命名的站点集来配置 SharePoint 站点,则可以使用不同的外部 URL 和后端服务器 URL 来发布应用程序。 但是,如果未使用 AAM 或主机命名的站点集配置 SharePoint 站点,则必须使用相同的外部 URL 和后端服务器 URL。

发布 Exchange Server

下表描述了可以通过 Web 应用程序代理发布的 Exchange 服务,以及支持用于以下服务的预身份验证:

Exchange 服务 预身份验证 说明
Outlook Web App - 使用非基于声明的身份验证的 AD FS
- 传递
- 将基于声明的身份验证用于本地 Exchange 2013 Service Pak 1 (SP1) 的 AD FS
有关详细信息,请参阅:对 Outlook Web App 和 EAC 使用 AD FS 基于声明的身份验证
Exchange 控制面板 直通
Outlook Anywhere 直通 必须为 Outlook Anywhere 发布额外的 URL,以使其正常工作:

- 自动发现、EWS 和 OAB(在 Outlook 缓存模式下)URL。
- Exchange Server 的外部主机名;即,为使客户端进行连接而配置的 URL。
- Exchange Server 的内部 FQDN。

Exchange ActiveSync 直通
使用 HTTP 基本授权协议的 AD FS
Exchange Web 服务 直通
自动发现 直通
脱机通讯簿 直通

若要使用集成 Windows 身份验证发布 Outlook Web App,必须使用“添加非基于声明的信赖方信任向导”为应用程序配置信赖方信任。

要允许用户使用 Kerberos 约束委派进行身份验证,必须将 Web 应用程序代理服务器加入域。

必须将应用程序配置为支持 Kerberos 身份验证。 此外,你需要将服务主体名称 (SPN) 注册到运行 Web 服务的帐户。 可以在域控制器或后端服务器上执行此操作。 在负载均衡的 Exchange 环境中,这需要使用备用服务帐户,请参阅为负载均衡的客户端访问服务器配置 Kerberos 身份验证

如果应用程序在 Windows Server 2012 R2 或 Windows Server 2012 上运行,你还可以直接在后端服务器上配置该应用程序。 有关详细信息,请参阅 Kerberos 身份验证的新增功能。 还必须确保 Web 应用程序代理服务器配置为委派给后端服务器的服务主体名称。

通过 Web 应用程序代理发布远程桌面网关

如果希望限制对远程访问网关的访问,并为远程访问添加预身份验证,则可以通过 Web 应用程序代理进行部署。 这是一种非常不错的方法,可确保对 RDG(包括 MFA)进行丰富的预身份验证。 无需预身份验证的发布也是一种选择,它提供了进入系统的单一入口点。

如何使用 Web 应用程序代理传递身份验证在 RDG 中发布应用程序

  1. 安装方式将有所不同,具体取决于 RD Web 访问 (/rdweb) 和 RD 网关 (rpc) 角色是位于同一服务器还是位于不同服务器。

  2. 如果 RD Web 访问和 RD 网关角色托管在同一 RDG 服务器上,则只需在 Web 应用程序代理(如 https://rdg.contoso.com/)中发布根 FQDN 即可。

    还可以分别发布这两个虚拟目录,例如 https://rdg.contoso.com/rdweb/https://rdg.contoso.com/rpc/

  3. 如果 RD Web 访问和 RD 网关托管在单独的 RDG 服务器上,则必须分别发布这两个虚拟目录。 你可以使用相同或不同的外部 FQDN,例如 https://rdweb.contoso.com/rdweb/https://gateway.contoso.com/rpc/

  4. 如果外部和内部 FQDN 不同,则不应在 RD Web 发布规则上禁用请求头转换。 这可以通过在 Web 应用程序代理服务器上运行以下 PowerShell 脚本来完成,但默认情况下应启用该脚本。

    Get-WebApplicationProxyApplication applicationname | Set-WebApplicationProxyApplication -DisableTranslateUrlInRequestHeaders:$false
    

    注意

    如果你需要支持富客户端(如 RemoteApp 和桌面连接或 iOS 远程桌面连接),它们不支持预身份验证,因此你必须使用传递身份验证发布 RDG。

如何将 Web 应用程序与预身份验证结合使用在 RDG 中发布应用程序

  1. 使用 RDG 的 Web 应用程序代理预身份验证的工作方式是将 Internet Explorer 获得的预身份验证 Cookie 传递到远程桌面连接客户端 (mstsc.exe)。 然后由远程桌面连接客户端 (mstsc.exe) 使用。 然后,远程桌面连接客户端将其用作身份验证的证据。

    以下过程指示收集服务器在发送到客户端的远程应用程序 RDP 文件中包含必要的自定义 RDP 属性。 它们指示客户端需要预身份验证,并将预身份验证服务器地址的 Cookie 传递给远程桌面连接客户端 (mstsc.exe)。 结合禁用 Web 应用程序代理应用程序上的 HttpOnly 功能,这允许远程桌面连接客户端 (mstsc.exe) 利用通过浏览器获取的 Web 应用程序代理 Cookie。

    对 RD Web 访问服务器的身份验证仍将使用 RD Web 访问表单登录。 这提供了最少数量的用户身份验证提示,因为 RD Web 访问登录表单创建了一个客户端凭据存储,然后远程桌面连接客户端 (mstsc.exe) 可用于任何后续远程应用启动。

  2. 首先,在 AD FS 中创建手动信赖方信任,就像发布声明感知应用一样。 这意味着你必须创建一个虚拟的依赖方信任来强制执行预身份验证,以便你在没有 Kerberos 约束的情况下获得对已发布服务器的预身份验证。 一旦用户通过了身份验证,其他一切都会通过。

    警告

    似乎最好使用委派,但它不能完全解决 mstsc SSO 要求,并且委托到 /rpc 目录时存在问题,因为客户端需要处理 RD 网关身份验证本身。

  3. 要创建手动依赖方信任,请按照 AD FS 管理控制台中的步骤操作:

    1. 使用“添加信赖方信任”向导

    2. 选择“手动输入有关依赖方的数据”。

    3. 接受所有默认设置。

    4. 对于信赖方信任标识符,输入将用于 RDG 访问的外部 FQDN,例如 https://rdg.contoso.com/

      这是在 Web 应用程序代理中发布应用程序时将使用的依赖方信任。

  4. 在 Web 应用程序代理中发布站点的根目录(例如 https://rdg.contoso.com/)。 将预身份验证设置为 AD FS 并使用你在上面创建的依赖方信任。 这将使 /rdweb 和 /rpc 能够使用相同的 Web 应用程序代理身份验证 Cookie。

    可以将 /rdweb 和 /rpc 发布为单独的应用程序,甚至可以使用不同的已发布服务器。 你只需确保使用相同的依赖方信任发布这两个应用程序,因为 Web 应用程序代理令牌是为依赖方信任颁发的,因此在使用相同的依赖方信任发布的应用程序之间有效。

  5. 如果外部和内部 FQDN 不同,则不应在 RD Web 发布规则上禁用请求头转换。 这可以通过在 Web 应用程序代理服务器上运行以下 PowerShell 脚本来完成,但默认情况下应启用该脚本:

    Get-WebApplicationProxyApplication applicationname | Set-WebApplicationProxyApplication -DisableTranslateUrlInRequestHeaders:$true
    
  6. 在 RDG 发布的应用程序中禁用 Web 应用程序代理中的 HttpOnly cookie 属性。 若要允许 RDG ActiveX 控制访问 Web 应用程序代理身份验证 Cookie,必须在 Web 应用程序代理 Cookie 上禁用 HttpOnly 属性。

    这要求你安装 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的 2014 年 11 月更新汇总 (KB3000850)

    安装此修补程序后,请在 Web 应用程序代理服务器上运行以下 PowerShell 脚本,并指定相关应用程序名称:

    Get-WebApplicationProxyApplication applicationname | Set-WebApplicationProxyApplication -DisableHttpOnlyCookieProtection:$true
    

    禁用 HttpOnly 将允许 RDG ActiveX 控件访问 Web 应用程序代理身份验证 Cookie。

  7. 在收集服务器上配置相关的 RDG 收集,以使远程桌面连接客户端 (mstsc.exe) 知道 RDP 文件中需要预身份验证。

    • 在 Windows Server 2012 和 Windows Server 2012 R2 中,这可以通过在 RDG 收集服务器上运行以下 PowerShell cmdlet 来完成:

      Set-RDSessionCollectionConfiguration -CollectionName "<yourcollectionname>" -CustomRdpProperty "pre-authentication server address:s: <https://externalfqdn/rdweb/>`nrequire pre-authentication:i:1"
      

      使用自己的值进行替换时,请确保删除 < 和 > 方括号,例如:

      Set-RDSessionCollectionConfiguration -CollectionName "MyAppCollection" -CustomRdpProperty "pre-authentication server address:s: https://rdg.contoso.com/rdweb/`nrequire pre-authentication:i:1"
      
    • 在 Windows Server 2008 R2 中:

      1. 使用具有管理员权限的帐户登录到终端服务器。

      2. 转到“启动”>“管理工具”>“终端服务”>“TS RemoteApp 管理器”。

      3. 在 TS RemoteApp 管理器的“概览”窗格中,单击“RDP 设置”旁边的“更改”。

      4. 在“自定义 RDP 设置”选项卡上,在“自定义 RDP 设置”框中键入以下 RDP 设置:

        pre-authentication server address: s: https://externalfqdn/rdweb/

        require pre-authentication:i:1

      5. 完成后单击“应用”。

        这将告知收集服务器在发送给客户端的 RDP 文件中包含自定义 RDP 属性。 它们指示客户端需要预身份验证,并将预身份验证服务器地址的 Cookie 传递给远程桌面连接客户端 (mstsc.exe)。 结合禁用 Web 应用程序代理应用程序上的 HttpOnly,这允许远程桌面连接客户端 (mstsc.exe) 利用通过浏览器获取的 Web 应用程序代理身份验证 Cookie。

        有关 RDP 的详细信息,请参阅配置 TS 服务网关 OTP 方案