WindowsIdentity.GetCurrent()vs Request.LogonUserIdentity?

时间:2012-03-18 13:21:35

标签: asp.net iis impersonation application-pool applicationpoolidentity

我试图理解在这里分配权限之间的区别: enter image description here

VS

通过模仿分配:

enter image description here

1)我听说假冒用于访问资源而不是而不是正在运行 exe进程

我试图运行一个EXE流程,只对我的用户进行模拟, NO 成功。

稍后我将用户设置为应用程序池标识 - (第一张图片),然后我 能够运行exe文件。

  • 这两者之间的工作差异是什么?

  • 如果我只设置应用程序池标识(而不是模拟) - 它是否能够访问具有特殊权限的外部资源?

1 个答案:

答案 0 :(得分:2)

我认为您误解/混合了池标识模仿标识

的定义
  • 池标识是IIS用于启动Web应用程序的标识。因此,您的Web应用程序将拥有对该系统的所有访问权限。

E.g。如果将池标识设置为低权限用户,您将发现Web应用程序无法访问系统上的文件;但是,如果您将池标识设置为管理员,则您的Web应用程序可以访问系统上的所有内容,甚至可以重新启动计算机。 是的,您的安全性被搞砸了:P

  • 模拟身份是您的Web应用程序认为发出请求的身份。更具体地说,当您使用WindowsIdentity.GetCurrent获取当前用户身份时。如果您设置模拟,您将获得固定的用户身份。如果您禁用了模拟,则它将是用户的身份。 这在Windows域中通常很有用。

<强> PS:

嗯......这两个身份没有关系。所以你不应该把它们放在战斗中:)

让我们相遇尝试:游泳池身份就像您的父母一样。他们知道你是谁,你多大了,你不能说谎; 冒充身份就像你的身份证一样,如果你拿到假身份证,你可以去21岁以下的酒吧喝醉xD