Excel Services 的标识委派 (SharePoint Server 2010)

 

适用于: Excel Services, SharePoint Server 2010

上一次修改主题: 2016-11-30

在本方案中,您向 SharePoint Server 环境添加 Excel Services 服务应用程序并配置 Kerberos 约束委派以允许服务从外部 SQL Server 数据源刷新工作表中的数据。

方案依赖关系

若要完成本方案,您必须已完成以下方案:

配置清单

配置区域 说明

Active Directory 配置

创建 Excel Services 服务帐户

对 Excel Services 服务帐户配置 SPN

为运行 Excel Services 的服务器配置 Kerberos 约束委派

为 Excel Services 服务帐户配置 Kerberos 约束委派

SharePoint Server 配置

在 Excel Services 服务器上启动“声明为 Windows 令牌服务”

在 Excel Services 服务器上启动 Excel Services 服务实例

创建 Excel Services 服务应用程序和代理

配置 Excel Services 受信任文件位置和身份验证设置

验证 Excel Service 约束委派

创建文档库以承载测试工作簿

创建测试 SQL 数据库和测试表

使用 SQL 数据连接创建测试 Excel 工作簿

将工作簿发布到 SharePoint Server 并刷新数据连接

方案的环境详细信息

Kerberos 约束委派路径

方案环境关系图

在本方案中,我们将向 SQL Server 服务配置 Kerberos 约束委派的 SharePoint Server Excel Services 服务帐户。

备注

在本方案中,我们将配置“声明为 Windows 令牌服务 (C2WTS)”使用专用服务帐户。如果您保留 C2WTS 的配置(使用“本地系统”),则需要对运行 C2WTS 和 Excel Services 的计算机的计算机帐户配置约束委派。

SharePoint Server 逻辑身份验证

身份验证流程关系图

本方案中的身份验证从在 Web 前端上使用 Kerberos 身份验证进行的客户端身份验证开始。SharePoint Server 2010 将使用本地安全令牌服务 (STS) 将 Windows 身份验证令牌转换为声明令牌。Excel Service 应用程序将接受声明令牌,并使用作为 Windows Identity Framework (WIF) 的一部分的本地“声明为 Windows 令牌服务 (C2WTS)”将其转换为 Windows 令牌 (Kerberos)。然后,Excel Service 应用程序将使用客户端的 Kerberos 票证来向后端数据源进行身份验证。

分步配置说明

Active Directory 配置

创建 Excel Services 服务帐户

作为最佳实践,Excel Services 应在自己的域标识下运行。若要配置 Excel Service 应用程序,必须创建 Active Directory 帐户。在本例中,创建了以下帐户:

SharePoint Server 服务 IIS 应用程序池标识

Excel Services

vmlab\svcExcel

对 Excel Services 服务帐户配置 SPN

如果 Excel Services 要将客户端的标识委派给后端数据源,则必须配置 Kerberos 约束委派。在本例中,Excel Services 将从 SQL 事务性数据库查询数据,因此需要 Kerberos 委派。

Active Directory 用户和计算机 MMC 管理单元通常用于配置 Kerberos 委派。若要在管理单元内配置委派设置,所配置的 Active Directory 对象必须应用服务主体名称;否则,该对象的属性对话框中将不会出现“委派”选项卡。尽管 Excel Services 不需要 SPN 即可运行,但我们将出于此目的配置一个 SPN。

在命令行上,运行以下命令:

SETSPN -S SP/ExcelServices

备注

SPN 不是有效的 SPN。它适用于指定的服务帐户,以显示 AD 用户和计算机管理单元中的委派选项。可通过其他受支持的方法指定委派设置(具体说就是 msDS-AllowedToDelegateTo AD 属性),但本文档不讨论这一主题。

为 Excel Services 配置 Kerberos 约束委派

若要允许 Excel Services 委派客户端标识,必须配置 Kerberos 约束委派。需要使用协议转换配置约束委派,以通过 WIF C2WTS 将声明令牌转换为 Windows 令牌。

运行 Excel Services 的每台服务器都必须受信任,才能向 Excel 将通过其进行验证的每个后端服务委派凭据。此外,Excel Services 服务帐户还必须配置为允许向相同后端服务委派。

在本例中,定义了以下委派路径:

主体类型 主体名称 委派给服务

用户

svcExcel

MSSQLSVC/MySqlCluster.vmlab.local:1433

*用户

svcC2WTS

MSSQLSVC/MySqlCluster.vmlab.local:1433

**计算机

VMSP10APP01

MSSQLSVC/MySqlCluster.vmlab.local:1433

* 在本方案的稍后过程中配置

** 仅当 C2WTS 作为本地系统运行时才需要

