| 设计分布式应用程序的身份验证是一项具有挑战性的任务。在应用程序开发的早期阶段,进行适当的身份验证设计有助于降低许多安全风险。
 1、各种身份机制的比较 
 
    
        
            | 
               
             | 
            
             用户是否需要在服务器中拥有windows帐户 
             | 
            
             是否支持委托 
             | 
            
             是否需要windows 2k客户端和服务器 
             | 
            
             凭据是否明文传输 
             | 
            
             是否支持非IE浏览器 
             | 
         
        
            | 
             基本身份验证 
             | 
            
             是 
             | 
            
             是 
             | 
            
             否 
             | 
            
             是 
             | 
            
             是 
             | 
         
        
            | 
             简要身份验证 
             | 
            
             是 
             | 
            
             否 
             | 
            
             是 
             | 
            
             否 
             | 
            
             否 
             | 
         
        
            | 
             证书身份验证 
             | 
            
             否 
             | 
            
             是 
             | 
            
             否 
             | 
            
             否 
             | 
            
             是 
             | 
         
        
            | 
             Forms身份验证 
             | 
            
             否 
             | 
            
             是 
             | 
            
             否 
             | 
            
             是 
             | 
            
             是 
             | 
         
        
            | 
             Passport身份验证 
             | 
            
             否 
             | 
            
             是 
             | 
            
             否 
             | 
            
             否 
             | 
            
             是 
             | 
         
    
 
2、选择身份验证机制需要考虑的因素
l标识 
只有当应用程序的用户具有的windows帐户可以通过一个受信任的权威机构(它可以被应用程序web服务器访问)来进行验证时,使用windows身份验证机制才是合适的。 
l凭据管理 
windows身份验证的一个关键优势在于它可以使用操作系统进行凭据管理。当使用非windows身份验证方式,例如窗体身份验证时,它必须仔细考虑在何处以及如何保存用户凭据。其中最常用的方式是使用sqlserver数据库或使用位于ActiveDirectory中的User对象。 
l标识流动 
是否需要实现一个模拟/委托模型,并将原始调用者的安全上下文在操作系统级进行跨层流动-例如,以便支持审核或针对每个用户的精细授权。 
l浏览器类型 
应用程序的所有用户是否都拥有IE浏览器?或是你是否需要支持一个具有混合型浏览器的用户群?我们选择身份验证时需要根据各种方式的特点,综合考虑以上因素。 
五、基于Forms身份验证模式的实现方法 
使用Forms身份验证比较简单,下面通过一个实例来说明Forms身份验证的实现方法。这里假设整个网站都需要登陆才能访问,而且需要有注册页面 
1、站点根目录下,配置web.config,使用Forms身份验证 
将元素设置为: 
注解: 
(1)mode='Forms',身份验证为Forms模式 
(2)name='MyAppFormAuth',用于身份验证的Cookie的名字 
(3)loginUrl='login.aspx',身份验证时用户登陆的url 
(4)protection='All'指定应用程序同时使用数据验证和加密方法来保护Cookie。 
(5)timeout='20'指定Cookie过期的时间为20分钟。 
2、在站点根目录下建立登陆界面login.aspx,关键代码如下: 
protecedvoidCmdLogin_Click(objectsender,EventArgse) 
{ 
//为了讲解方便,省略数据库查询过程,直接判断。 
If(UserName.Text==”dl”&&Userpwd.Text==”123”) 
{ 
FormsAuthentication.RedirectFromLoginPage(UserName,chkPersist.Checked); 
} 
else 
{ 
Info.Text=”口令错误,请重新输入。”; 
} 
} 
注解: 
(1)UserName:输入用户名的文本框 
(2)Userpwd:输入密码的文本框 
(3)ChkPersist:是否记录口令的复选按钮 
六、总结 
本文介绍了Web应用程序开发中对注册用户进行身份验证的功能,ASP.NET2.0提供了多种实现方法,要根据应用程序的使用对象来选择适合自己的方法。Forms身份验证是Web应用程序中最常用的方式,也是比较简单的方式。 
参考文献 
1 孟宪会 张慧研 《ASP.NET2.0应用开发技术》人民邮电出版社 2006 
2 陈甫贞.陈俊荣 《ASP.NET程序设计》中国铁道出版社 2004 
3 张树亮 李超 《ASP.NET2.0+SQL SERVER网络应用系统开发案例精解》 清华大学出版社 2006  2/2   首页 上一页 1 2  |