gpt4 book ai didi

c# - ASP.Net 模拟方法的差异

转载 作者:行者123 更新时间:2023-12-02 08:12:21 25 4
gpt4 key购买 nike

在此 MSDN article在“如何在 ASP.NET 应用程序中实现模拟”中,他们列出了 4 种不同的方法来更改用于执行 Web 请求的帐户。不幸的是,它没有描述这些替代方案之间的差异。

我正在尝试模拟 IIS 身份验证的用户,以从其本地计算机复制一些文件。当我使用 WIN32 api LogonUserA 并模拟特定用户时,它可以工作。但我需要 web 应用程序与许多用户一起工作(我没有可以访问每个人的文件的帐户)。

我认为简单地设置 Impersonate = "true"并配置 IIS 应该可以工作,但有些不同。当我检查 Environment.UserName 时,它​​似乎正在冒充正确的帐户,但我收到“访问被拒绝”错误。

有人知道这些模拟方法之间的区别吗?是否可以冒充IIS认证用户,然后用它进行一些文件操作?

更新:根据我收到的反馈,我需要更清楚地了解我所面临的问题。

环境设置:IIS:禁用匿名身份验证,启用集成 Windows 身份验证ASP.Net的web.config:身份验证模式=“windows”,impersonate=true,拒绝匿名用户

假设我以“userA”身份访问该页面:

场景 1:模拟 IIS 身份验证用户

try{
File.Copy(srcFile, destFile); // Access Denied even though userA has access to srcFile.
} catch(Exception ex) {
...
}

场景 2:使用 LogonUser 模拟 userA

try{
// Impersonater is a wrapper around the WIN32 LogonUser API
using(Impersonater imp = new Impersonator("domain", "userA", "pwd"))
{
File.Copy(srcFile, destFile); // Works
}
} catch(Exception ex) {
...
}

在这两种情况下,我都在冒充“userA”。

最佳答案

Q: Anyone know the difference between these impersonation methods?

答:首先了解 IIS 如何处理请求的一些背景知识。

有一个名为 IUSR_计算机名(IIS6 中的默认值)的特定系统用户,IIS 服务器使用它来处理文件访问。 IIS 服务器上运行着一个名为 Aspnet_wp.exe 的进程,该进程在名为 ASPNET 或 NetworkService 的帐户下运行。

因此,当向服务器发出请求时,IIS 会使用react,如果请求是针对 ASP.NET 应用程序,它会将请求传递给该进程。

这意味着如果 IIS 服务器设置为使用 IUSR_计算机名(匿名)访问方法。服务器将使用该帐户来处理请求,如果它发现它是 ASP.NET 应用程序,则会将请求传输到 ASP.NET 进程。

默认情况下模拟是禁用的,这意味着当 ASP.NET 进程处理请求时,请求将在 ASPNET 或 NetworkService 帐户下运行。

现在来看看模拟方法之间的区别:

  • 模拟 IIS 经过身份验证的帐户或用户
    使用 IIS 设置使用的帐户。通常是 IUSR_计算机名
    用法:<identity impersonate="true" />

  • 针对特定身份启用模拟
    使用指定的特定帐户。
    用法:<identity impersonate="true" userName="accountname" password="password" />

第三个选项是默认状态,即禁用模拟。

Q: Is it possible to impersonate the IIS authenticated user and then do some file operations with it?

答:取决于 IIS 身份验证用户的权限。如果该帐户具有操作文件的权限(Windows 中的 NTFS 权限),则答案是肯定的。

在这里阅读更多内容:

  1. IIS Authentication
  2. ASP.NET Authentication

关于c# - ASP.Net 模拟方法的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com