为 SharePoint Server 配置 Office Online Server

总结:了解如何将 SharePoint Server 配置为Office Online Server (下一版本的 Office Web 应用 Server) 。

目标用户:IT 专业人员

本文介绍部署Office Online Server中断的位置。 在另一文章中,你设置了运行 Office Online Server 的本地服务器。 在本示例中,你将将 SharePoint Server 配置为使用 Office Online Server。 首先,需要从 SharePoint Server 2016 运行几个 Microsoft PowerShell cmdlet,之后用户将能够从浏览器中的 SharePoint Server 文档库打开 Office 文件。

将 SharePoint Server 配置为使用 Office Online Server 前

在开始之前检查几个事项:

  • 这些说明也适用于 SharePoint Server 2013,但 SharePoint Server 2013 无法在 Office Online Server 中使用 Excel Online 外部数据连接和数据刷新功能。

  • 安装 SharePoint Server 2016。 有关指导,请参阅 安装 SharePoint Server

  • 确保所有 SharePoint Server 2016 Web 应用程序都使用基于声明的身份验证。 Office Online 呈现和编辑将对使用经典模式身份验证的 SharePoint Server 2016 Web 应用程序不起作用。

  • 若要使用户能够在 Web 浏览器中编辑(而不仅仅是阅读)Office 文档,你需要一个编辑许可证。 此外,还将需要启用对 Office Online Server 场的编辑。

  • 如果您使用系统帐户登录到 SharePoint Server 2016,则将无法测试 SharePoint Server 2016 和 Office Online Server 之间的连接。 使用其他帐户登录,以测试连接。

  • 内存不足的情况可能会导致 Office Online 中的 Office 文档预览失败。

  • SharePoint Server 2013 无法在 Office Online Server 中使用 Excel Online 外部数据连接和数据刷新功能。 仅在 SharePoint Server 2016 中可用。

  • Office Online Server使用 OAuth 令牌与 SharePoint Server 通信。 这些令牌可能会被截获和重播,从而为攻击者提供与用户从 SharePoint Server 发出Office Online Server请求相同的权限。 强烈建议将Office Online Server配置为仅使用 HTTPS (TLS) 。

配置 SharePoint Server 以使用 Office Online Server

选择下列章节之一,具体取决于您要使用 HTTP 还是 HTTPS。 HTTP 通常仅建议用于测试环境。 在生产环境中,最好使用更为安全的 HTTPS 协议。

在使用 HTTP 的测试环境中

对于此配置,请确保已按照部署使用 HTTP 的单服务器Office Online Server场中的步骤设置Office Online Server。 确保将 Office Online Server 场配置为使用内部 URL 和 HTTP。

步骤 1:创建 SharePoint 2016 和 Office Web Apps Server 之间的绑定

若要开始,请打开提升的 SharePoint 2016 命令行管理程序。 (右键单击“ SharePoint 2016 命令行管理程序”,然后单击“ 以管理员身份运行”。)

运行以下命令,其中 <WacServerName> 是你为内部 URL 设置的 URL (FQDN) 完全限定的域名。 这是 Office Online Server 流量的入口点。 对于此测试环境,您必须指定 -AllowHTTP 参数以允许 SharePoint Server 2016 通过使用 HTTP 接收来自 Office Online Server 服务器场的发现信息。 如果您未指定 -AllowHTTP,则 SharePoint Server 2016 将尝试使用 HTTPS 与 Office Online Server 服务器场进行通信,并且此命令将失败。


New-SPWOPIBinding -ServerName <WacServerName> -AllowHTTP

运行此命令后,您应看到 Microsoft PowerShell 命令提示符处显示了一个绑定列表。

步骤 2:查看针对 SharePoint 绑定的 WOPI 区域

Office Online Server 使用区域来确定其与主机(此示例中为 SharePoint Server 2016)进行通信时将使用的 URL(内部或外部)和协议(HTTP 或 HTTPS)。 默认情况下,SharePoint Server 2016 使用 internal-https 区域。 通过运行以下命令来确认这是当前区域:

Get-SPWOPIZone

此命令显示的 WOPI 区域应为 internal-http。 如果正确显示,请跳到步骤 4。 如果不是,请参阅下一步。

步骤 3:将 WOPI 区域更改为 internal-http

如果通过执行步骤 3 获得的结果为 internal-https,则运行以下命令可将区域更改为 internal-http。 您需要进行此更改,因为 SharePoint Server 2016 的区域必须匹配 Office Online Server 服务器场的区域。

Set-SPWOPIZone -zone "internal-http"

再次运行 Get-SPWOPIZone ,确认新的区域为 internal-http

步骤 4:将 SharePoint 2016 中的 AllowOAuthOverHttp 设置更改为 True

若要在测试环境中通过 HTTP 将 SharePoint Server 2016 与 Office Online 结合使用,您需要将 AllowOAuthOverHttp 设置为"True"。 否则,Office Online 将不起作用。 可通过运行以下示例来检查当前状态:

(Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp

如果此命令返回 False,则运行下列命令可将其设置为 True

$config = (Get-SPSecurityTokenServiceConfig)
$config.AllowOAuthOverHttp = $true
$config.Update()

再次运行以下命令来验证 AllowOAuthOverHttp 设置现在是否设置为 True

(Get-SPSecurityTokenServiceConfig).AllowOAuthOverHttp

步骤 5:启用 Excel SOAP API

通过 Excel Online 计划数据刷新和 Excel Web 部件呈现需要 Excel SOAP API。 若要启用 Excel SOAP API,需要将 WopiLegacySoapSupport 属性添加到 PowerShell 使用的 SharePoint Server 场属性。 输入的参数是 ExcelServiceInternal.asmx 的 URL。 此 URL 可以通过负载平衡为多 OOS 服务器寻址。 只需将<字符串>替换为Office Online Server路径即可。

若要启用 Excel SOAP API,请运行以下 PowerShell,其中 <URL> 是Office Online Server场的 URL。 (例如, http://OfficeOnlineServer.contoso.com.)


$Farm = Get-SPFarm
$Farm.Properties.Add("WopiLegacySoapSupport", "<URL>/x/_vti_bin/ExcelServiceInternal.asmx");
$Farm.Update();

步骤 6:验证 Office Web Apps 是否正常运行

在 SharePoint Server 2016 中,确保您不是作为系统帐户登录的,否则您将无法使用 Office Online 编辑或查看文档。 转到包含 Office 文档的 SharePoint Server 2016 文档库并查看 Word、PowerPoint、Excel 或 OneNote 文件。 文档应该在使用 Office Online 显示文件的浏览器中打开。

在使用 HTTPS 的生产环境中

在开始以下过程之前,请确保已按照部署使用 HTTPS 的单服务器Office Online Server场或部署使用 HTTPS 的多服务器、负载均衡Office Online Server场中的步骤设置Office Online Server。

步骤 1:创建 SharePoint 2016 和 Office Online Server 之间的绑定

若要开始,请打开提升的 SharePoint 2016 命令行管理程序。 (右键单击“ SharePoint 2016 命令行管理程序”,然后单击“ 以管理员身份运行”。)

运行以下命令,其中 <WacServerName> 是你为内部 URL 设置的 URL (FQDN) 完全限定的域名。 这是 Office Online Server 流量的入口点。


New-SPWOPIBinding -ServerName <WacServerName> 

步骤 2:查看 SharePoint 2016 的 WOPI 区域

Office Online Server 使用区域来确定其与主机(此示例中为 SharePoint Server 2016)进行通信时将使用的 URL(内部或外部)和协议(HTTP 或 HTTPS)。 默认情况下,SharePoint Server 2016 使用 internal-https 区域。 通过运行以下命令来确认这是当前区域。

Get-SPWOPIZone

请记下显示的 WOPI 区域。

步骤 3:如有必要更改 WOPI 区域

根据您的环境,您可能需要更改 WOPI 区域。 如果您有一个既为内部又为外部的 SharePoint 场,则指定外部。 如果您有一个仅内部的 SharePoint 场,则指定内部。

如果通过执行步骤 2 获得的结果显示 internal-https 且 SharePoint 场仅是内部的,则可以跳过此步骤。 如果具有既为内部又为外部的 SharePoint 场,则需要运行以下命令来将区域更改为 external-https

Set-SPWOPIZone -zone "external-https"

步骤 4:启用 Excel SOAP API

通过 Excel Online 计划数据刷新和 Excel Web 部件呈现需要 Excel SOAP API。 若要启用 Excel SOAP API,需要将 WopiLegacySoapSupport 属性添加到 PowerShell 使用的 SharePoint Server 场属性。 输入的参数是 ExcelServiceInternal.asmx 的 URL。 此 URL 可以通过负载平衡为多 OOS 服务器寻址。 只需将<字符串>替换为Office Online Server路径即可。

若要启用 Excel SOAP API,请运行以下 PowerShell,其中 <URL> 是Office Online Server场的 URL。 (例如, https://OfficeOnlineServer.contoso.com.)


$Farm = Get-SPFarm
$Farm.Properties.Add("WopiLegacySoapSupport", "<URL>/x/_vti_bin/ExcelServiceInternal.asmx");
$Farm.Update();

步骤 5:验证 Office Web Apps 是否正常运行

在 SharePoint Server 2016 中,确保您不是作为系统帐户登录的,否则您将无法使用 Office Online 编辑或查看文档。 转到包含 Office 文档的 SharePoint Server 2016 文档库并查看 Word、PowerPoint、Excel 或 OneNote 文件。 文档应该在使用 Office Online 显示文件的浏览器中打开。

断开 SharePoint Server 2016 与 Office Online Server 的连接

如果出于任何原因需要断开 SharePoint Server 2016 与 Office Online Server 的连接,请使用以下命令示例。


Remove-SPWOPIBinding -All:$true