了解模拟权限

时间:2016-09-28 13:05:57

标签: c# asp.net iis impersonation

我有一个使用Windows身份验证和模拟的ASP.NET Web应用程序。这是web.config的相关部分:

<authentication mode="Windows"/>
<identity impersonate="true"/>

现在,应用程序代码尝试访问经过身份验证的用户有权访问的文件(XDocument.Load)。这个工作得很好直到今天我们开始得到以下异常:

System.UnauthorizedAccessException: Access to the path '...' is denied.

(显然,管理员告诉我&#34;服务器上没有任何变化&#34;。)

我能够修复&#34;通过向文件授予应用程序池标识权限的问题。但是,我不明白为什么解决了这个问题。

我的问题:如果使用模拟,为什么应用程序池标识仍然需要访问所使用的文件?模拟用户和应用程序池标识都需要访问吗?或者只有应用程序池标识?如果是后者,那么冒充点是什么?

1 个答案:

答案 0 :(得分:1)

  

网站使用w3wp.exe工作进程访问磁盘,   这本质上是应用程序池。为此设置的标识   在某些情况下使用应用程序池(例如IIS Apppool \ Site001)   磁盘。

     

使用Windows身份验证时,应用程序池标识(例如,   IIS Apppool \ Site001)用于某些访问,但Windows帐户   (例如,User1)用于其他访问。这取决于模仿   您正在使用的应用程序或框架的设置。   因此,您通常需要授予对应用程序的访问权限   池标识,以及每个Windows帐户(例如User1,User2,User99)   需要访问您的网站。

这里有一些来自Scott Forsyth Article的引用。如果我理解你的话,这篇文章应该有所帮助。