日期:2013-12-11  浏览次数:20628 次

使用 Reporting Services 中的窗体身份验证发布日期: 8/18/2004 | 更新日期: 8/18/2004
Microsoft Corporation

适用范围:
Microsoft® SQL Server™ 2000 Reporting Services

摘要:了解有关 Reporting Services 安全扩展方面的知识,着重学习窗体身份验证。此外,下载和部署 Reporting Services 的窗体身份验证扩展现例。

要安装示例代码,请下载 Forms Authentication Sample installer,并在计算机上运转它。
本页内容引言关于本指南Reporting Services 平台窗体身份验证示例结论参考材料引言
部署安全的分布式企业报告处理方案是一个极具挑战性的过程。从报告访问到提供重要数据(有时是敏感数据)的数据源,您需求针对如何在报告环境中对用户进行安全的身份验证和授权作出决策。在安全方面,报告是报告链中最薄弱的环节。

所需的安全类型取决于报告环境和已安装的安全系统类型。Microsoft® Windows® Authentication 是用于确保 Microsoft® SQL Server™ 2000 Reporting Services 中的报告安全性的次要系统。Windows Authentication 提供与其他 Microsoft 服务器产品的紧密集成,由于 Reporting Services 是在 Windows Authentication 上设计和测试的,因此它在这个环境中的安全性最高。

然而,在某些情况下,可能需求对 Reporting Services 安全系统进行扩展,以满足企业自定义安全的需求。您可以通过功用丰富的 Reporting Services API 开发平台达到这一目的。本指南将概述 Reporting Services 中的扩展,尤其是安全扩展。您还可以下载适用于 Reporting Services 的示例窗体身份验证扩展,并对它进行深入研讨。随后,您可以利用 Reporting Services 安全扩展将自定义安全添加到企业报告处理方案中。
前往页首关于本指南
本指南中提供的信息旨在:

向您引见 Reporting Services 安全扩展。

确定在 Reporting Services 中使用自定义身份验证和授权的位置和方式。

引见身份验证和授权在 Reporting Services 中的任务方式。

引见窗体身份验证及其实现方式。

为您提供了一个可以下载和研讨的窗体身份验证示例。
必备知识
本指南未引见 ASP.NET 安全或窗体身份验证,未提供有关编程或使用程序安全的深层次知识。作为一名期望为 Reporting Services 实现安全扩展的开发人员,您应该对以下一个或多个方面有着深入的了解:

Microsoft Reporting Services 功用,尤其是身份验证、授权和基于角色的安全。

Microsoft .NET Framework。

ASP.NET 和 ASP.NET 安全。

窗体身份验证。

.NET 言语方面的开发经历。本文仅提供用 C# 编写的示例。

要直接了解代码,可以转到“窗体身份验证示例”部分。不过,您可能会发现前面的几部分很有协助,这些部分引见了您将使用的某些技术以及如何将这些技术组合在一同使用。
前往页首Reporting Services 平台
通过 Reporting Services,可在整个企业中设计、部署和交付报告。从开发人员的角度来看,Reporting Services 通过 .NET Framework 和 Web service 的关键开发平台提供了各种编程机会。Reporting Services 可以通过“随手可用”的方式进行部署,从而可以在任何公司中提供全面的报告处理方案。然而,Reporting Services 的开放式和可扩展编程体系结构使它已不再是一个现成的产品,而更像是开发人员以及最终用户的报告平台。
扩展 Reporting Services
Reporting Services 具有可扩展性。通过托管代码 API,可以开发、安装和管理许多 Reporting Services 组件使用的扩展。可以使用 .NET Framework 创建公用或共享的程序集,并添加新的 Reporting Services 功用以满足日益增长的业务需求。开发人员可通过以下方式扩展 Reporting Services:

除了 Reporting Services 当前附带的 Microsoft SQL Server、Oracle 和 OLE DB 提供程序以外,创建其他数据处理扩展。数据处理扩展可用于从您本人特有的数据源中读取数据,并可用于在创建和筛选数据集时并入其他业务逻辑。

除了 Reporting Services 当前附带的电子邮件和文件共享交付扩展以外,创建其他交付扩展。交付扩展可用于向传真机、寻呼机、打印机等设备交付报告。

除 Reporting Services 曾经附带的呈现扩展之外,创建其他呈现扩展。

除了 Windows Authentication 扩展(它当前是该产品的默认安全机制)之外,创建其他安全扩展。

如前所述,本指南次要引见了如何通过窗体身份验证扩展 Reporting Services 的安全系统。
安全扩展
通过 Reporting Services 安全扩展,可以对用户或组进行身份验证和授权,即它使不同的用户能够登录到报告服务器,并依据他们的身份执行不同的任务或操作。默认情况下,Reporting Services 使用基于 Windows 的身份验证扩展,该身份验证扩展使用 Windows 帐户协议验证声称拥有该系统帐户的用户的身份。Reporting Services 使用基于角色的安全系统对用户进行授权。Reporting Services 基于角色的安全模式类似于其他技术的基于角色的安全模式。由于安全扩展基于开放式、可扩展的 API,因此可以在 Reporting Services 中创建新身份验证和授权扩展。以下是使用基于窗体的身份验证和授权的安全扩展实现的典型示例:


图 1如图所示,身份验证和授权按如下过程进行:

1.

用户尝试通过输入 URL 来访问 Report Manager,然后被重定向到一个为客户端使用程序收集用户凭据的窗体。

2.

该用户将凭据提交给窗体。

3.

通过 LogonUser 方法将该用户的凭据提交给 Reporting Services Web service。

4.

Web service 调用客户提供的安全扩展,并验证自定义安全机构中能否存在该用户名和密码。

5.

进行身份验证时,Web service 将创建身份验证票据(称作“Cookie”),管理该票据,并验证该用户的角色能否访问 Report Manager 的主页。

6.

Web service 将 Cookie 前往给浏览器,并在 Report Manager 中显示相应的用户界面。

7.

身份验证结束后,浏览器向 Report Manager 发出请求,同时在 HTTP 标头中传输此 Cookie。这些请求是为呼应 Report Manager 使用程序中的用户操作而发出的。

8.

该 Cookie 连同请求的用户操作在 HTTP 标头中一同被传输到 Web service。

9.

Cookie 将接受验证,如果它无效,报告服务器将从报告服务器数据库中前往与请求操作相关的安全描述符和其他信息。

10.

如果 Cookie 无效,报告服务器将调用安全扩展,以检查该用户能否有权执行特定的操作。

11.

如果该用户已被授权,报告服务器将执行请求的操作,并将控制前往给调用方。

12.

该用户经过身份验证后