IIS Asp.模拟用户官方的解释是:
如果要在非默认安全上下文中运行 ASP.NET 应用程序,请使用 ASP.NET 模拟身份验证。
如果您对某个 ASP.NET 应用程序启用了模拟,那么该应用程序可以运行在以下两种不同的上下文中:作为通过 IIS 身份验证的用户或作为您设置的任意帐户。例如,如果您使用的是匿名身份验证,并选择作为已通过身份验证的用户运行 ASP.NET 应用程序,那么该应用程序将在为匿名用户设置的帐户(通常为 IUSR)下运行。同样,如果您选择在任意帐户下运行应用程序,则它将运行在为该帐户设置的任意安全上下文中。
按照我的理解是这样的,当我们启用了ASP.NET 模拟身份验证,那么它将会覆盖其他的权限设置,程序在运行期间一直都是按照ASP.NET 模拟身份的权限进行。
下面我列举三种情况,说明这个问题:
1. 应用程序池标识:ApplicationPoolIdentity
ASP.NET模拟启用:选择已通过身份验证的用户
匿名身份验证:特定用户IUSR
这样应用程序期间都是按照IUSR的权限在运行,如果是一个具备较高的权限的用户,那么就是按照当前这个用户的权限运行程序。
2. 应用程序池标识:ApplicationPoolIdentity
ASP.NET模拟启用:特定用户
匿名身份验证:特定用户IUSR
这样应用程序期间都是按照特定用户的权限在运行。
3. 应用程序池标识:ApplicationPoolIdentity
ASP.NET模拟禁用
匿名身份验证:特定用户IUSR
这样应用程序期间都是按照各自设置的权限进行运行