ibcadmin 发表于 2012-12-6 13:50:42

ASP.NET安全机制(二)authentication,authorization

ASP.NET安全机制

请区分 authorization 和
authentication
ASP.NET安全机制主要分两个步骤:身份验证和权限控制。身份验证是对用户进行身份的识别,例如验证用户的用户名和密码,如果验证通过,则由权限控制决定用户是否有权限访问所请求的资源。这两个步骤在ASP.NET中主要是通过web.config配置文件中的两个配置节来实现的,分别是<authentication >和<authorization>。web.config中的常用配置节已经在上一章中已经介绍了,在本章中主要介绍<authentication >和<authorization>配置节。&sup2; <authentication >
<authentication >配置节可以配置ASP.NET中的身份验证信息,支持三种类型,分别是Windows身份验证、Forms验证、Passport身份验证,通过mode属性可以设置身份验证的类型。mode属性的几个可选设置如下:1. Windows:应用程序将身份验证的工作交给IIS来完成。2. Forms:由ASP.NET基于窗体进行身份验证。3. Passport:由Microsoft Passport Network身份验证,是微软的登录通行证。上述三种身份验证中Forms验证是三种验证方式中最灵活的一种,它可以选择将验证信息存储于Cookies或URL中,伴随着用户请求和页面在Web服务器和浏览器之间传递。也可以将验证信息存储在数据库中。<authentication>配置节包含一个子配置节<forms>,为基于窗体的自定义身份验证配置ASP.NET应用程序。<forms>配置节的主要属性如下表所示:
属性描述
defaultUrl指定身份验证后,重定向的URL
loginUrl指定如果找不到相应的身份验证,重定向的URL
timeout指定保存身份验证cookie的有效时间
name存储用户身份的cookie名称
表1<forms>配置节的主要属性代码演示: <authentication >

<configuration>
<system.web>
<authentication mode="Forms">
<forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
</forms>
</authentication>
 </system.web>
</configuration>
通过上述配置文件,当用户访问站点时,如果用户没有通过身份验证,将页面重定向到UserLogin.aspx页面。但是将上面代码保存到web.config后,目标页面还是可以不用登录就直接访问,原因是现在只进行了身份验证而没有做权限控制,没有权限就不能够对用户进行验证更没有办法利用cookie进行验证信息的存储,所以现在我们必须对用户进行适当的权限管理了。

&sup2; <authorization><authorization>配置节主要是对应用程序的授权,从而控制用户通过客户端对网站中资源的访问。<authorization>配置节主要包含两个子配置节:allow和deny。<allow>配置节:添加一个验证规则,该规则允许对资源进行访问。<deny>配置节:添加一个验证规则,该规则拒绝对资源的访问。<allow>配置节和<deny>配置节都包含两个属性:users和roles,分别从用户和角色两个方面进行权限验证。语法结构: <authorization><configuration>
<system.web>
<authorization>
<allow users="*">   ①
<deny users="?">   ②
</authorization>
 </system.web>
</configuration>语法解析:① *代表所有用户,验证规则是允许所有用户。② ?代码匿名用户,验证规则是拒绝匿名用户。
提示allow和deny元素的先后顺序非常重要,系统总是按照从前往后逐条匹配的方式,执行最先的匹配者
如果我们要添加一个验证规则,允许所有除匿名用户之外的所有用户访问,可以结合<authentication>配置节在发现用户被拒绝访问之后重定向到指定的URL,参考代码如下。代码演示: < authorization ><configuration>
<system.web>
<authentication mode="Forms">
<forms name="myForm" loginUrl="UserLogin.aspx" timeout="10">
</forms>
</authentication>
<authorization>
<deny users="?">
<deny roles="Guest">
<allow users="*">
</authorization>
 </system.web>
</configuration>
页: [1]
查看完整版本: ASP.NET安全机制(二)authentication,authorization