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

 

适用于: SharePoint Server 2010

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

在本方案中,您将向 SharePoint Server 环境中添加一个 Visio Services 服务应用程序,并配置 Kerberos 约束委派,以允许服务刷新 Visio Web 绘图中来自外部 SQL Server 数据源的数据。

方案依赖关系

若要完成本方案,您需要先完成:

配置清单

配置区域 说明

Active Directory 配置

创建 Visio Services 服务帐户

对 Visio Services 服务帐户配置 SPN

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

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

SharePoint Server 配置

启动 Visio Services 服务器上的声明为 Windows 令牌服务

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

启动 Visio Services 服务器上的 Visio Services 服务实例

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

验证 Visio Services 约束委派

配置 Visio Services 缓存设置

创建文档库来承载测试 Visio 图表

创建包含 SQL Server 数据连接形状的测试 Visio Web 绘图

将 Visio 绘图发布到 SharePoint Server 并刷新数据连接

方案的环境详细信息

Kerberos 约束委派路径

委派路径关系图

在本方案中,我们将配置 SharePoint Server Visio Services 应用程序服务器和 SQL Server 服务的 Kerberos 约束委派的服务帐户。

SharePoint Server 逻辑身份验证

身份验证流程关系图

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

分步配置说明

Active Directory 配置

创建 Visio Services 服务帐户

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

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

Visio Services

vmlab\svcVisio

创建 Visio Services 服务帐户

对 Visio Services 服务帐户配置 SPN

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

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

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

SETSPN -S SP/VisioServices svc\VisioServices

备注

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

为 Visio Services 配置 Kerberos 约束委派

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

必须信任运行 Visio Services 的每个服务器,才能将凭据委派给 Visio 将向其进行身份验证的每个后端服务。另外,Visio Services 服务帐户还必须配置为允许委派给相同的后端服务。

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

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

用户

Vmlab\svcVisio

MSSQLSVC/MySqlCluster.vmlab.local:1433

*用户

Vmlab\svcC2WTS

MSSQLSVC/MySqlCluster.vmlab.local:1433

**计算机

Vmlab\vmsp10app01

MSSQLSVC/MySqlCluster.vmlab.local:1433

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

** 可选。仅在以本地系统身份运行 C2WTS 时,才需要计算机帐户上的约束委派

配置约束委派

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

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

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

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

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

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

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

    备注

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

  8. 单击“确定”。然后系统将要求您选择要委派给的 SPN。

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

  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 配置

在 Visio 图形服务器上配置和启动“声明为 Windows 令牌服务”

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

每个 Visio Graphics Service 应用程序服务器都必须在本地运行 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 Server 服务。

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

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

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

      1. 以操作系统方式执行

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

      3. 作为服务登录

  5. 打开管理中心。

  6. 在“安全”中的“配置托管服务帐户”部分,将 C2WTS 服务帐户注册为托管帐户。

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

  8. 在右上角的服务器选择框中,选择运行 Visio Graphics Service 的服务器。在此示例中为 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. 单击“确定”。

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

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

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

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

$w.GrantAccessToProcessIdentity("vmlab\svcVisio")

启动 Visio 服务器上的 Visio Graphics Service 实例

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

  1. 打开管理中心。

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

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

  4. 启动“Visio Graphics Service”。

创建 Visio Graphics Service 应用程序和代理

接下来,配置新的 Visio Services 服务应用程序和应用程序代理以允许 Web 应用程序使用 Visio Services(如果尚不存在):

  1. 打开管理中心。

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

  3. 选择“新建”,然后选择“Visio Graphics Service”。

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

验证 Visio Graphic Service 约束委派

配置 Visio Services 缓存设置

默认情况下,Visio Graphics Service 基于服务的缓存设置将呈现给 Web 客户端的 Web 绘图缓存几分钟。为了测试委派,我们将服务配置为不缓存绘图以轻松检查 Visio Web 绘图中的数据刷新。

备注

在生产环境中,不建议禁用呈现缓存。在测试完 Visio 中的委派后,记住重新启用缓存

  1. 打开管理中心。

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

  3. 选择在上一步中创建的 Visio Graphics Service 应用程序。

  4. 选择“全局设置”。

  5. 在“最小缓存老化”设置中,将缓存设置为 0(无缓存)。

    备注

    将“最小缓存老化”设置为 0 仅出于测试目的,不应在生产环境中使用。

创建文档库来承载测试 Visio Web 绘图

导航到门户应用程序 (http://portal)。创建新的文档库来承载测试 Visio 工作簿。

创建包含 SQL Server 数据连接形状的测试 Visio Web 绘图

  1. 启动 Visio 2010。

  2. 在“开始”下的“常规”部分创建新的“基本框图”。

  3. 在“数据”功能区选项卡上,选择“将数据链接到形状”。

  4. 在“数据选取器”对话框中,选择“Microsoft SQL Server 数据库”。

  5. 指定在方案 2 中创建的 SQL Server 群集,然后选择“Windows 身份验证”。

  6. 选择“测试”数据库和“销售”表。

  7. 指定连接的友好名称并将连接保存到上一步中创建的文档库中。

  8. 在“数据选取器”对话框中,选择新创建的连接,然后按“完成”。

    现在,您应该在绘图窗口底部的外部数据窗口中看到您在前面创建的示例数据。

  9. 将第一个数据行拖动到绘图图面上。这将创建一个链接到数据行的新形状。请注意,测试绘图旨在测试委派,而不是演示如何创建完全运行的、可在生产中使用的 Web 绘图。

将 Visio 绘图发布到 SharePoint Server 并刷新数据连接

  1. 将绘图发布到测试 SharePoint 文档库中。在“文件”选项卡上,依次单击“保存并发送”、“保存到 SharePoint”、“浏览位置”和“Web 绘图”。

  2. 浏览到测试文档库,指定测试绘图的名称,然后单击“保存”。

    绘图将在浏览器中打开。

  3. 在刷新已禁用通知中,选择“启用(始终)”。

  4. 数据连接应自动刷新,并且应没有出现任何错误。

  5. 打开 SQL Server Management Studio 并修改 Web 绘图中显示的数据行。

  6. 通过按绘图窗口顶部的“刷新”按钮来刷新数据连接。如果正确配置了委派,则您应看到数据刷新。