【问题标题】:Impersonate in Classic ASP在经典 ASP 中模拟
【发布时间】:2011-06-27 09:11:37
【问题描述】:

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

Microsoft VBScript runtime error Error '800a0046 ' 

Permission denied

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

从 SysInternal 放置实用程序 procmon。它表明在这两种情况下都是对资源的呼吁,在两种情况下都是模仿,都一样,但在一种情况下,成功,另一种情况下拒绝访问。

这个应用程序的整个安全系统是基于NTFS的权限,所以你不能禁用模拟。

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

【问题讨论】:

    标签: iis asp-classic impersonation access-denied


    【解决方案1】:

    Classic ASP 不在应用程序池帐户下运行,而是使用 IIS 匿名身份验证选项卡中提供的凭据,通常是 IUSR_MACHINENAME。

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

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

    更新 2: 这也可以帮助您诊断 IIS 端发生了什么:Authentication and Access Control Diagnostics

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

    【讨论】:

    • 为什么 Windows 身份验证在 LAN 中不起作用?在这两种情况下,我都使用域帐户进行访问。
    • @GraDea 因为当您访问http://localhost 时,IE 将您的 Windows 凭据传递给 IIS 是安全的,因为 IE 知道这是您的本地计算机。但是在访问http://web2 时这是不安全的,因为 IE 必须假定这是一个 Internet 服务器,因此将您的 Windows 凭据传递给服务器是不安全
    • @GraDea 可以将 IE 配置为在访问 http://web2 时传递您的 Windows 凭据,但我强烈建议您不要这样做,因为它是严重的安全风险
    • 我在 Fiddler 中查看标题。在这两种情况下我都有授权标头。
    • 新事实。我们调查我们的问题。我们在新的 Web 服务器上添加了域控制器的角色(旧服务器是域控制器)。之后一切都很好。
    【解决方案2】:

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

    截图:

    【讨论】:

    • 谢谢!但我无法检查该设置。我想我们尝试了 apppool 身份。
    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2011-01-12
    • 2021-10-11
    • 2012-01-24
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多