浅析ASP.NET授权模块


  本文标签:ASP.NET授权模块

  ASP.NET授权模块主要有两个:FileAuthorizationModule和UrlAuthorizationModule  。他们也实现了IHttpModule接口  。这些模块可以参照所试用的身份验证类型来决定到底采用哪个ASP.NET授权模块:

  如果试用的是Windows身份验证,那么在授权检查的时候就会使用FileAuthorizationModule;

  如果在web.config中提供了元素,那么就会采用UrlAuthorizationModule  。如下面的:

  

  1. <authorization> 
  2. <allow roles ="" users=""/> 
  3. <deny users=""/> 
  4. authorization> 

  
FileAuthorizationModule:

如果使用 Windows身份验证,就会采用FileAuthorizationModule模块  。这个模块可以处理Authorization事件,并且能够对IIS提供的请求的令牌和目标资源执行访问检查  。而且这也用到了系统的ACL(访问控制列表).

  例如,如果请求的资源是Default.aspx,当前的用户是xiaoyang,那么FileAuthorizationModule就会执行访问检查,看看xiaoyang时候具备访问Default.aspx的读的权限,如果在Windows的用户账户中有xiaoyang这个账户,并且具有访问的权限,那么请求成功,否则,FileAuthorizationModule就把Reponse.StatusCode设置为401(未授权),之后请求就结束了  。

UrlAuthorizationModule:

和上面的处理模块不一样,不管使用何种类型的身份验证,只要配置了web.config中的元素,就要使用UrlAuthorizationModule模块  。这个模块在处理的时候执行如下:

  (1)把中声明的用户名和HttpContext.User.Identity进行比较
(2)把声明的角色信息和HttpContext.User.IsInRole比较

  如果比较成功就可以访问相应的授权的资源,否则把Reponse.StatusCode设置为401(未授权),之后请求就结束了  。以上就是介绍ASP.NET授权模块