设计分布式应用程序的身份验证是一项具有挑战性的任务。在应用程序开发的早期阶段,进行适当的身份验证设计有助于降低许多安全风险。
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 |