【问题标题】:Run ASP.NET MVC app as a specific user以特定用户身份运行 ASP.NET MVC 应用程序
【发布时间】:2012-02-09 18:35:19
【问题描述】:

我有一个 ASP.NET MVC 应用程序,它需要访问另一台机器上的文件资源,因此我共享了相关目录并授予了新的域用户对其的访问权限。我的问题是:如何让我的 ASP.NET MVC 应用程序采用这个新用户的身份?调试和部署时是否必须单独设置?

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc windowsdomainaccount


    【解决方案1】:
    <identity impersonate="true"
              userName="domain\user" 
              password="password" />
    

    在您的 web.config 中应该可以工作。另一种选择(不推荐)是以具有正确凭据的用户身份运行您的应用程序池。

    【讨论】:

    • 为什么说不建议以用户身份运行应用程序池?我会说这对安全实践会更好,因为任何有权访问源代码的人都无法使用此用户帐户的用户名/密码。
    • 我继续并将其添加到我的 web.config 下的 system.web,但对 WindowsIdentity.GetCurrent().Name 的调用仍然作为我的本地用户帐户出现,至少在通过调试器。
    • 我说不推荐,因为这意味着如果您必须将应用程序移动到另一台服务器,将会有额外的配置。就安全方面而言,我同意使用应用程序池会混淆凭据,但在大多数情况下,如果在开发人员之间共享,您会专门为您需要做的事情创建一个用户,这将使他们更容易排除故障。无论哪种方式都是完全合法的,但在大多数情况下,我更喜欢使用 web.config 方法。
    • 如果你通过 cassini 网络服务器运行,我不确定它是否能正确模拟
    【解决方案2】:

    MVC 仍然使用 ASP.NET 身份验证,因此您只需要使用:

    <identity impersonate="true"/>
    

    web.config

    【讨论】:

    • 除非应用程序的所有用户都可以访问该目录,否则这不会发生。 OP 已设置服务帐号。
    【解决方案3】:

    您是否在 IIS 中运行您的 MVC 应用程序?如果是,则将此用户设置为应用程序池标识。如果没有,您可以在 web.config 中使用模拟

    http://msdn.microsoft.com/en-us/library/xh507fc5(v=vs.100).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 2017-12-25
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多