我有一个经典的ASP / VBScript网站(login页面 – default.asp),通过Scripting.FileSystemObject将网站用户访问(LOGON_USER)活动写入一个简单的txt文件。
VBScript创build一个FSO打开/创build一个新的文件“日志”
Windows 2008 R2 64位环境
IIS 7.5 –
ACL日志文件夹
这个设置给我一个'800A0046 – 权限被拒绝'。 请注意,Windows身份validation已启用。 我将LOGON_USER值映射到数据库中的值,以允许用户访问我的网站。 AppPool被设置为NT Authority \ NetworkService。 虽然apppool身份设置为NetworkService,但是在用户validation之后,这些文件将通过已validation的用户(模拟的)进行访问。 下面的示例stream程监控活动。
进程监视器文件系统活动
现在,这使我必须去“日志”文件夹的安全属性,并授予每个允许的用户读/写权限的情况下。 我正在寻找的是,因为我的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这个。