【问题标题】:Impersonation and Delegation in ASP.NETASP.NET 中的模拟和委托
【发布时间】:2010-10-05 19:03:42
【问题描述】:

我在使用 ASP.NET 访问远程服务器上的文本文件时遇到问题。 ASP.NET 1.1 应用程序在 Server 2003 上运行,使用模拟和请求者的 Windows 凭据。客户端、网络服务器和远程服务器都在同一个域中,用户有权访问文本文件。用户可以通过 UNC 共享从他们的机器上打开文本文件。当用户运行直接在服务器上登录的站点时,它工作正常。但是,当用户在他们的机器上尝试时,它不起作用。应如何设置模拟以使其正常工作?

编辑: 该应用程序的其他功能工作正常,它只是访问不起作用的远程文件。

【问题讨论】:

    标签: asp.net impersonation


    【解决方案1】:

    在 IIS 中,至少需要在应用程序文件夹上取消选中匿名和基本身份验证。您可能想要检查应用程序文件夹本身,而不仅仅是根文件夹。可能还有其他配置选项,但这是“唾手可得”的选项。

    【讨论】:

      【解决方案2】:

      作为测试,在模拟标记中指定用户名和密码,以强制应用程序始终模拟为您知道有权访问该文件的用户。

      如果应用程序现在可以访问文本文件,您就会知道这是将用户凭据传输到服务器。

      如果应用程序仍然无法访问文本文件,则不是凭据问题,而是服务器配置问题。

      【讨论】:

        【解决方案3】:

        听起来您遇到了多跳问题。使用集成身份验证时,您可以从浏览器向 IIS 进行身份验证。但是,您不能对域中的任何其他计算机进行身份验证。原因是使用标准凭据,他们无法验证您的身份。


        我熟悉两种主要的解决方法:
        1. 实施 Kerberos,这些证书允许您进行更高级的身份验证,并允许多个网络跃点。
        2. 使用 LogonUser win32 api 重新模拟您的用户(需要密码)。

        【讨论】:

        • 是的,默认 NTLM 派生凭据仅适用于一个机器到机器的跃点。如果提示不是问题,基本身份验证也可以是一个选项 - 您希望通过 SSL 执行此操作,并保护日志文件。
        • 谢谢,我在怀疑这样的事情。
        猜你喜欢
        • 2011-08-29
        • 2013-07-18
        • 2022-01-13
        • 1970-01-01
        • 2011-04-24
        • 2010-09-30
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        相关资源
        最近更新 更多