配置约束委派

  1. 在“Active Directory 用户和计算机”中打开 Active Directory 对象的属性。

  2. 导航到“委派”选项卡。

  3. 选择“仅信任此用户作为指定服务的委派”。

  4. 选择“使用任何身份验证协议”。这会启用协议转换并且是服务帐户使用 C2WTS 所必需的。

  5. 单击“添加”按钮选择允许委派给的服务主体。

  6. 选择“用户和计算机”。

  7. 选择运行您希望委派给的服务的服务帐户。在本例中,为 SQL 服务的服务帐户。

    备注

    所选的服务帐户必须已应用 SPN。在本例中,此帐户的 SPN 是在之前的方案中配置的。

  8. 单击“确定”。接下来将要求您在以下屏幕上选择要委派到的 SPN。

  9. 选择 SQL 群集的服务,然后单击“确定”。

  10. 现在,应该会在“可以由此帐户提供委派凭据的服务”列表中看到所选的 SPN。

  11. 对在本节开头定义的每个委派路径重复这些步骤。

验证在 SQL Server 上运行服务的服务帐户的 MSSQLSVC SPN(在方案 2 中执行)

使用以下 SetSPN 命令,验证 Analysis Services 服务帐户 (vmlab\svcSQL) 的 SPN 是否存在:

SetSPN -L vmlab\svcSQL

应看到以下内容:

MSSQLSVC/MySqlCluster MSSQLSVC/MySqlCluster.vmlab.local:1433

SharePoint Server 配置

在 Excel Services 服务器上配置和启动“声明为 Windows 令牌服务”

“声明为 Windows 令牌服务 (C2WTS)”是 Windows Identity Foundation (WIF) 的一个组件,负责将用户声明令牌转换为 Windows 令牌。当服务需要将凭据委派到使用集成 Windows 身份验证的后端系统时,Excel Services 使用 C2WTS 将用户的声明令牌转换为 Windows 令牌。WIF 通过 SharePoint Server 2010 进行部署,而 C2WTS 可从管理中心启动。

每台 Excel Services 应用程序服务器必须在本地运行 C2WTS。C2WTS 不打开任何端口,无法由远程调用方访问。另外,C2WTS 服务配置文件必须配置为专门信任本地调用客户端标识。

作为最佳实践,您应使用专用服务帐户而不是作为本地系统(默认配置)来运行 C2WTS。C2WTS 服务帐户需要在运行该服务的每台服务器上拥有特殊的本地权限,因此每次在服务器上启动该服务时,请务必配置这些权限。最好是在启动 C2WTS 之前在本地服务器上配置服务帐户的权限,不过如果是在启动服务之后配置的,则可以从 Windows 服务管理管制台 (services.msc) 重新启动 C2WTS。

启动 C2WTS

  1. 在 Active Directory 中创建用于运行该服务的服务帐户。在本例中,我们创建了 vmlab\svcC2WTS。

  2. 将任意服务主体名称 (SPN) 添加到服务帐户中,以便在“Active Directory 用户和计算机”中显示此帐户的委派选项。SPN 可以采用任何格式,因为我们不使用 Kerberos 身份验证向 C2WTS 进行身份验证。建议不要使用 HTTP SPN 以避免可能会在您的环境中创建重复的 SPN。在本例中,我们使用以下命令将 SP/C2WTS 注册到 vmlab\svcC2WTS:

    SetSPN -S SP/C2WTS vmlab\svcC2WTS
    
  3. 对 C2WTS 服务帐户配置 Kerberos 约束委派。在本方案中,我们将凭据委派给使用 MSSQLSVC/MySqlCluster.vmlab.local:1433 服务主体名称运行的 SQL 服务。

  4. 接下来,配置 C2WTS 所需的必需本地服务器权限。您将需要在运行 C2WTS 的每台服务器上配置这些权限。在本例中,为 VMSP10APP01。登录该服务器,并向 C2WTS 授予以下权限:

    1. 将服务帐户添加到本地 Administrators 组中。

    2. 在本地安全策略 (secpol.msc) 的“用户权限分配”下,为服务帐户授予以下权限:

      1. 以操作系统方式执行

      2. 身份验证后模拟客户端

      3. 作为服务登录

  5. 打开管理中心。

  6. 在“安全”->“配置托管服务帐户”下,将 C2WTS 服务帐户注册为管理帐户。

  7. 在“服务”下,选择“管理服务器上的服务”。

  8. 在右上角的服务器选择框中,选择运行 Excel Services 的服务器。在此示例中为 VMSP10APP01。

  9. 找到“声明为 Windows 令牌服务”并启动它。

  10. 转到“安全”->“管理服务帐户”。将 C2WTS 的标识更改为新的管理帐户。

    备注

    如果在配置专用服务帐户之前 C2WTS 已经在运行,或者您需要在 C2WTS 运行之后更改服务帐户的权限,则必须从服务控制台重新启动 C2WTS。

此外,如果在重新启动服务后 C2WTS 遇到问题,可能还需要重置与 C2WTS 通信的 IIS 应用程序池。

添加 WIF C2WTS 服务的启动依赖关系

C2WTS 存在一个已知问题,即,它无法在系统重新启动时自动成功启动。此问题的变通解决方法是在“加密服务”服务上配置一个服务依赖关系:

  1. 打开命令提示符窗口。

  2. 键入:sc config "c2wts" depend= CryptSvc

  3. 在服务控制台中找到“声明为 Windows 令牌服务”。

  4. 打开服务的属性。

  5. 检查“相关性”选项卡。确保列出了“加密服务”。

  6. 单击“确定”。

