冒充经典ASP

时间:2011-02-15 05:44:32

标签: iis asp-classic impersonation access-denied

准备在Windows 2003(web2)上使用Windows 2000(web1)迁移asp应用程序。 在旧服务器上有一个共享文件的文件夹,用于导入和导出(\ \ web1 \文件夹)。我想通过新服务器提供对相同文件夹访问asp-application的访问权限。 配置IIS:允许匿名访问,包括检查窗口。池在网络服务下启动。 但是没有访问权限。 并且有一个有趣的事实:如果使用新服务器本地处理为http://localhost,则您具有访问权限(模拟工作),如果处理为http://web2,则无权访问。错误:

Microsoft VBScript runtime error Error '800a0046 ' 

Permission denied

我们更改了安全设置,本地IE 6 - 通过http://web2获得,但在其他浏览器(如Opera)中不起作用。在其他机器上也不起作用。

从SysInternal中放入实用程序procmon。它表明,在这两种情况下都是对资源的吸引力,在两种情况下都是模仿,都是相同的,但在一种情况下,SUCCESS和其他ACCESS DENIED。

此应用程序的整个安全系统基于NTFS的权限,因此您无法禁用模拟。

我是经典的asp新手。我无法理解这种情况。

2 个答案:

答案 0 :(得分:6)

Classic ASP不在Application Pool帐户下运行,而是使用IIS Anonimous Authenctication选项卡中提供的凭据,通常是IUSR_MACHINENAME。

看起来匿名身份验证失败并且使用了Windows身份验证,这就是它在本地工作的原因,并且在IE中默认支持Windows身份验证。

更新:查看此文章:How to troubleshoot Kerberos-related issues in IIS

更新2:此外,这可以帮助您诊断IIS端发生的事情:Authentication and Access Control Diagnostics

我想访问共享的最简单方法是向Guest组添加读取权限。

答案 1 :(得分:1)

您可以将匿名身份验证的用户更改为应用程序池用户,我测试了它并且它可以工作! 去iis - >网站\虚拟目录 - >身份验证 - >选择匿名 - >编辑 - >将用户身份更改为应用程序池用户

截图:

screenshot