经典的ASP模拟| Windows身份validation| 文件访问被拒绝IIS 7

我有一个经典的ASP / VBScript网站(login页面 – default.asp),通过Scripting.FileSystemObject将网站用户访问(LOGON_USER)活动写入一个简单的txt文件。

VBScript创build一个FSO打开/创build一个新的文件“日志”

Windows 2008 R2 64位环境

IIS 7.5

  • 身份validation – 启用Windowsvalidation。 所有其他身份validation禁用
  • AppPool以经典PipeLine模式运行;
  • 启用32位应用程序设置为true;
  • 身份是networking服务。
  • 加载用户configuration文件设置为false
  • ASP:executeInMta设置为false

ACL日志文件夹

  • 用户组 – 读取和执行;
  • SYSTEM – 完全控制(inheritance);
  • pipe理员 – 完全控制(inheritance);
  • IIS_IUSRS – 完全控制;
  • networking服务 – 完全控制。

这个设置给我一个'800A0046 – 权限被拒绝'。 请注意,Windows身份validation已启用。 我将LOGON_USER值映射到数据库中的值,以允许用户访问我的网站。 AppPool被设置为NT Authority \ NetworkService。 虽然apppool身份设置为NetworkService,但是在用户validation之后,这些文件将通过已validation的用户(模拟的)进行访问。 下面的示例stream程监控活动。

进程监视器文件系统活动

  • default.asp – 所需的访问 – 成功 – 模拟:域名\用户名
  • 日志\ log3011.txt – 所需的访问 – 拒绝 – 模拟:域名\用户名

现在,这使我必须去“日志”文件夹的安全属性,并授予每个允许的用户读/写权限的情况下。 我正在寻找的是,因为我的apppool作为NetworkService运行(日志文件夹被给予完全控制NetworkService),我希望通过networking服务访问日志文件夹,而不是通过Windows身份validation的用户身份validation。 我知道这是使用Windows身份validation的预期结果。 不过,我使用Windows autnetication来validation用户是否被允许访问网站。 我需要所有其他网站actitivities使用NT Authority \ NetworkService。 (我想要一个解决scheme来阻止经典的ASP模仿windowsauthentication的用户,而是使用appool身份 – networking服务在我的情况 – 访问资源)

这个要求太过分了吗? 请给我适当的解释。 谢谢。

    对。 传统的ASP模拟。 不知道解决这个问题的方法,你可能会发现StackOverflow对此有更多的了解,因为我认为这是一个编程主题。

    您所需的模型通常在ASP.Net模式和实践文档(从几年前)被称为“可信子系统”模型。

    在过去,我使用了一个ASP.net页面进行编写,通过ASP页面通过WinHTTP调用; 使用具有自己的标识指定的COM对象是另一种select。 你可以(很容易)将页面转换为ASP.Net,并将其用于模拟closures。 然后有“调用RevertToSelf()”选项,它会忘记你的线程标识; 你可能还需要一个COM对象来为你的线程做这些事情。

    编辑:或使用作为不同身份运行的数据库; 文件系统的唯一问题,因为它很容易使用!

    而且,如果用户都写入同一个文件,那么当多个用户同时访问时,“写入日志”scheme是不可行的,而且最多只能在这种情况下引入延迟。

    如果每个用户只需要写入他们自己的日志(并且希望写入时不要过早刷新以避免并发问题),则可以简单地向这些用户授予写入权限。 没有阅读,这是有点无用; 而没有真正攻击这个盒子(这是Windows集成,所以你在一个内联网),他们会很难意外地过度用户名和拒绝机器。

    validation您是否将executeinMTA设置为true。 你在网站的asp设置中validation这个。