通过 Microsoft Entra 应用程序代理启用对 SharePoint 的远程访问

此分步指南介绍如何将本地 SharePoint 场与 Microsoft Entra 应用程序代理进行集成。

先决条件

若要执行配置,需要具备以下资源:

  • 一个 SharePoint 2013 场或更高版本的场。 SharePoint 场必须与 Microsoft Entra ID 集成
  • Microsoft Entra 租户及包含应用程序代理的计划。 详细了解 Microsoft Entra ID 计划和定价
  • Microsoft Office Web Apps 服务器场,用于从本地 SharePoint 场正确启动 Office 文件。
  • Microsoft Entra 租户中的自定义已验证域
  • 已与 Microsoft Entra Connect 同步的本地 Active Directory(用户可通过该 Microsoft Entra Connect 登录 Azure)。
  • 一个在企业域中计算机上安装并运行的专用网络连接器。

使用应用程序代理配置 SharePoint 时,需要使用两个 URL:

重要

若要确保这些链接正确映射,请按以下建议配置内部 URL:

  • “使用 HTTPS”。
  • 不使用自定义端口。
  • 在企业域名系统 (DNS) 中,创建指向 SharePoint WFE(或负载均衡器)的主机 (A),而非别名 (CName)。

本文使用以下值:

  • 内部 URL:https://sharepoint
  • 外部 URL:https://spsites-demo1984.msappproxy.net/
  • SharePoint Web 应用的应用程序池帐户:Contoso\spapppool

步骤 1:在使用应用程序代理的 Microsoft Entra ID 中配置应用程序

在此步骤中,在使用应用程序代理的 Microsoft Entra 租户中创建应用程序。 用户可设置外部 URL,并指定内部 URL,以便稍后用于 SharePoint。

  1. 根据说明,按以下设置创建应用程序。 有关分步说明,请参阅使用 Microsoft Entra 应用程序代理发布应用程序

    • 内部 URL:稍后在 SharePoint 中设置的 SharePoint 内部 URL,例如 https://sharepoint
    • 预身份验证:Microsoft Entra ID
    • 转换标头中的 URL:No
    • 转换应用程序主体中的 URL:No

    发布 SharePoint 应用程序

  2. 发布应用后,请按以下步骤配置单一登录设置。

    1. 在门户中的应用程序页上,选择“单一登录”。
    2. 对于“单一登录模式”,选择“集成 Windows 身份验证”。
    3. 将内部应用程序服务主体名称 (SPN) 设置为前面设置的值。 在此示例中,该值为 HTTP/sharepoint
    4. 在“委派的登录标识”下,为 Active Directory 林配置选择最适合的选项。 例如,如果林中只有一个 Active Directory 域,则选择“本地 SAM 帐户名称”(如以下屏幕截图所示)。 但如果你的用户与 SharePoint 和专用网络连接器服务器不在同一个域中,则选择“本地用户主体名称”(屏幕截图中未显示)。

    为 SSO 配置集成 Windows 身份验证

  3. 要完成应用程序设置,请转到“用户和组”部分,然后分配用户以访问此应用程序。

步骤 2:配置 SharePoint Web 应用

SharePoint Web 应用程序必须使用 Kerberos 和相应的备用访问映射进行配置,才能正常与 Microsoft Entra 应用程序代理配合工作。 下面是两种可能的选项:

  • 创建新 Web 应用并仅使用默认区域。 使用默认区域是首选的选项,它提供了 SharePoint 的最佳体验。 例如,SharePoint 生成的电子邮件警报中的链接会指向默认区域
  • 扩展现有 Web 应用程序,以在非默认区域中配置 Kerberos。

重要

无论使用哪个区域,SharePoint Web 应用的应用程序池帐户必须是域帐户,Kerberos 才能正常工作。

