日期:2009-12-04 浏览次数:20580 次
简介
ASP开发人员总是自己解决认证问题,但ASP.NET已经支持内置的认证功能。在本篇文章中,我们将介绍如何这二者在认证方面有什么变化,如何用很少的代码使用FormsAuthentication使用网站更安全。
在ASP编程中,无论是使用集成的安全协议(例如Windows NT LAN Manager [NTLM]的寻问/应答认证协议),基本的安全协议(指纯文本)还是自己创建的安全协议,其工作量都是十分惊人的。表格认证使开发人员能够在Web.config文件中存储用户名、口令等认证信息,当然,也可以使用你自己原来的方法,例如数据库、XML文件或文本文件。使用表格认证最大的好处是它可以使我们无需再通过编程实现状态跟踪,这一部分工作由ASP.NET代劳了。
表格认证使用cookies使应用程序在用户访问期间对用户进行跟踪,ASP.NET处理表格认证的方法与在ASP中使用的方式非常相似。当用户通过表格认证登录后,就会创建一个用来跟踪用户访问网站期间活动的cookie。如果用户请求一个安全的网页,但又没有登录,用户就会被引导到登录网页。一旦用户通过认证,就会被引导到原来请求的页面。
Web.config文件包含ASP.NET应用程序的所有配置设置,其理念是让许多开发人员共同控制Web应用程序,而不是由系统管理员一个人来控制。当然了,Web.config中有很多的选项,但今天我们只介绍与表格认证有关的选项。
属性 | 描述 |
名字: | 用于认证的cookie的名字。提示:如果多个应用要在同一台计算机上使用FormsAuthentication,最好使用不同的名字。 |
路径: | cookie的路径。缺省的“/”值能够避免路径中的大小写错误,因为在返回cookie上,浏览器是对大小写敏感的。 |
LoginUrl: | 未经认证的用户被引导到的URL。 |
保护: | 用来保护cookie数据的方法。缺省和建议的值是“All”,它会进行确认和加密。 |
Timeout: | cookie结束前的时间(以分钟计)。 |
属性 | 描述 |
口令格式: | 口令被存储的格式,可用的值包括Clear、SHA1和MD5。SHA1和MD5是使口令在Web.config文件中存储更安全的哈希算法。 |
用户: | 用于存储用户名和口令。我们可以通过运行HashPasswordForStoringInConfigFile函数对口令进行哈希处理,在后面我们会演示这种方法。 |
属性 | 描述 |
拒绝 | 允许: | 这一小节拒绝或允许用户访问站点。?代表匿名或未被认证的用户,*表示所有的用户。另外,它还能让我们向某一用户授予允许或拒绝其他用户访问的权限。 |
<configuration> <system.web> <customErrors mode="Off"/> <authentication mode="Forms"> <forms name="appNameAuth" path="/" loginUrl="login.aspx" protection="All" timeout="30"> <credentials passwordFormat="Clear"> <user name="jeff" password="test" /> <user name="mike" password="test" /> </credentials> </forms> </authentication> <authorization> <deny users="?" /> </authorization> </system.web> </configuration> |
在上面的Web.config中,我们配置了几个选项。
需要记住的是,如果在计算机上有多个应用,建议为每个cookie命名一个名字。
接下来,我们将path属性设置为应用的根目录,将loginUrl属性设置为本地机上一个名字为loginUrl.aspx的网页,当然我们也可以使用https://secured.sumnurv.com这样的URL,将protection属性设置为建议的“all”,这意味着cookie不但会被加密,还会被确认有效。
确认算法来自Machine.config中的machineKey元素,数据确认有助于确保cookie的数据在传输的过程中不会被篡改。
timeout属性指的是一个cookie终止、用户再次登录之前的以分钟计的时间。在credentials小节中,我们添加二个用户以