我有一个经典 ASP 网站,正在尝试使用匿名身份验证进行设置。以下是我当前的设置:
- 应用程序池标识:NetworkService
- 匿名身份验证用户:IUSR
IUSR
为帐户和NETWORK SERVICE
站点目录上的帐户分配读取和执行权限允许匿名访问。但是,出于某种原因NETWORK SERVICE
,可以分配权限IIS_IUSRS
并实现相同的效果。考虑到应用程序池是在选择的 NetworkService 标识而不是 ApplicationPoolIdentity 标识下运行的,这对我来说似乎很奇怪。使用net localgroup IIS_IUSRS
表明它不是计算机上组NETWORK SERVICE
的成员。IIS_IUSRS
那么为什么要分配权限来IIS_IUSRS
访问该NETWORK SERVICE
帐户呢?
我认为可能存在一些奇怪的后备逻辑,如果无法通过 进行身份验证NETWORK SERVICE
,它会尝试使用应用程序池的虚拟帐户,但运行 Process Monitor 发现 w3wp.exe 进程已成功通过 身份验证NT Authority\NETWORK SERVICE
。有什么想法吗?
如果有帮助的话,以下是一些服务器信息:
- 操作系统:Windows Server 2008 R2 标准版 Service Pack 1
- IIS:7.5.7600.16385
- 应用程序池:.NET Framework v2.0、经典托管管道、网络服务标识
答案1
任何运行 IIS 应用程序池的帐户都会IIS_IUSRS
在运行时自动添加到该组中。
或者更正确地说,该组的安全令牌IIS_IUSRS
被添加到运行任何应用程序池的进程的安全令牌中。
查看该 IIS_IUSRS
组的静态成员资格会让您对正在发生的事情产生错误的认识。
如果您查看进程资源管理器中的“安全”选项卡,您应该会看到BUILTIN\IIS_IUSRS
该进程的其中一个组w3wp.exe
。