Claims to Windows Token Service (C2WTS) 和 Reporting Services

适用范围: SQL Server 2016 (13.x) Reporting Services 及更高版本 SharePoint Power BI 报表服务器

如果要在 SQL Server Reporting Services 报表查看器 Web 部件中查看本机模式报表,需要 SharePoint Claims to Windows Token Service (C2WTS)。

如果要对 SharePoint 场外的数据源使用 Windows 身份验证,也需要在 SQL Server Reporting Services SharePoint 模式下使用 C2WTS。 即使您的数据源与共享服务位于相同的计算机上,也需要 C2WTS。 但在此方案中,不需要约束委派。

注意

自 SQL Server 2016 之后,不再提供 Reporting Services 与 SharePoint 的集成这一功能。

报表查看器(本机模式)Web 部件配置

报表查看器 Web 部件是一个自定义 Web 部件,可用于查看 SharePoint 网站中的 SQL Server Reporting Services(本机模式)报表。 可以使用此 Web 部件在报表服务器上查看、导航、打印和导出报表。 报表查看器 Web 部件与由 SQL Server Reporting Services 报表服务器或 Power BI 报表服务器处理的报表定义 (.rdl) 文件相关联。 此报表查看器 Web 部件不能用于 Power BI 报表服务器中托管的 Power BI 报表。

SharePoint Server 2013、SharePoint Server 2016 和 SharePoint Server 2019 都使用声明身份验证。 因此,需要正确配置 C2WTS 并且需要为 Reporting Services 配置 Kerberos 身份验证以正确呈现报表。

  1. 通过确定 SSRS 服务帐户、设置 SPN 和更新 rsreportserver.config 文件,为 Reporting Services(本机模式)实例配置 Kerberos 身份验证,从而使用 RSWindowsNegotiate 身份验证类型。 为报表服务器注册服务主体名称 (SPN)

  2. 按照配置 c2WTS 所需的步骤中的步骤执行操作

SharePoint 模式集成

本节仅适用于 SQL Server 2016 Reporting Services 及更早版本。

如果要对 SharePoint 场外的数据源使用 Windows 身份验证,需要在 SQL Server Reporting Services SharePoint 模式下使用 SharePoint Claims to Windows Token Service (C2WTS)。 如果用户使用 Windows 身份验证访问数据源,此要求也适用。其原因在于,Web 前端 (WFE) 和 Reporting Services 共享服务之间的通信将始终是声明身份验证。

配置 c2WTS 所需的步骤

C2WTS 创建的令牌将仅用于约束委派(对特定服务的约束)以及配置选项“使用任何身份验证协议”(协议转换)。

