技术开发 频道

ASP.NET安全问题:ASP.NET安全架构

  然后我们可以利用我们的凭证,或者利用执行代码的预定义用户账户来设置所假冒的账户。
 
  假冒还允许我们在不使用ASP.NET提供的身份验证和授权功能的情况下提供身份验证和授权:我们可以利用用户账户和他们相关权限支持Windows和IIS管理身份验证和授权。
 
  假冒通常用于提供访问控制,比如授权,一个应用程序可以访问它所假冒的的用户可以访问的任何资源。例如,默认情况下,Domain/ASPNET用户不能对文件系统进行读写操作的,所以这个用户账户也无法在Enterprise Services中执行事务处理。但是利用假冒,用户就可以通过假冒一个特定的Windows账户完成这些事情,因为这个特定的账户有这个权限。因此,我们就可以保证一些用户可以对文件系统进行读写操作,而其他的一些用户仅仅执行读的操作。

  好了,上面讲了很多,我们现在就来小结一下,看看如何把身份验证,授权,假冒一起用于Web程序中。

  当用户首次访问Web站点时,他们是匿名用户,我们不知道他们的标识,除非对他们进行身份验证,否则我们以后还是不知道他们的标识。当用户请求非安全的资源时,他们可以自动的访问这个资源(这就是非安全资源的定义)

  当用户请求安全的受保护的资源时,就要如下步骤:
      
  1.请求被发送到 Web服务器,由于此时这个用户标识还有被确认,所以用户就被重定向到登录页面
  2.用户提供凭证,身份验证就对凭证进行验证和审核
  3.如果用户凭证合法,就可以访问资源,否则,就不能。

  当用户请求安全的资源,但是该资源有特定权限的用户才能访问,就会发生下面步骤:

  1.请求被发送到 Web服务器,由于此时这个用户标识还有被确认,所以用户就被重定向到登录页面
  2.用户提供凭证,身份验证就对凭证进行验证和审核
  3.把用户的凭证或者角色与被允许的用户或者角色进行比较,如果用户在列表中,那么他们就被准许访问这个资源,否则,拒绝。
 
  如果启用了假冒,那么在这两种情况下,假冒都会发生。默认情况下,假冒是禁止的,可以修改配置文件添加<identity>元素启用:

<configuration>
  
<system.web>
  
<identity impersonate="true" userName="Xiaoyang/User" password="xiaoyang"/>
  
</system.web>
</configuration>

  在<identity>中,把impersonate特性设置为true,拿userName和 password设为要假冒的用户账户。 如果假冒被启用,那么被审核的就是假冒的用户标识的凭证,而不是提交的凭证。这两种凭证有可能相同,需要注意的是:假冒是利用Web服务器中已有的用户访问,如IUser用户。

0
相关文章