日期:2013-11-27  浏览次数:20446 次

摘要:本文ASP.NET应用程序授权的概念,介绍了各种授权模式并进行了比较,阐述了选择授权模式的机制。


关键字:授权 authorization ASP.NET WEB应用


1.1. 授权概念
任何成功的应用程序安全策略的基础都是稳固的身份验证和授权手段,以及提供机密数据的保密性和完整性的安全通讯。
授权(authorization)过程负责控制通过了身份验证的客户端可以访问哪些资源,以及可以执行哪些操作。可访问的资源既包括文件、数据库等,还包括系统级的资源,如注册表,配置数据等。
许多WEB程序不是直接授权客户访问底层的资源,而是通过方法(method)来授权客户端所能够执行的操作。这样做的主要原因是考虑到应用系统的可伸缩性和可管理性。 图1列出了各种安全技术以及每种技术所提供的主要授权方式。

2. 2. 授权方式
如图1所示,Windows 2000上的.NET框架上提供了以下几种授权方式:

ASP.NET授权
Enterprise Services授权
SQL Server授权
2.1 ASP.NET授权
2.1.1 URL授权
这是一种通过计算机的设置和应用程序配置文件来配置的授权机制。URL授权允许限制用户访问位于应用程序URI命名空间中的特定文件和文件夹。

2.1.2 文件授权
可以使用此方法来限制对某个WEB服务器上指定文件的访问。访问权限由与文件相关的Windows ACL所确定。

2.1.3 主体权限请求
主体权限请求(Principal Permission Demand)可以通过声明方式或是编程方式作为一种额外的精确的访问控制机制。这种方式允许你根据单个用户的身份标识组成员关系,来限制对类、方法或单独代码的访问。

2.1.4 .NET角色
.NET角色用于将应用程序中具有相同权限的用户分成一组。这种方式可以和基于票证的身份验证方案(如窗体身份验证)一起使用,可以通过声明方式或是编程方式来配置对资源和操作的访问。

2.2 Enterprise Services授权
在Enterprise Services的应用程序中,由Enterprise Services 角色的成员关系来控制客户端访问包含于服务器组件的功能。这些角色和.NET角色不同,而且可以包含Windows组帐户或用户帐户。角色成员关系是在COM+目录中定义的,而且通过组件服务(Component Service)工具管理。

2.3 SQL Server授权
SQL Server支持精确授权,这些权限可以应用于单独的数据库对象。权限既可以基于角色成员关系,也可以授予单独的Windows用户帐户或组帐户。

3. 选择授权策略
ASP.NET应用程序有两种基本的权限策略:基于角色的授权和基于资源的授权。
3.1 基于角色的授权
对操作的访问通过调用者的角色成员关系,提供安全保护。角色可以将应用程序的用户群划分为具有相同安全权限的用户组。用户被映射到角色,而且如果某个用户被授权执行所请求的操作,则应用程序可以用固定的标识来访问资源。这些标识被各自的资源管理器(如数据库和文件系统)所信任。

3.23.2 基于资源
单独的资源使用Windows ACL来提供安全保护。应用程序在访问资源之前模拟(impersonate)调用者,这样可以使操作系统执行标准的访问检查。所有对资源的访问都是使用原始调用者的安全上下文。这种模拟方式在应用程序的中间层连接池不能被有效使用,因而影响了应用程序的可伸缩性。

4. 角色的授权的模式
在大多数可伸缩性至关重要的.NET WEB应用程序,使用基于角色的授权方式是最佳选择。常用的模式如下:

在前端Web应用程序中对用户进行验证
将用户映射到角色
根据角色成员关系来授权对操作(不是直接对资源)的访问
使用固定的服务标识来访问必要的后端资源。
一个典型的具体实现步骤如下::
获取凭据信息
验证凭据信息
将用户添加到角色中
创建一个IPrincipal对象
将IPrincipal对象放置到当前的HTTP上下文中
根据用户标识/角色成员关系进行授权
实现的代码参见《ASP.NET应用程序的安全方案(一)-身份验证》。