我有一个经典的ASP/VBScript网站(登陆页面- default.asp),它将网站用户访问(LOGON_USER)活动通过Scripting.FileSystemObject写入一个简单的txt文件。
VBScript创建一个FSO来打开/创建文件夹“日志”下的一个新文件
IIS 7.5 -
用于日志文件夹的
这个设置产生了一个'800A0046 -许可被拒绝‘。请注意,windows身份验证已启用。我将LOGON_USER值映射到DB中的一个值,以允许用户访问我的网站。AppPool设置为NT \NetworkService。虽然应用程序标识被设置为NetworkService,但在用户声明之后,文件将通过经过身份验证的用户进行访问(模拟)。下面的样本过程监控活动。
现在,这使我不得不进入“logs”文件夹的安全属性,并授予每个允许的用户读/写权限。我要寻找的是,由于我的应用程序池以NetworkService的形式运行(NetworkService完全控制日志文件夹),所以我希望通过网络服务访问日志文件夹,而不是通过windows身份验证验证用户。我知道这是使用Windows身份验证时的预期结果。但是,我使用windows自动登录只是为了验证用户是否被允许访问该网站。我需要所有其他网站活动使用NT授权\网络服务。(我要求提供一个解决方案,以停止经典ASP模拟经过身份验证的windows用户,而是使用appool标识-在我的情况下使用网络服务-来访问资源)
这要求太高了吗?请给我适当的解释。谢谢。
发布于 2011-11-30 23:02:06
是啊。典型的ASP模拟。您可能会发现StackOverflow在这方面的知识更多,因为我建议这是一个编程主题。
您想要的模型通常在ASP.Net模式和实践文档中被称为“受信任的子系统”模型(几年前)。
在过去,我使用ASP.net页面进行写作,通过WinHTTP从ASP页面调用;使用自己指定身份的COM对象是另一种选择。您可以(很容易)将页面转换为ASP.Net,只需在关闭模拟的情况下使用。然后是"call RevertToSelf()“选项,它忘记了线程标识;您可能还需要一个COM对象来处理线程,再次使用内存。
编辑:或者使用一个以不同身份运行的数据库;文件系统只有问题,因为它很容易使用!
另外,如果用户都写入同一个文件,那么当多个用户同时访问日志时,“写日志”方案是不可行的,而且它最多只会在该场景中引入延迟。
如果每个用户只需要写到他们自己的日志(并且希望他们在写的时候不要太快地刷新以避免并发问题),那么您可以简单地授予这些用户对该文件夹的写权限。没有Read,它就有点没用;如果不实际攻击这个盒子(它是Windows集成的,所以您在内部网上),那么他们很难不小心过度填充用户名和DoS机器。
发布于 2011-11-29 22:46:35
验证没有将executeinMTA设置为true。您可以在网站的asp设置中验证这一点。
https://serverfault.com/questions/335942
复制相似问题