Microsoft Corporation
在本节中
一个功能强大的 ASP.NET 应用程序依赖于许多元素及技术的成功的相互作用。每一个解决方案的组成部分都会提供安全性功能,这些功能被设计用来满足自身需要。然而,只是从单一的一个组成部分的角度来看待安全性是不够的。为了为整体的解决方案提供安全性,必须也要考虑各个组成部分是如何相互作用的。
本节介绍了 .NET Web 应用程序体系结构和安全性,并且提供了一个可供参考的框架,而在此系列中其它的章节会向此框架中补充其它内容。本节综述了存在于一个典型的 .NET Web 应用程序各个层面的安全性特征和服务。也介绍了 .NET Framework 安全性, 并且解释了在此框架中的哪些元素对 ASP.NET Web应用程序开发人员最为重要。
目标
本章用来:
• 深刻理解 .NET Web 应用程序体系结构和逻辑上以及物理上的应用程序层概念。
• 了解每个实现技术提供的哪些安全性特征可以用来构建 .NET Web 应用程序,以及它们如何一起工作。
• 理解 .NET Framework 安全性功能,并且理解哪些元素对 Web 应用程序安全性最为重要。
• 比较和对照 Web 应用程序中可以使用的授权和验证机制。
• 了解如何在 .NET Web 应用程序中使用主体和标识对象。
• 确定可在应用程序中用于实现信任边界的网关守卫和关口。
适用于:
本章应用于下面的产品和技术:
• Microsoft_ Windows_ XP 或者 Windows 2000 Server 及其以后的的操作系统
• Internet Information Services (IIS)
• .NET Framework 1.0 版本及其以后的版本
如何使用本节
为了从本章得到更多的收获:
• 您必须具有 ASP.NET Web 应用程序的开发经验。这将有助于您理解在本单元中讨论的各种安全性元素在何处与您的应用程序相结合。
• 阅读“构建安全的 ASP.NET 应用程序简介”,此文强调了授权、验证以及安全通信在创建安全的、分布式的Web应用程序中的重要性。同时指出了在开发安全的Web应用程序时采用的主要原则和实践。
本页内容
.NET Web 应用程序
实现技术
安全体系结构
介绍 .NET Framework 安全性
小结
.NET Web 应用程序
这一部分对 .NET Web 应用程序进行了简要的介绍,并且分别从逻辑上和物理上说明其特征。还介绍了用于构建 .NET Web 应用程序的各种实现技术。
逻辑层
逻辑应用程序体系结构将任何系统都视为一组相互协作的服务,这些服务分为以下几层:
• 用户服务
• 业务服务
• 数据服务
此逻辑体系结构视图的意义的价值在于将普遍存在于任何系统中的各种服务区分开来、确保了适当的分离以及促成各层之间的接口定义。这种分离可以使您在实现每个逻辑层时更为谨慎地进行体系结构和设计选择,从而构建出更易于维护的应用程序。
现将各逻辑辑层描述如下:
• 用户服务负责客户端与系统之间的交互,并且提供一个与核心业务逻辑相连的公共网桥,这些业务逻辑由业务服务层内的组件封装。一般说来,用户服务与交互式用户关联的情况最多。不过,它们也对其他系统发出的编程请求进行初始处理,这种情况下不涉及任何可见的用户界面。身份验证和授权的确切性质因客户端类型而异,它们通常在用户服务层内执行。
• 业务层提供系统的核心功能并封装业务逻辑。它们独立于传输信道和后端系统或数据源。这就为提升系统以支持新的、不同的信道及后端系统提供了必要的稳定性和灵活性。通常,为特定业务请求提供服务涉及到业务服务层内的许多协作组件。
• 数据服务通过一般接口提供对数据(系统边界内承载的)及其他(后端)系统的访问;通过业务服务层内的组件可以方便地使用这些接口。数据服务对多种后端系统和数据源进行了抽象,并且封装了特定的访问规则和数据格式。
系统内各服务类型的逻辑分类既与实现这些服务的组件的可能的物理分布相关,又相对独立于它们的物理分布。
可以在任何聚合级别上标识逻辑层,具体来说,可以对整个系统(在系统环境上下文和外部交互中)标识逻辑层,也可以对系统中所含的任何子系统标识逻辑层。记住这一点也很重要。例如,承载 Web 服务的每个远程节点由用户服务(处理传入的请求和消息)、业务服务和数据服务组成。
物理部署模型
前面所述的三个逻辑服务层并不意味着存在特定数量的物理层。所有这三种逻辑服务在物理上可能位于同一台计算机上,也可能分布于多台计算机上。
Web 服务器用作应用程序服务器
.NET Web应用程序的常用部署模式是将业务和数据访问组件放在 Web 服务器上。这样就最大限度地减少了网络跃点,有助于提高性能。图 1 中显示了这种模型。.
图 1. Web 服务器用作应用程序服务器
远程应用程序层
远程应用程序层是常用的部署模式,尤其是以下 Internet 方案中的常用部署模式:Web 层在周边网络(也就是大家所知道的DMZ 和屏蔽的子网)中是独立的部分,它依靠数据包筛选防火墙与最终用户和远程应用程序层分隔开图 2 中显示了远程应用程序层。
图 2. 远程应用程序层简介
实现技术
.NET Web 应用程序通常使用以下技术来实现一个或多个逻辑服务:
• ASP.NET
ASP.NET 通常用于实现用户服务。ASP.NET 提供一种可插接式体系结构,这种体系结构可用于构建 Web 页。有关 ASP.NET 安全性,的详细信息,请参阅:“ASP.NET 安全性”。
• 企业服务
Enterprise Services 为应用程序提供基础结构级别的服务。这包括分布式事务和资源管理服务,如 .NET 组件的对象池。有关Enterprise Services 的详细信息,请参阅“企业服务安全性”。
• Web 服务
Web 服务使用基于 SOAP 的消息交换来防火墙移动数据和在异构系统之间移动数据,以此来实现数据交换和应用程序逻辑的远程调用。有关 Web 服务的详细信息,请参阅“Web 服务安全性”。
• .NET Remoting
.NET Remoting 提供了一种用于跨越进程和计算机边界访问分布式对象的框架。有关.NET Remoting的详细信息,请参阅“NET Remoting 安全性”。
• ADO.NET 和 Microsoft_ SQL Server™ 2000
ADO.NET 提供数据访问服务。 ADO.NET从一开始就是专门为分布式 Web 应用程序设计的,很适合用于与 Web 应用程序有着内在联系的分离方案。SQL Server 提供使用操作系统身份验证机制(Kerberos 或 NTLM)的集成式安全性。授权由可应用于单个数据库对象的登录和细化权限提供。有关数据访问安全性的详细讨论,请参阅“数据访问安全性”。
• Internet 协议安全性 (IPSec)
IPSec提供点对点的传