如果您的环境将使用 Kerberos 约束委派,则 SharePoint 服务器服务和外部数据源需要位于同一 Windows 域中。 依赖于 Claims to Windows Token Service (c2WTS) 的所有服务都必须使用 Kerberos 约束 委派,以便允许 c2WTS 使用 Kerberos 协议转换将声明转换为 Windows 凭据。 这些规定适用于所有 SharePoint 共享服务。 有关详细信息,请参阅 在 SharePoint 2013 中规划 Kerberos 身份验证

  1. 配置 C2WTS 服务域帐户。

    最佳做法是 C2WTS 应在其自己的域标识下运行。

    • 创建一个 Active Directory 帐户,并将该帐户注册为 SharePoint Server 中的托管帐户。

    • 配置 C2WTS 服务以通过“SharePoint 管理中心 > 安全性 > 配置服务帐户 > Windows 服务 - Windows Token Service 声明”使用托管帐户

    在要与 C2WTS 一起使用的每台服务器上,将 C2WTS 服务帐户添加到本地管理员组。 对于报表查看器 Web 部件,这些服务器是 Web 前端 (WFE) 服务器。 对于 SharePoint 集成模式,这些服务器是运行 Reporting Services 服务的应用程序服务器。

    • 在“本地策略 > 用户权限分配”下的本地安全策略中授予 C2WTS 帐户以下权限:
      • 以操作系统方式操作
      • 在身份验证后模拟客户端
      • 作为服务登录
  2. 配置 C2WTS 服务帐户的委派。

    该帐户需要具有协议转换的约束委派,并且需要相应权限以便委派给需要与之通信的服务(即 SQL Server 数据库引擎、SQL Server Analysis Services)。 要配置委派,可使用 Active Directory 用户和计算机管理单元,并且需要成为域管理员。

    重要

    无论在委派选项卡上为 C2WTS 服务帐户配置何种设置,都需要与正在使用的主服务帐户匹配。 对于报表查看器 Web 部件,这是 SharePoint Web 应用程序的服务帐户 。 对于 SharePoint 集成模式,这是 Reporting Services 服务帐户 。

    例如,如果允许将 C2WTS 服务帐户委派给 SQL 服务,则需要对 SharePoint 集成模式的 Reporting Services 服务帐户执行相同操作。

    • 右键单击各服务帐户并且打开“属性”对话框。 在该对话框中,选择“委派”选项卡。

      只有在对象具有分配给它的服务主体名 (SPN) 的情况下,“委派”选项卡才可见。 C2WTS 不要求在 C2WTS 帐户上具有 SPN;但如果没有 SPN,“委派”选项卡将不可见。 配置约束委派的另一个方法是使用 ADSIEdit之类的实用工具。

    • “委派”选项卡上的主要配置选项如下:

      • 选择“仅信任此用户对指定服务的委派”
      • 选择“使用任何身份验证协议”
    • 选择 “添加”以添加要委派的服务。

    • 选择“用户或计算机...*”并输入托管服务的帐户。 例如,如果在名为 sqlservice 的帐户下运行 SQL Server,则输入 sqlservice 。 对于报表查看器 Web 部件,此帐户是 Reporting Services(本机模式)实例的服务帐户。

    • 选择服务列表。 此选择显示该帐户可用的 SPN。 如果在该帐户上没有看到列出的服务,则它可能已丢失或放置在不同的帐户上。 可以使用 SetSPN 实用工具调整 SPN。 对于报表查看器 Web 部件,将看到报表查看器 Web 部件配置中配置的 http SPN。

    • 选择“确定”以退出对话框。

  3. 配置 C2WTS“AllowedCallers”

    C2WTS 需要在配置文件 C2WTShost.exe.config 中显式列出的“调用方”标识。C2WTS 不接受来自系统中所有验证了身份的用户的请求,除非配置为这样做。 在此情况下,“调用方”是 WSS_WPG Windows 组。 C2WTShost.exe.confi 文件保存在以下位置:

    在 SharePoint 管理中心为 C2WTS 服务更改服务帐户时,会将该帐户添加到 WSS_WPG 组中。

    \Program Files\Windows Identity Foundation\v3.5\c2WTShost.exe.config

    示例配置文件类似于如下:

    <configuration>
      <windowsTokenService>
        <!--  
            By default no callers are allowed to use the Windows Identity Foundation Claims To NT Token Service.  
            Add the identities you wish to allow below.  
          -->
        <allowedCallers>
          <clear/>
          <add value="WSS_WPG" />
        </allowedCallers>
      </windowsTokenService>
    </configuration>
    
  4. 通过 SharePoint 管理中心,在“管理服务器上的服务” 页上,启动(如果已启动,则停止并启动)Claims to Windows Token Service。 应在将执行操作的服务器上启动该服务。 例如,如果你有一个作为 WFE 的服务器,并且有另一个作为应用程序服务器的服务器(该服务器正在运行 SQL Server Reporting Services 共享服务),则只需在该应用程序服务器上启动 C2WTS。 如果在运行报表查看器 Web 部件,则仅 WFE 服务器上需要 C2WTS。

更多问题? 请访问 Reporting Services 论坛