创建 SharePoint Web 应用程序

  • 该脚本演示了如何使用默认区域创建新 Web 应用程序的示例。 使用默认区域是首选的选项。

    1. 启动 SharePoint Management Shell 并运行以下脚本

      # This script creates a web application and configures the Default zone with the internal/external URL needed to work with Azure AD application proxy
      # Edit variables below to fit your environment. Note that the managed account must exist and it must be a domain account
      $internalUrl = "https://sharepoint"
      $externalUrl = "https://spsites-demo1984.msappproxy.net/"
      $applicationPoolManagedAccount = "Contoso\spapppool"
      
      $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$false
      $wa = New-SPWebApplication -Name "SharePoint - AAD Proxy" -Port 443 -SecureSocketsLayer -URL $externalUrl -ApplicationPool "SharePoint - AAD Proxy" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp
      New-SPAlternateURL -Url $internalUrl -WebApplication $wa -Zone Default -Internal
      
    2. 打开 SharePoint 管理中心站点。

    3. 在“系统设置”下,选择“配置备用访问映射”。 此时将打开“备用访问映射集合”框。

    4. 使用新的 Web 应用程序筛选显示。

      Web 应用程序的备用访问映射

  • 如果将现有 Web 应用程序扩展到新区域。

    1. 启动 SharePoint Management Shell 并运行以下脚本。

      # This script extends an existing web application to Internet zone with the internal/external URL needed to work with Azure AD application proxy
      # Edit variables below to fit your environment
      $webAppUrl = "http://spsites/"
      $internalUrl = "https://sharepoint"
      $externalUrl = "https://spsites-demo1984.msappproxy.net/"
      
      $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$false
      $wa = Get-SPWebApplication $webAppUrl
      New-SPWebApplicationExtension -Name "SharePoint - AAD Proxy" -Identity $wa -SecureSocketsLayer -Zone Extranet -Url $externalUrl -AuthenticationProvider $winAp
      New-SPAlternateURL -Url $internalUrl -WebApplication $wa -Zone Extranet -Internal
      

    `. 打开 SharePoint 管理中心站点。

    1. 在“系统设置”下,选择“配置备用访问映射”。 此时将打开“备用访问映射集合”框。

    2. 使用扩展的 Web 应用程序筛选显示。

      已扩展应用程序的备用访问映射

确保 SharePoint Web 应用在域帐户下运行

若要确定运行 SharePoint Web 应用的应用程序池的帐户,并确保该帐户是域帐户,请按照以下步骤操作:

  1. 打开 SharePoint 管理中心站点。

  2. 转到“安全”并选择“配置服务帐户”。

  3. 选择“Web 应用程序池 - YourWebApplicationName”。

    用于配置服务帐户的选项

  4. 确认“为此组件选择帐户”是否返回了域帐户,并记住该帐户,因为在下一步骤中会用到它

确保为 Extranet 区域的 IIS 站点配置了 HTTPS 证书

由于内部 URL 使用 HTTPS 协议 (https://SharePoint/),因此必须在 Internet Information Services (IIS) 站点上设置证书。

  1. 打开 Windows PowerShell 控制台。

  2. 运行以下脚本,以生成自签名证书并将其添加到计算机的 MY store

    # Replace "SharePoint" with the actual hostname of the Internal URL of your Azure AD proxy application
    New-SelfSignedCertificate -DnsName "SharePoint" -CertStoreLocation "cert:\LocalMachine\My"
    

    重要

    自签名证书仅适用于测试目的。 在生产环境中,强烈建议改用由证书颁发机构颁发的证书。

  3. 打开 Internet Information Services Manager 控制台。

  4. 在树视图中展开服务器,展开“站点”,选择站点“SharePoint - Microsoft Entra ID 代理”,然后选择“绑定”。

  5. 选择“HTTPS 绑定”,然后选择“编辑”。

  6. 在“TLS/SSL 证书”字段中,选择“SharePoint”证书,然后选择“确定”。

现在可以通过 Microsoft Entra 应用程序代理从外部访问 SharePoint 站点。

步骤 3:配置 Kerberos 约束委派

用户最初将在 Microsoft Entra ID 中进行身份验证,然后通过 Microsoft Entra 专用网络连接器使用 Kerberos 向 SharePoint 进行身份验证。 若要让连接器代表 Microsoft Entra 用户获取 Kerberos 令牌,必须使用协议转换配置 Kerberos 约束委派 (KCD)。 若要了解有关 KCD 的详细信息,请参阅 Kerberos 约束委派概述

为 SharePoint 服务帐户设置服务主体名称 (SPN)

在本文中,内部 URL 是 https://sharepoint,因此服务主体名称 (SPN) 是 HTTP/sharepoint。 用户必须将这些值替换为与其环境相对应的值。 若要为 SharePoint 应用程序池帐户 Contoso\spapppool 注册 SPN HTTP/sharepoint,请以域管理员身份在命令提示符下运行以下命令:

setspn -S HTTP/sharepoint Contoso\spapppool

Setspn 命令会先搜索 SPN,然后再进行添加。 如果此 SPN 已经存在,则用户会看到“SPN 值重复”错误。 移除现有 SPN。 通过运行带有 -L 选项的 Setspn 命令来验证是否成功添加了 SPN。 要详细了解该命令,请参阅 Setspn

确保连接器受信任,可委派给添加到 SharePoint 应用程序池帐户的 SPN

配置 KCD,使 Microsoft Entra 应用程序代理服务能够向 SharePoint 应用程序池帐户委托用户标识。 通过支持专用网络连接器检索已在 Microsoft Entra ID 中通过身份验证的用户的 Kerberos 票证来配置 KCD。 然后,该服务器会将上下文传递给目标应用程序(在本例中为 SharePoint)。

若要配置 KCD,请对每个连接器计算机执行以下步骤:

  1. 以域管理员身份登录域控制器,然后打开“Active Directory 用户和计算机”。

  2. 查找运行 Microsoft Entra 专用网络连接器的计算机。 在本例中,是运行 SharePoint Server 的计算机。

  3. 双击此计算机,然后选择“委派”选项卡。

  4. 确保将委派选项设置为“仅信任此计算机来委派指定的服务”。 然后,选择“使用任意身份验证协议”。

  5. 选择“添加”按钮,选择“用户或计算机”,然后找到 SharePoint 应用程序池帐户。 例如:Contoso\spapppool

  6. 在 SPN 列表中,选择此前为服务帐户创建的 SPN。

  7. 选择“确定”,然后再次选择“确定”以保存更改内容。

    委派设置

现在,可以使用外部 URL 登录 SharePoint,并使用 Azure 进行身份验证。

排查登录错误

如果无法登录到站点,可以在连接器日志中获取有关该问题的详细信息:在运行连接器的计算机中打开事件查看器,转到“应用程序和服务日志”>“Microsoft”>“Microsoft Entra 专用网络”>“连接器”,然后检查“管理员”日志

后续步骤