ASP.NET2.0与IIS6.0Web应用中的安全设计和配置
授权
当用户的身份建立后,将作为系统安全的重要对象保存在请求的上下文中,可从HttpContext.Current.User中获得。这些对象可以用来做访问控制的依据。
ASP.NET提供两种内置的授权机制来控制URL访问层:文件授权和URL授权。这两种都在验证之后ASP.NET管道权限请求阶段进行,并检验请求访问的身份有无权限访问请求的网址。如果没有,将会返回“401未授权”的错误报告。
文件授权只在Windows验证已使用的情况下作用(当用户拥有系统身份时),它使用文件访问控制列表(ACLs)来决定请求的身份是否应该被授权。注意文件授权只在请求可以映射到文件且文件在本地计算机时才可用。如果实际文件处于共享状态,授权无效并且请求被允许。
文件授权可以被已验证拥有系统帐号且利用文件访问控制列表来控制资源访问的应用程序的用户使用。在用此授权时务必限制不能访问给定文件的任意用户的阅读权限。
URL授权使用基于配置的访问控制规则,参考用户名或角色来判断接受或拒绝访问。它是一般的首选授权机制因为它不依赖用户是否有系统帐号,可以配合任何验证机制来产生用户权限,并且提供了一种比文件访问控制列表更好的管理访问的策略。
URL授权访问控制规则详见<system.web><authorization>配置文件片断。授权机制严密管理这些规则并挑选最合适的规则来决定授予允许或拒绝的动作。以下配置为允许除匿名用户以外的所有已验证用户访问某一范围的URL:
你也可以选择利用用户名或角色来限定这些规则。在ASP.NET1.1中,你需要在验证后手动关联用户权限和角色表。在ASP.NET2.0中,你可以用System.Web.Security.RoleManager类来创建和管理角色并自动关联。你也可以利用位置标签在同一配置文件中未具体的URLs指定访问控制规则。<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
URL授权只对具体指定的用户授予允许权,而对其他的用户都授予否定权。最好的实施是对根目录给予更多的限制(拒绝每一用户或所有匿名用户),而对个别的URLs或较少访问的文件夹给予宽松限制。你需要在你的程序设计之前就考虑好授权请求并利用规则对相近权限分组来减少较多的个别配置,来降低出错的风险。
0
相关文章
