【问题标题】:What user is my app using to access the file system?我的应用程序使用什么用户来访问文件系统?
【发布时间】:2012-11-04 23:47:41
【问题描述】:

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

我查看了应用程序池,发现它使用Network Service 作为它的标识。 IIS 应用程序允许使用现有帐户进行匿名身份验证,我们称之为IUSR-MYSERVER。它还启用了Integrated Windows authentication

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

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

我的应用程序试图以什么用户身份访问文件系统?我认为只使用Everyone 会很糟糕?

【问题讨论】:

  • 您使用的是哪个版本的 IIS?
  • 使用IUSR我在我的web.config中添加了这一行:
  • @EmeraldCoder,有没有办法让我弄清楚它当前以哪个用户身份运行?
  • 如果你只是想知道什么用户在运行你可以看看这个帖子:stackoverflow.com/questions/275824/…

标签: asp.net security iis


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-01-23
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多