【问题标题】:Impersonation in Asp.net for Upload a file在 Asp.net 中模拟上传文件
【发布时间】:2012-07-24 18:27:09
【问题描述】:

请考虑这种情况:

我有一个托管在 IIS 7.0 后面的网站。几乎每个IIS 设置都是默认设置。我有一个用于上传文件的文件夹,ASP.Net 用户对其具有写入权限。当前IIS 经理取消了此写入权限,他想在Windows Server 中添加一个本地用户,该用户可以对该文件夹具有写入权限。现在我的问题是如何在 asp.net 中模拟用户以及这种方法是否安全?我希望所有请求都根据默认IIS 用户在服务器上执行,但我只想模拟上传文件。

谢谢

【问题讨论】:

    标签: c# asp.net security iis-7 impersonation


    【解决方案1】:

    您需要的是部分模拟。您不需要模拟所有请求,但只应模拟几个呼叫。我想你必须看看这篇文章。

    http://support.microsoft.com/kb/306158

    这就是它如何在登录用户的凭据下模拟一段代码,而其余的调用将使用默认的应用程序池身份进行处理

    System.Security.Principal.WindowsImpersonationContext impersonationContext;
    impersonationContext = 
        ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
    
    //Insert your code that runs under the security context of the authenticating user here.
    
    impersonationContext.Undo();
    

    【讨论】:

    • 谢谢,但我应该将用户名和密码发送到哪里?我的意思是我想使用其他用户进行模拟?
    • 在文章中有“在代码中模拟特定用户”部分。使用它,您可以传递自定义用户名和密码来模拟,然后您必须撤消该模拟。
    • 有没有不使用API调用的方法?
    • 那么在这种情况下,您将不得不部署另一个具有应用程序池标识的网站/Web 服务设置您想要的任何内容,然后在您的代码中调用该网站/Web 服务。
    • 本文中:msdn.microsoft.com/en-us/library/cc949004.aspx 部分中:How do I impersonate a specific (fixed) identity? 如何将经过身份验证的用户的登录令牌传递给WindowsIdentity
    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多