微软企业开发库 安全应用程序块
企业程序库
Microsoft Corporation
摘要
本页概述了企业程序库安全应用程序块。这是基于可重用和可扩展的源代码的指导,它简化了基于 .NET 的应用程序中通用安全功能的开发。
下载
最新版本的安全应用程序块包含在 2005 年 1 月发布的 patterns & practices 企业程序库之中。要了解并下载企业程序库,请使用以下链接:
| • | |
| • |
企业程序库的使用条款详见最终用户许可协议 (EULA)。
您也可以从 Microsoft 下载中心的授权与配置文件应用程序块网页下载名为授权与配置文件应用程序块的早期应用程序块。授权与配置文件应用程序块包含的功能是安全应用程序块功能的子集。
本页内容
| 安全应用程序块简介 | |
| 安全应用程序块的设计 | |
| 测试驱动 | |
| 社区 | |
| 反馈和支持 | |
| 发展蓝图 | |
| 作者和参与人员 | |
| 相关标题 |
安全应用程序块简介
Microsoft Enterprise Library Security Application Block 1.0 版有助于开发人员在其应用程序中实现与安全相关的常见功能。应用程序可以在多种情况下使用此应用程序块,例如,根据数据库对用户进行身份验证和授权、检索角色和配置文件信息以及缓存用户配置文件信息。安全应用程序块具有以下功能:
| • |
它可以减少编写样本代码以执行标准任务的需要。 |
| • |
它有助于在应用程序和整个企业中维护一致的安全做法。 |
| • |
利用涵盖提供的各种功能区域且一致的体系结构模型,从而使开发人员在学习过程中少走一些弯路。 |
| • |
它提供了用于解决常见的应用程序安全问题的实现。 |
| • |
它是可扩展的,并且支持安全提供程序的自定义实现。 |
常见情况
开发人员经常编写需要安全功能的应用程序。这些应用程序通常需要执行一系列不同的安全操作,而且它们还经常与不同的基础安全提供程序(如 Microsoft Active Directory 目录服务、授权管理器、Active Directory 应用程序模式 (ADAM) 和自定义数据库等)进行交互。
安全应用程序块通过收集开发人员必须执行的许多最常见的安全任务,来简化开发人员的工作。每个任务都以一致的方式处理,从特定的安全提供程序中抽象出应用程序代码并使用非常好的做法。您甚至可以通过更改配置来更改基础提供程序,而无需更改基础应用程序代码。
安全应用程序块提供的代码可以在以下方案中帮助您:
| • |
身份验证 |
| • |
授权 |
| • |
角色管理 |
| • |
配置文件管理 |
| • |
缓存主体 |
读者要求
该应用程序块专为软件架构师和软件开发人员而设计。要充分利用该指导,您应该了解以下技术:
| • |
Microsoft Visual C# 开发工具或 Microsoft Visual Basic 开发系统 |
| • |
NET Framework(包括 .NET 安全概念) |
| • |
诸如 Microsoft Windows 身份验证和授权等主题的基本知识 |
1.0 版的主要特点
安全应用程序块是一个早期应用程序块(名为授权与配置文件应用程序块)的增强版。此版本的安全应用程序块包含大量授权与配置文件应用程序块所没有的功能。这些功能包括:
| • |
身份验证支持 |
| • |
无需授权管理器即可授权 |
| • |
缓存与安全相关的凭据 |
| • |
附加的提供程序 |
从授权与配置文件应用程序块迁移
授权与配置文件应用程序块的用户应该了解企业程序库安全应用程序块针对的多种情况。当前版本是基于从早期版本获得的知识和反馈而构建的,但它在如何解决那些情况方面有了重大改变。
企业程序库版本的安全应用程序块和授权与配置文件应用程序块的主要区别如下:
| • |
企业程序库安全应用程序块包含有助于进行身份验证的功能,而授权与配置文件应用程序块则不包含可实现身份验证的任何功能。 |
| • |
现在,开发人员调用的是工厂类的方法而非提供程序管理器。这些类在应用程序块的不同功能区域中是一致的。 |
| • |
方法由提供程序提供,而非使用具有附加方法的扩展主体提供。这允许您通过自定义的 IPrincipal 实现来使用它们。 |
系统要求
安全应用程序块的要求如下:
| • |
Microsoft Windows 2000、Windows XP Professional 或 Windows Server 2003 操作系统 |
| • |
Microsoft .NET Framework version 1.1 |
| • |
Microsoft Visual Studio .NET 2003 |
| • |
维护用于身份验证、授权、配置文件和角色信息的数据的存储(具体要求取决于您使用此应用程序块的方式) |
| • |
用于缓存安全信息的存储(只有当您使用应用程序块的缓存功能时才需要) |
| • |
一个或多个用于维护授权数据的授权存储(如果您准备使用此应用程序块来进行授权) |
注 如果您使用授权管理器提供程序,则需要 Microsoft Windows 2000 Server with Service Pack 4 或 Microsoft Windows Server 2003。
安全应用程序块的依赖项
企业程序库应用程序块被设计为能够彼此配合使用。有时,应用程序块依赖于其他应用程序块和企业程序库中包含的代码。安全应用程序块具有以下依赖项:
| • |
配置应用程序块。安全应用程序块使用它来读取其配置信息。 |
| • |
通用程序库功能,例如规范。它提供了各种功能来公开用于系统管理的事件和数据。 |
根据您向安全应用程序块要求的特定功能,您可能还需要以下一个或两个应用程序块,它们都包含在企业程序库中:
| • |
数据访问应用程序块。安全应用程序块的数据库提供程序使用数据访问应用程序块来访问包含在数据库中的安全信息。 |
| • |
缓存应用程序块。安全应用程序块使用缓存应用程序块来缓存安全信息,并在需要时检索它。 |
默认情况下,该应用程序块使用 XML 文件来存储配置信息。您可以修改此配置信息以更改应用程序块的行为。修改该信息的推荐方法是使用企业程序库配置控制台。
真正的安全信息(授权数据、身份验证存储和配置文件信息)由应用程序块中各个区域的提供程序管理。
安全应用程序块的设计
安全应用程序块旨在实现以下目标:
| • |
为通常需要的功能提供简单而直观的界面 |
| • |
封装用于执行最常见的应用程序安全任务的逻辑 |
| • |
为常见安全任务提供标准的提供程序模型 |
| • |
确保应用程序块是可扩展的 |
| • |
确保性能影响最小或可忽略不计(与人工编写的用于实现同一功能的安全代码相比) |
| • |
集成应用程序安全的非常好的做法 |
设计要点
图 1 展示了安全应用程序块的设计。

