【问题标题】:How many Types of Users in ASP.NET/IIS(or Cassini or IIS Express) and thier actual Role?ASP.NET/IIS(或 Cassini 或 IIS Express)中有多少种用户类型及其实际角色?
【发布时间】:2012-12-06 14:00:11
【问题描述】:

我询问的是运行 ASP.NET/IIS(或 Cassini 或 IIS Express)应用程序的用户的帐户。我问的是默认值。那里有很多混乱。谷歌搜索显示了很多类型的用户,例如,

  • 我的计算机名\我的用户名,
  • IIS APPPOOL\ASP.NET v4 用户,
  • IIS_WPG,
  • IIS_IUSRS 用户,
  • 网络服务用户,
  • AspNet 用户,
  • IUSR_MachineName 用户,
  • IIS_IUSRS 用户,
  • IUSR 用户,
  • IIS_WPG 用户,
  • IWAM_computername 用户,
  • IIS APPPOOL\DefaultAppPool 用户。

这些很令人困惑。

【问题讨论】:

标签: asp.net iis iis-7 cassini


【解决方案1】:

Cassini 在启动 VS 的帐户下运行。所以默认是当前登录的 windows 用户,runas 将在特定用户帐户下运行。

IIS 上的应用程序使用应用程序池运行。这是默认站点的片段:

每个应用程序池都可以使用高级设置进行配置:

我还应该指出可能的模拟,其中上下文在模拟用户下运行。此用户可以由 IIS 或使用代码提供。以下是如何配置 IIS 模拟的示例(特定应用的身份验证选项卡):

希望这会有所帮助!

【讨论】:

  • 我询问了很多用户。其他人呢?
  • 不可能将所有这些用户映射到一个答案。只是对于一个示例 AspNet 用户,在特定环境中甚至不再存在......所以让我们这样说吧。了解 IIS 上的安全性如何工作更为重要,因为您可以在特定情况下使用这些用户中的任何一个,而不是同时使用所有这些用户。这也是为什么有这么多答案让人困惑的原因。
  • 对于 IIS 构建帐户,有一篇不错的文章 iis.net/learn/get-started/planning-for-security/…
【解决方案2】:

嗯,其中之一是根据您运行的 Windows 版本而有所不同。其次,您要询问 3 台不同的服务器。所以这可能是造成混乱的原因。

开发服务器

首先,最简单的一个:卡西尼。此服务器在与启动它的 Visual Studio 实例相同的帐户下运行,并具有相同的权限。通常,这只是您自己的 Windows 帐户。

IIS Express 使用与 IIS 完全相同的代码库,但它也将在您自己的 Windows 帐户下运行,即启动 Visual Studio(或 Web Matrix)的同一帐户。

IIS 6.0

现在适用于 IIS。在这里您可能会找到许多帐户。首先,您仍然可以在 Windows Server 2003 机器上找到的“旧”IIS 6.0 将使用以下帐户:

  • 网络服务IIS 6.0 及更高版本中应用程序池的默认和推荐工作进程标识
  • 本地服务访问权限非常有限
  • 本地系统用于在“IIS 5.0 隔离模式”下运行的工作进程,管理员成员并具有完全访问权限
  • IIS_WPG工作进程组的缩写,不是帐户,而是一个组,工作进程身份应该是该组的成员,以获得所需的最低权限
  • IUSR_ComputerName不用于工作进程,而是用于将匿名访问者映射到 Windows 帐户
  • IWAM_{ComputerName}对于 IIS 5.0 隔离模式,现在通常使用应用程序池进行隔离
  • ASPNET也适用于 IIS 5.0 隔离模式,它看起来像 ASP.NET 帐户,但在大多数情况下不是)李>

(此列表基于 TechNet 文章 IIS and Built-in Accounts (IIS 6.0)。)

IIS 7 及以上

对于 IIS 7,上面列出的其中一些不再相关,并且一些已被替换。由于这些帐户是 Windows 内置的,因此它们在任何地方都具有相同的 SSID,这可能会不时派上用场。

如果您将服务器从 Windows 2003 升级到 Windows 2008,或者如果您安装了 IIS 6.0 兼容性功能或更旧的 IIS 组件,您可能拥有旧的新的一台机器上的帐户。

  • IUSR(*替换IUSR_{ComputerName},因此默认用于映射匿名用户*)
  • IIS_IUSRS(*替换 IIS_WPG 组,因此不是帐户而是组*)

(本文基于Understanding Built-In User and Group Accounts in IIS 7的文章。)

AppPool 标识(自 IIS 7.0 起)

这个列表现在几乎完成了,但我们仍然需要了解一种特殊类型的帐户:“动态”AppPool 身份。这些不是机器上的实际帐户,例如其他帐户,例如您在 Windows 中找不到他们列为用户。但如果您选择 ApplicationPoolIdentity 选项,它们是为应用程序池动态创建的虚拟帐户。

如果您需要授予此类帐户访问文件或文件夹的权限,您仍然可以通过键入以下内容来搜索该帐户:IIS AppPool{DefaultAppPool}(将 {DefaultAppPool} 替换为您创建的应用程序池)。

(您可以在 iis.net 上的 Application Pool Identities 中阅读更多相关信息。)

当您安装 .NET 4.0 时,IIS 会添加一个新的应用程序池,以便能够与现有的 .NET 2.0 Web 应用程序一起运行新的 .NET 4.0 Web 应用程序。安装程序将此应用程序池命名为 ASP.NET v4.0,并使用选项 ApplicationPoolIdentity。因此,无论您是否使用它,都会为这个新的应用程序池创建一个动态帐户。

【讨论】:

  • 一件小事,我的 ASP.NET 应用程序代码在哪个帐户(默认情况下)在 IIS 6、7、7.5、Cassini 和 IIS Express 中运行。有时,我需要连接 SQL Server,有时我需要访问文件系统。两者使用同一个帐户吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 2017-09-19
  • 1970-01-01
相关资源
最近更新 更多