向 Web 应用程序内容数据库授予 Excel Services 服务帐户权限

配置 SharePoint Server 2010 Office Web Applications 时的一个必需步骤是允许 Web 应用程序的服务帐户访问给定 Web 应用程序的内容数据库。在本例中,我们使用 Windows PowerShell 将 Excel Services 服务帐户访问权限授予“门户”Web 应用程序的内容数据库。

从 SharePoint 2010 Management Shell 中运行以下命令:

$w = Get-SPWebApplication -Identity http://portal

$w.GrantAccessToProcessIdentity("vmlab\svcExcel")

在 Excel Services 服务器上启动 Excel Services 服务实例

在创建 Excel Services 服务应用程序之前,请在指定服务器场服务器上启动 Excel Services 服务器服务。

  1. 打开管理中心。

  2. 在“服务”下,选择“管理服务器上的服务”。

  3. 在右上角的服务器选择框中,选择运行 Excel Services 的服务器。在此示例中为 VMSP10APP01。

  4. 启动 Excel Calculation Services 服务。

创建 Excel Services 服务应用程序和代理

接下来,配置新的 Excel Services 服务应用程序和应用程序代理,以允许 Web 应用程序使用 Excel Services:

  1. 打开管理中心。

  2. 选择“应用程序管理”下的“管理服务应用程序”。

  3. 选择“新建”,然后单击“Excel Services 应用程序”。

  4. 配置新服务应用程序。确保选择了正确的服务帐户(如果 Excel Service 帐户不在列表中,则新建一个管理帐户)。

配置 Excel Services 受信任文件位置和身份验证设置

创建好 Excel Services 应用程序后,请对新服务应用程序配置属性,以指定受信任的主机位置和身份验证设置。

  1. 打开管理中心。

  2. 选择“应用程序管理”下的“管理服务应用程序”。

  3. 单击新服务应用程序(在此示例中为“Excel Services”)的链接。

  4. 在 Excel Services 管理屏幕中,单击“受信任文件位置”。

  5. 添加新的受信任文件位置。

  6. 将该位置指定为您的测试库。

    备注

    在本例中,我们信任根 Web 应用程序 URL 和所有子级。在生产环境中,您可以选择仅信任要求更严格的位置。

  7. 在“外部数据”中,选择“受信任的数据连接库和嵌入连接”。

    备注

    此示例将使用嵌入连接来连接到 SQL Server。在您的环境中,您可以选择创建单独的连接文件,并将其存储在受信任的数据连接库中。在那种情况下,您只能选择受信任的数据连接库。

  8. 更改外部数据缓存寿命 — 出于测试的目的,可方便地更改外部数据缓存生命周期,以确保数据刷新来自数据源,而不是缓存。在外部数据下,更改以下设置:

    自动刷新(定期/打开时) = 0

    手动刷新 = 0

    备注

    在生产环境中,您会需要将缓存设置配置为高于 0。将缓存设置为 0 仅出于测试目的。

验证 Excel Services 约束委派

创建文档库以承载测试工作簿

在上一步中配置的受信任的路径中打开网站。创建新文档库以承载测试 Excel 工作簿。

使用 SQL 数据连接创建测试 Excel 工作簿

接下来,创建 Excel 工作簿,其中包含到新测试数据库的数据连接:

  1. 打开 Excel。

  2. 在“数据”选项卡上,选择“自其他来源”->“来自 SQL Server”。

  3. 连接到测试 SQL 数据源。

  4. 选择测试数据库和测试表(在本例中为 Sales)。

  5. 单击“下一步”。单击身份验证设置按钮。确保指定了 Windows 身份验证。

  6. 单击“完成”。

  7. 选择“数据透视表”。

  8. 配置数据透视表。确保数据是从 SQL 源返回的。

将工作簿发布到 SharePoint Server 并刷新数据连接

验证 Excel Services 应用程序的最后一步是发布工作簿和测试刷新嵌入 SQL 连接。

  1. 单击“文件”选项卡。

  2. 单击“保存并发送”,单击“保存到 SharePoint”,然后单击“浏览位置”。

  3. 输入前几步中创建的受信任库的位置。

  4. 确保选择了“通过 Excel 在浏览器中打开”。

    此时将打开新浏览器窗口,其中显示您的测试工作簿。工作簿呈现后,请刷新数据连接,方法是单击“数据”,然后单击“刷新所有连接”。

    如果数据连接刷新,则您已为 Excel Services 成功配置 Kerberos 委派。若要进一步测试连接,请通过 SQL Management Studio 更改数据源,然后刷新连接。您应在工作簿中看到新更改的数据。如果未看到任何更改,并且在刷新时未收到任何错误,则看到的很可能是缓存的数据。默认情况下,Excel Services 将缓存外部源的数据 5 分钟。您可以更改此缓存设置;有关详细信息,请参阅本文的配置 Excel Services 受信任文件位置和身份验证设置。