我在 IIS 中运行 python CGI 脚本时遇到了一个非常奇怪的问题。
该脚本在自定义应用程序池中运行,该应用程序池使用域中的用户帐户作为身份。该站点已禁用模拟,并使用 Kerberos 进行身份验证。
“Domain Admins”
组成员时,一切都像魅力一样“Domain Admins”
,我在脚本的第一行收到错误消息:“import cgi”
。似乎导入最终会导致生成一个随机数,并且调用_urandom()
失败并带有“WindowsError: [Error 5] Access is denied”
.在网上搜索时,我发现_urandom
Windows 上的CryptGenRandom
功能是由操作系统中的功能支持的。不知何故,从 IIS 运行时,我的 python CGI 脚本似乎无权访问该函数,而在从命令提示符运行时,它可以访问该函数。
更复杂的是,当以运行应用程序池的帐户登录,然后从 Web 浏览器调用 CGI 脚本时,它会起作用。事实证明,我必须使用与应用程序池相同的用户登录才能使其工作。正如我之前所说,模拟被禁用,但不知何故,身份似乎以某种方式传递给 Windows 中的安全功能。
如果我修改random.py
调用_urandom()
函数的文件只返回一个固定数字,一切正常,但是我可能已经破坏了 python 中的很多安全功能。
那么有没有人经历过这样的事情?关于发生了什么的任何想法?