【发布时间】:2011-06-07 22:34:50
【问题描述】:
我试图强制我的 Web 应用程序以 AppPool 用户 (Domain\UserForApp) 的身份完全运行,并且我在 IIS 中正确设置了设置,一切运行正常,并且“System.Security.Principal.WindowsIdentity.GetCurrent().Name " 返回正确的 "Domain\UserForApp"。
但是,当我尝试将网络应用目录的权限限制为所需的基本权限时:
- 系统(完全访问)
- 我(完全访问)
- 管理员(完全访问)
- UserForApp(读取)
我无法再加载任何静态文件。因此,我下载了 Process Monitor 以找出原因以及每当它尝试访问静态文件时,都会出现以下错误:
ACCESS DENIED:
Desired Access: Generic Read
Disposition: Open
Options: Sequential Access, No Buffering
Attributes: RE
ShareMode: Read, Write, Delete
AllocationSize: n/a
Impersonating: NT AUTHORITY\IUSR
正如您从上面看到的,IUSR 没有权限,所以这是正确的,但我只是不明白为什么它仍然试图冒充。在我的 web.config 文件中,我有:
<location path="" overrideMode="Deny">
<system.web>
<identity impersonate="false" />
</system.web>
</location>
只是为了确保没有人打开模拟,但它没有效果。
它在经典模式和流水线模式下都不起作用,但错误略有不同。在经典模式中,当查看图像时,它只显示一个HTTP Error 401.3 - Unauthorized 页面,而在使用 Pipelined 时,它会重定向到登录站点。
【问题讨论】:
标签: iis-7 impersonation