声明身份验证和 Reporting Services

SharePoint 2010 产品支持基于声明的身份验证。SharePoint 集成模式下的 SQL Server 2008 R2 Reporting Services 将通过受信任帐户身份验证和 SharePoint 用户标记,使用启用 SharePoint 声明的 Web 应用程序。 有关基于声明的身份验证的详细背景信息,请参阅 Claims-Based Identity Overview(基于声明的标识概述)。有关 SharePoint 2010 身份验证的详细信息,请参阅规划身份验证方法

报表服务器如何与声明身份验证通信

下面是当报表服务器和 Reporting Services 代理连接到启用声明的 Web 前端 (WFE) 时发生的基本步骤。

  • 启用声明的 WFE 执行适当的声明身份验证,并使用 SharePoint 安全标记服务将声明标记传送给位于 SharePoint WFE 上的 Reporting Services 代理。

  • WFE 上的 Reporting Services 代理使用声明标记来生成用于将其转发到报表服务器的 SharePoint 用户标记。

  • 报表服务器本身并不识别声明,而不执行任何声明特定的身份验证或转换。它使用 Reporting Services 代理发送的 SharePoint 用户标记。

  • 根据 SharePoint 用户标记,报表服务器使用本地 SharePoint 对象模型来生成正确的 SharePoint 用户上下文。

  • 报表服务器使用适当的 SharePoint 用户上下文,将所请求的信息(如呈现的报表)发回到 SharePoint。

将 Web 应用程序转换为基于声明的身份验证

SharePoint 2010 使用户能够将现有 SharePoint 2010 Web 应用程序转换为基于声明的身份验证。如果需要声明身份验证,则使用非 Windows 身份验证并从早期版本的 SharePoint 升级到 SharePoint 2010 的 Web 应用程序必须进行转换。

有关将 Web 应用程序转换为声明身份验证的详细信息,请参阅为基于声明的 Web 应用程序配置基于表单的身份验证 (SharePoint Server 2010)

配置 Reporting Services 以支持启用声明的 Web 应用程序

若要支持启用声明的 Web 应用程序,需要对 Reporting Services 配置进行以下更改。

  • 将 Reporting Services 服务帐户配置为访问转换后的 Web 应用程序。使用 SharePoint 管理中心内的**“Reporting Services 集成”网页。当在扩展部署中使用 Reporting Services 环境并且报表服务器使用不同的服务帐户时,请为每个报表服务器使用 SharePoint 管理中心中的“将报表服务器添加到集成”**网页。

  • 对于现有的 Reporting Services 订阅,使用 rs.exe 和具有 ChangeSubscriptionOwnerSOAP API 的脚本将订阅所有者更改为由声明身份验证支持的适当用户。

  • 对于现有模型项安全性,请使用“模型项安全性”网页或具有 SetModelItemPolicies API 的脚本,将对单个模型项具有读访问权限的用户列表更新为由声明身份验证支持的用户。

SharePoint 2010 产品的 Reporting Services 外接程序的身份验证回退行为

通过 SharePoint 管理中心的“Reporting Services 集成”页,用户可以配置一种身份验证模式,即“可信帐户”或“Windows 身份验证”。然而,SharePoint 环境可能包含各自依赖于不同身份验证类型的 Web 应用程序。例如,可以将一个 Web 应用程序配置为使用基于声明的身份验证,而将另一个 Web 应用程序配置为使用经典模式身份验证。外接程序安装的 Reporting Services 代理很灵活,在某些情况下可能会更改身份验证方法。

如果已将 Reporting Services 集成配置为使用 Windows 身份验证,则 Reporting Services 代理可以回退到受信任身份验证,代理将检测到一个配置为使用基于声明的身份验证的 SharePoint Web 应用程序。

下表汇总了 Reporting Services 行为,这些行为基于已针对 Reporting Services 集成和 SharePoint Web 应用程序配置的身份验证。

Reporting Services 集成页

SharePoint 2010 Web 应用程序配置

是否支持

Windows 身份验证

基于经典的身份验证

可信帐户

基于声明的身份验证

可信帐户

基于经典的身份验证

Windows 身份验证

基于声明的身份验证

是。Reporting Services 代理将回退为使用“可信帐户”身份验证。

回退行为的副作用体现在:在某些情况下,需要 Windows 身份验证。例如,如果某个报表正在使用的数据源配置为使用 Windows 集成安全性,您将看到类似如下内容的错误消息,原因在于 Reporting Services 代理检测到该 Web 应用程序正在使用声明身份验证,代理使用回退逻辑,而会话却处于可信帐户上下文中:

处理报表时出错。(rsProcessingAborted)

无法模拟数据源“MyDataSourceName”的用户。(rsErrorImpersonatingUser)

此数据源被配置为使用 Windows 集成安全性,而此报表服务器禁用了 Windows 集成安全性,或者使用的是可信帐户模式。(rsWindowsIntegratedSecurityDisabled)

若要解决此问题,您需要修改数据源以使用存储的凭据。

Reporting Services 客户端不支持 LiveID 或 SAML 声明身份验证

Reporting Services 客户端应用程序(报表生成器、Business Intelligence Development Studio 中的报表设计器和 Management Studio)不支持对基于 LiveID 或 SAML 声明的 SharePoint Web 应用程序进行连接和身份验证。客户端可以使用其他形式的声明身份验证,因为它们使用 Reporting Services 身份验证端点。此端点允许客户端通过由 ASP.NET 表单身份验证使用的相同组件与 SharePoint 进行通信。SAML 声明和 LiveID 身份验证的工作原理不同,Reporting Services 客户端不支持它们。