1 asp.net安全的基本操作
在ASP . NET应用程序的环境中安全的基本操作涉及三步即验证,授权和模拟。验证的过程中认证用户身份,允许或拒绝请求。这涉及到接受用户凭据(如用户名和密码)和凭证核对。经过身份验证,合法用户对资源的请求将得到满足。接下来一段时间,用户请求资源无需再进行身份验证,直到用户退出这个WEB应用程序。授权是给予用户访问特定资源的资格。模拟的过程,是使应用程序确认用户的身份,从而获得要求的其他资源。基于模拟的身份,请求资源将被授予或者拒绝。
2 ASP.NET的验证
验证是Web应用程序的安全一个重要的特征。在ASP.NET中,验证表现在两个层次上,[2 ]首先, Internet信息服务( IIS )将执行必要的验证,然后把用户请求发送到ASP.NET中,如图1所描述的。ASP.NET应用程序的Web服务器基本是IIS 。因此,每个ASP.NET应用程序可以继续利用IIS所提供的的安全性选项。当用户请求特定资源时,这一要求将发送到IIS 。 IIS验证用户的请求,然后把认证用户发送给ASP.NET工作进程。 ASP.NET工作进程将决定是否模拟验证IIS所提供的用户。如果Web.config文件中的模仿配置是启用的, ASP.NET工作进程将模拟验证使用者。否则, ASP.NET将自行验证用户身份。毕竟, ASP.NET决定用户是否有权访问这些资源。如果他们被允许,ASP.NET提供请求的服务; 否者他将一个“ 拒绝登入”的错误讯息传回给用户。
图1 IIS和ASP.NET的安全流程
ASP.NET通过几种认证机制提供了内置的用户身份验证, [1.4]它们是基于表单的身份验证,应用程序使用自定义身份验证模式的Cookie支持来确保安全;身份证书,应用程序使用微软的身份证书来身份验证,身份证书是微软开发的一个Web单点登录技术,还有视窗验证,Web应用程序使用从集成视窗身份验证中获得的用户名单来验证用户。
也有些应用程序不使用身份验证,或自行开发验证机制。在这种情况下, 可以把ASP. NET中身份验证模式设置为关闭。本文将简要地涉及基于表单的,身份证书和视窗认证。
2.1 基于表单的认证
基于表单的认证验证是用定制逻辑执行来验证用户,运用了Cookie而无需担心Session管理。这使开发人员获得更多的权限去指定哪些文件在网站上可获取和由何人获取,并可以识别的登录页。[3]这一机制将自动重定向未验证用户到登录页,并请他们提供适当的凭据(例如,用户名/密码组合)。如果登录成功,ASP.NET分配cookie给用户,并重定向到他们原先请求的特定资源。此Cookie允许用户反复访问特定资源,而不必重新执行登录机制。显示如下:
图 2表单认证流程
在上图中,首先用户请求资源。这一请求将先到达IIS,由IIS进行用户身份验证的。如果IIS启用匿名访问,或者用户已成功通过验证,IIS会将把请求转到ASP.NET应用程序。ASP.NET中查看是否有有效的身份验证cookie附加请求中。如果有,它意味着用户先前已通过验证。 ASP.NET将执行授权检查。如果用户有访问这些资源的权限,将被允许访问。否则返回登入失败的信息。如果提出的请求没有附带任何Cookie,ASP.NET将重定向用户登录页面,并要求用户进行身份验证。应用程序代码检查身份证书。如果身份验证通过,ASP.NET将以附加验证的形式返回Cookie。如果失败了,用户可以被重定向到登录页并告诉用户,该用户名/密码无效。
建立基于表单的认证
一般来说,建立基于表单的认证涉及4个步骤[2] :(一)启用匿名访问IIS(二)配置Web.config文件中的<authentication>(三)设定Web.config文件中的<authorization>(四)创建登录页。
(一)启用匿名访问IIS:
这有许多工作要做,因为大多数的用户被认定为非视窗用户,所以他们通过IIS进入ASP. NET ,ASP.NET将始终允许匿名访问登入页面。
(二)配置Web.config文件中的< authentication >
Web.config文件包含了一个Web应用程序的等级和身份验证服务的类型等相关信息。该表单验证通过设置Web应用程序的身份验证模式属性为表单来激活[3]:
正如上面的代码,name属性为HTTP cookie的名称。loginURL属性设置为登录页面。如需,这是该网页所使用的身份验证的用户凭据。如果用户没有通过验证,请求将重定向到特定网址loginURL。保护属性的有效值分为所有,无,加密和验证。Cookie保护设置为所有,这导致ASP.NET运行时不仅加密Cookie的内容,而且验证Cookie的内容。 [8]如果设置为无,它不使用任何加密或验证。指定加密将使用DES或DES加密算法加密Cookie;cookie中的数据验证不这样做,指定验证cookie的数据未作改动的,而不是加密Cookie的内容。超时设置为10 ,这意味着在10分钟后身份验证Cookie将过期。这样做的目的是减少通过验证Cookie偷窃别人的机会。通过减少时钟,cookie将被经常地再生。路径属性是指cookie被发送到用户端的路径。它被设置为“ / ”这意味着在Cookie路径是根目录。
(三)配置Web.config文件中的< authorization >
为ASP. NET Web应用程序添加授权服务。要做到这一点,添加Web.config文件中的< authorization >:
如上面所解释,在用户提供了有效的证书后,用户将被重定向到特定的网页。然而,授权在此代码中将拒绝除“Narcis”外所有用户的访问。
(四)创建登录页
这是重定向未经验证用户的最后一步,这样他们就可以提供其身份证书,通常是某种形式的用户名和密码,登录到受保护的资源的授权。在登录页,必须通过对比数据库来验证递交的身份证书。有效的用户名和密码可以存储在web. config的凭据(credentials)节:
然而,以明文形式存储密码是很不安全的。此外,在Web.config文件中存储数千个用户名和密码也是不现实的。[2 .7]为解决这个问题,用户名和密码都存储在数据库中,这个办法使Web. config文件不再有< credentials >一节。同时Login. Aspx页面也因为身份证书需比对用户名和密码存储在数据库中而发生一些改变。
2.2身份证书
如前所述,这个验证机制提供了一个集中的认证服务,可为会员提供特有的访问权。在下列情况下使用身份认证:[2](一)用户名/密码数据库或登入页不易维护;(二)希望提供个性化的内容;(三)该网站将与其他认证网站结合;(四)希望给用户特有的访问权。
创建身份证书
为了实施这一身份认证模式,必须在服务器上安装身份证书SDK (软件开发套件)和注册微软身份证书。[1,2]下面的代码设置Web. config文件的身份认证模式(authentication)设置为身份证书:
该身份证书的重导向地址(RedirectURL)属性设置为内部(internal),这意味着未经验证的请求能够得到相同的错误信息。redirectURL的属性还可以是除internal外的其他字符串,一般是URL,用来重定位未经验证的请求。
2.3 视窗认证
这种类型的身份认证可能是最简单的一种。视窗认证可与IIS提供的除匿名身份验证外的几乎所有的验证方法结合(如基本,摘要式,NTLM或Kerberos身份验证),[2,4]这里无需写任何代码来验证用户的IIS已经验证自己的Windows凭据。基本上,视窗认证使用IIS的身份验证功能。IIS将先完成它的验证功能,然后由ASP.NET决定是否给予授权或拒绝服务。
这种机制通常是在用户是Windows域和通过身份验证的用户时使用,代码执行在安全性与用户的Windows帐户相同的环境中。[4]当用户请求具体的资源,这一要求将前往IIS。IIS中对用户进行身份验证和发放安全令牌给它。然后,将通过认证的要求和安全令牌转发给ASP.NET中。如果模拟启用, ASP.NET模拟用户使用安全令牌重视,并在Web.config文件的“授权< authorization >”一节中的查看使用者是否被授权访问的资源。如果获得批准, ASP.NET将通过IIS发送用户所要求的资源,否则,它发出的错误讯息给使用者。
设置视窗认证
视窗认证的唯一的步骤是在Web.config文件中设置身份验证模式为Windows和拒绝存取匿名用户,如下所示:
模拟只有在代码是在相同的安全环境中的用户帐户才能启用。同样,这也要在做配置文件中完成。
2.4结束语
ASP.NET安全认证是Web应用程序安全的最主要特征之一。它分为三个不同的内置服务:基于表单的,身份认证和视窗认证。基于表单的认证和身份认证不要求用户为Windows用户。在视窗认证是为Windows域用户设计的。基于表单的认证提供了未经认证的用户登录页面,要求他们提供凭据,并将对这些证书进行验证。如果用户无权访问特定的资源,它将把拒绝存取信息返回到用户。在身份认证中,身份的SDK只是在服务器上安装和注册微软身份证书,提供了一个由Microsoft提供登入凭证的访问会员网站的简单的机制。视窗是最方便使用的,因为它不需要写任何代码进行验证。
参考文献:
[1] Bell ,J . , et al ,2001 ,ASP. NET Programmer’s Reference ,Wrox Press Ltd. ,USA.
[2] Chilakala ,V. ,2001 ,Microsoft ASP. NET Security ,Microsoft Support WebCasts.
[3] Gonzales ,J . ,2002 ,15 Seconds : Using Forms Authentication in ASP. NET Part 1
[4] Kercher ,J . ,2001 ,Authentication in ASP. NET : . NET, Security Guidance ,MSDN Magazine August 2001.
[5] Lassan ,R. ,Smith , E. ,2002 ,ASP. NET Bible ,Hungry ,Minds Inc. ,USA.
[6] Leinecker , R. , 2002 ,Using ASP. NET ,Que Corporation , Indiana.
[7] NET Framework Developer’s Guide : ASP. NET Web.Application Security ,Link.
[8] Kieley ,J . ,2001 ,Migrating to ASP. NET : Key Consid2eration ,MSDN Magazine November 2001.