图 1. 安全应用程序块的设计
安全应用程序块在其设计中集成了通常需要的应用程序安全功能的实现。这些任务包括授权、身份验证、配置文件管理和角色管理。
测试驱动
开发安全应用程序块的目的是,分析常见的企业开发难题以及提供针对这些难题的成功解决方案。然而,因为每个应用程序都是唯一的,所以您会发现该应用程序块并不适合每个应用程序。为了评估该应用程序块并确定它对您项目的适用性,Microsoft 建议您至少用半天的时间来研究该应用程序块。推荐的评估方法如下:
|
1. |
下载企业程序库。 |
|
2. |
安装企业程序库,并编译所有的应用程序块和工具。 |
|
3. |
阅读文档的“Introduction”部分。 |
|
4. |
编译并运行快速入门示例,然后通读文档中相关 “QuickStart Walkthroughs”和“Key Scenarios”的部分。 |
|
5. |
如果应用程序块看起来很适合您的应用程序,则尝试使用该应用程序块在您的应用程序或丢弃原型 (throw-away prototype) 应用程序中实现一个简单的用例。 |
社区
该应用程序块与其他 Patterns & Practices 产品一样,均可在社区站点上找到相关内容。在此社区站点上,您可以张贴问题、提供反馈或与其他用户联系以分享一些想法。社区成员还可以帮助 Microsoft 设计和测试未来的应用程序块,以及下载其他内容(例如扩展和培训材料)。
反馈和支持
您是否有任何问题、意见和建议?要提供有关该应用程序块的反馈,或者要获得针对任何问题的帮助,请访问企业程序库社区站点。该社区站点是首选的反馈和支持渠道,因为它允许您与整个社区分享您的想法、问题和解决方案。您也可以通过 devfdbck@microsoft.com 直接给 Microsoft patterns & practices 小组发送电子邮件,不过也许我们无法回复每封邮件。
企业程序库是一种设计为可以重用、自定义和扩展的指导性产品。它不是 Microsoft 产品。基于代码的指导“按原样”提供,但不对此进行任何担保。客户可以从 Microsoft 支持服务获得付费支持,但 Microsoft 支持人员会认为该代码是用户编写的。有关支持策略的更多信息,请参见企业程序库主页。
发展蓝图
安全应用程序块的更新版本是为下一个企业程序库版本设计的。该版本将以 .NET Framework 2.0 和 Visual Studio 2005 为目标。
安全应用程序块将会被更新,以便与 .NET Framework 2.0 一起使用,并且可能会包含基于客户反馈的其他改进。
作者和参与人员
企业程序库安全应用程序块是由以下人员创作的:
| • |
项目经理:William Loeffler (Microsoft Corporation),Linh Nguyen (Avanade Inc) |
| • |
产品经理:Tom Hollander (Microsoft Corporation) |
| • |
架构师:Edward Jezierski (Microsoft Corporation),Kyle Huntley (Avanade Inc) |
| • |
开发人员:Scott Densmore、Peter Provost (Microsoft Corporation),Brian Button (Murphy and Associates),Hisham Baz (Avanade Inc),Paul Currit (Avanade Inc),Rick Zimmerman (Avanade Inc) |
| • |
测试人员:Mohammad Al-Sabt、Carlos Farre (Microsoft Corporation),Rohit Sharma, Mani Krishnaswami、Prashant Bansode (Infosys Technologies Ltd) |
| • |
文档与示例编写人员:RoAnn Corbisier (Microsoft Corporation),Tim Osborn (Ascentium Corporation),Roberta Leibovitz (Modeled Computation LLC),Paul Slater (Wadeware LLC),Tina Burden McGrayne (Linda Werner & Associates Inc) |
非常感谢以下顾问人员,他们提供了很有价值的帮助:
| • |
Rudy Araujo、Yen-Ming Chen、Mark Curphey 和 David Raphael (Foundstone Inc.) |
| • |
Benoit Morneau 和 Shoichi Takasaki (Bowne Global Solutions) |