我的应用用户访问文件系统的用户是什么?

时间:2012-11-04 23:47:41

标签: asp.net security iis

我有一个应用程序在尝试从文件系统中读取时出现System.UnauthorizedAccessException错误。

我查看了应用程序池,我发现它正在使用Network Service来识别它。 IIS应用程序允许使用现有帐户进行匿名身份验证,我们可以将其称为IUSR-MYSERVER。它还启用了Integrated Windows authentication

如果我转到相关文件夹并添加具有读取+执行权限的Everyone,则错误消失。但是,如果我使用相同的权限添加IUSR-MYSERVERNETWORK SERVICE,我仍然会收到相同的错误。

当我在事件日志中查看错误的条目时,其用户为N/A

我的应用程序尝试访问文件系统的用户是什么?我认为使用Everyone会很糟糕吗?

1 个答案:

答案 0 :(得分:0)

如果Web应用程序使用模拟,则当前登录的用户(或匿名用户的IUSR)将访问该文件 - 使用集成Windows身份验证和IE将导致单点登录,因此打开浏览器的用户将是访问该文件。

如果未使用模拟,则使用应用程序池标识。

要确定代码中当前登录的用户,请使用System.Threading.Thread.CurrentPrincipal.Identity.Name - 但请注意,这并不代表访问该文件的帐户。

要确定执行代码的实际身份,请使用System.Security.Principal.WindowsIdentity.GetCurrent().Name