技术开发 频道

ASP.NET2.0与IIS6.0Web应用中的安全设计和配置


验证

    IIS和ASP.NET一起提供了访问控制机制的基础,ASP.NET2.0进一步扩充了这一机制提供了迅速的应用程序块使你可以快速的配置这一机制。

    IIS验证机制的产生的是请求用户的系统身份。IIS提供以下内置验证类型:匿名验证、完整Windows验证、基本验证、分类验证、证书映射验证和微软通行证验证。图4阐明了不同验证的应用情况。

路径

 

 

描述

 

 

/Bin

 

 

包含应用程序组件. ASP.NET 1.1中也是封锁的.

 

 

/App_Code

 

 

包含可编译的应用程序代码.

 

 

/App_Data

 

 

包含应用程序数据文件.

 

 

/App_LocalResources

 

 

包含本地目录下的资源.

 

 

/App_GlobalResources

 

 

包含全球可应用的资源

 

 

/App_WebReferences

 

 

包含由可视化Web应用开发者开发的Web相关.

 

 

/App_Browsers

 

 

包含浏览器定义.

 

 

                                                                                    图4  验证方法
    企业内部网络应用程序将使用完整的系统验证他们的域名。或者,他们会使用通行证验证尽管证书验证是因特网领域常用的验证方式。因特网应用程序应该使用加密套接字协议层上的基本验证或者分类验证,如果用户拥有系统帐户的话;或者如果用户没有系统帐户时使用带有详细应用程序验证计划的匿名验证。

    如果匿名验证不可以访问网址,IIS将会检查该请求是否被验证或者是它拒绝了该请求。这是深层防御安全的应用程序的另外的IIS验证机制,如果不准备给匿名者访问的话可以彻底的拒绝所有未验证用户。

    ASP.NET支持三种类型的验证:Windows验证、窗体验证和通行证。Windows验证只是接受IIS验证得到的系统身份。窗体验证在基于验证应用程序层验证方案下执行,它被那些跟系统验证的帐户毫无关系的用户的ASP.NET应用程序使用。(窗体验证应该与匿名验证选择结合使用)。通行证验证使用微软通行证验证方案。这种针对每一应用程序的验证方案在<system.web><authentication>配置元素里有详细阐述,例如:
<configuration> <system.web> <authentication mode="Forms" /> </system.web> </configuration>
  使用窗体验证时,如果用户访问某个需要验证的资源被拒绝,程序将会跳转到登录页面。该页是应用程序开发者定制的ASP.NET页面,给用户提供了一个申请权限的通道。随后登录页面会使存储在自定义用户区的权限生效,比如存储在SQL数据库中的,并使用System.Web.FormsAuthentication类发布给客户端一个凭证。这个凭证可以是cookie变量是获得URL的特殊标志(这个开始于ASP.NET1.1的移动工具包和ASP.NET2.0)。

  在随后的请求中,客户端出示该凭证,窗体验证机制自动处理并为其生成一个用户身份。使用窗体验证,发布和管理验证凭证的复杂性由ASP.NET framework承担。然而你依然需要填写登录页面并和用户存储区执行关联。ASP.NET 2.0提供的两个附加组件简化了整个处理过程:成员服务和登录控制组。

  成员服务由System.Web.Security.Membership类来表现,它提供了很有用的生成、管理和确认用户权限的方法。同许多ASP.NET2.0特性一样,这种基于提取的设计使得服务能工作在多种后台数据存储的情况下,包括SQL Server和包括在ASP.NET framework下的ADO。安装你自己的数据库和利用aspnet_regsql.exe工具配置成员数据库到你的SQL Server或SQL Server Express一样容易,并配置SqlMembershipProvider-或者只是利用默认当你第一次访问时在你的应用程序的App_Data路径下自动创建SQL Server Express成员数据库。

  成员服务为普通用户管理功能提供支持,包括密码散列、帐户停用和登录跟踪。想得到更多关于成员服务可以到ASP.NET 2.0 (成员和角色管理 应用程序接口的使用 ),和MSDN®杂志中Dino Esposito 与Andrea Saltarello's的文章。

  ASP.NET2.0的登录控制使得登录页面的构造的核心变得十分简单,更进一步的,它提供了拖放控制,依靠成员和窗体验证的应用程序接口来验证用户权限的登录页面的工作会自动执行,并建立成功登录的凭证。登录控制提供灵活的功能,包括以普通成员提供者的身份工作、密码重置和确认普通用户权限。还有一系列控制支持,包括登录察看和新建用户控制,可以用来支持其他的用户管理接口(见登录控制的使用)。

  当使用窗体验证的自定义应用或者你自己的验证机制时,用安全套接层来保护你的登录页面和整个应用程序以防暴露登录权限和验证凭证(我将会在以后的文章中详细介绍验证凭证)。另外,你应该要求你的用户使用复杂的密码。成员服务允许利用正则表达式来加强密码的复杂性和格式。你要确保密码的杂乱无规律性(这是显而易见应该的),而且你也不要把权限资料保存在应用程序的<credentials>形式的片断文件中。
0
相关文章