通过

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

概述

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

先决条件

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

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

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

重要

若要确保正确映射链接,请遵循以下针对内部 URL 的建议:

  • 使用 HTTPS。
  • 不要使用自定义端口。
  • 在公司域名系统(DNS)中创建一个主机(A记录),该主机指向SharePoint Web 前端(或负载均衡器),而不是别名(CName记录)。

本文使用以下值:

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

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

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

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

    • Internal URL: 在 SharePoint 中稍后设置的 SharePoint 内部网址,例如 https://sharepoint
    • Pre-AuthenticationMicrosoft Entra ID
    • 翻译标头中的 URLNo
    • 在应用程序正文中翻译 URLNo

    Microsoft Entra 应用程序代理设置的截图,显示字段包括名称、内部 URL、外部 URL,和将预身份验证设置为 Microsoft Entra ID。

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

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

    “配置集成Windows身份验证”对话框的Screenshot,其中显示 SPN 设置为 HTTP/SharePoint,并将委派登录标识设置为本地 SAM 帐户名称.

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

步骤 2:配置 SharePoint Web 应用程序

必须使用 Kerberos 和适当的备用访问映射来配置 SharePoint Web 应用程序,以便Microsoft Entra应用程序代理正常工作。 可以使用两个选项:

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

重要

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

创建SharePoint Web 应用程序

  • 该脚本演示了使用 默认 区域创建新的 Web 应用程序的示例。 建议使用默认区域。

    1. 启动 SharePoint 命令行管理程序并运行脚本。

      # This script creates a web application and configures the Default zone with the internal/external URL needed to work with Microsoft Entra 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 应用程序筛选显示。

      备用访问映射页面的截图,显示了 SharePoint Web 应用程序在默认区域中的内部和公共 URL。

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

    1. 启动SharePoint命令行管理程序并运行以下脚本。

      # This script extends an existing web application to Internet zone with the internal/external URL needed to work with Microsoft Entra 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应用程序已选择的默认区域和Extranet区域的内部和公共URL。

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

若要标识运行 SharePoint Web 应用程序的应用程序池的帐户并确保它是域帐户,请执行以下步骤:

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

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

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

    用于服务帐户选择的对话框截图,包含 Web 应用程序池 - SharePoint 80 和域帐户下拉列表。

  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 Microsoft Entra proxy application
    New-SelfSignedCertificate -DnsName "SharePoint" -CertStoreLocation "cert:\LocalMachine\My"
    

    重要

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

  3. 打开Internet Information Services管理器控制台。

  4. 在树视图中展开服务器,展开 Sites,选择 SharePoint - Microsoft Entra ID Proxy 站点,然后选择 Bindings

  5. 依次选择“HTTPS 绑定”、“编辑”

  6. 在传输层安全性(TLS)证书字段中,选择SharePoint证书,然后选择OK

现在可以通过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应用程序池帐户HTTP/sharepoint注册 SPN Contoso\spapppool,请从命令提示符处以域管理员身份运行以下命令:

setspn -S HTTP/sharepoint Contoso\spapppool

Setspn 命令在添加 SPN 之前进行搜索。 如果 SPN 已存在,则会看到 “重复的 SPN 值 ”错误。 删除现有的 SPN。 使用选项运行 Setspn 命令 -L ,验证 SPN 是否已成功添加。 有关命令的详细信息,请参阅 Setspn

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

配置 KCD,以便Microsoft Entra应用程序代理服务可以将用户标识委托给SharePoint应用程序池帐户。 通过启用专用网络连接器来为在 Microsoft Entra ID 中进行身份验证的用户检索 Kerberos 票证,从而配置 KCD。 然后,该服务器将上下文传递给目标应用程序(在本例中SharePoint)。

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

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

  2. 查找运行Microsoft Entra专用网络连接器的计算机。 在此示例中,它是运行SharePoint 服务器的计算机。

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

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

  5. 选择 Add 按钮,选择 Users 或 Computers,然后找到SharePoint应用程序池帐户。 例如: Contoso\spapppool

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

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

    “委派”选项卡的屏幕截图,其中显示了“仅信任此计算机用于委派到指定服务”(选中)和“使用任何身份验证协议”(选中)。

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

排查登录错误

如果登录站点不起作用,可以在连接器日志中获取有关该问题的详细信息。 在运行连接器的计算机中, 打开事件查看器,转到 Applications and Services Logs>Microsoft>Microsoft Entra专用网络>Connector, 并检查 Admin 日志。

故障排查 BadGateway Kerberos 错误

如果看到 BadGateway Kerberos 不正确错误,请在域控制器的 Windows PowerShell 中以管理员身份运行以下命令。请将 [servername][serviceaccount] 替换为环境中的实际值。

  1. $connector = Get-ADComputer -Identity "[servername]$"
  2. Set-ADUser -Identity "[serviceaccount]" -PrincipalsAllowedToDelegateToAccount $connector

错误消息的屏幕截图,指出“BadGateway:由于 Kerberos 约束委派配置不正确,无法访问公司应用”。

后续步骤