【问题标题】:should I use impersonation in asp.net?我应该在 asp.net 中使用模拟吗?
【发布时间】:2013-03-17 19:04:04
【问题描述】:

我们组织的网络应用程序主要由拥有 Active Directory 帐户的用户在内部使用。目前,我们的每个应用程序都在其自己的 AD 帐户下运行。我们授予对数据库端应用程序 AD 帐户的访问权限以进行数据访问。

出于审计原因,我们的 DBA 想要摆脱这种情况。他希望来自应用程序的每个数据请求都带有登录用户的 AD 凭据,而不是应用程序的 AD 凭据。我知道这是使用模仿来完成的。这是推荐的做法吗?有什么好处和坏处?有更好的方法吗?

谢谢。

【问题讨论】:

    标签: asp.net sql-server database impersonation


    【解决方案1】:

    您将以下内容添加到您的 web.config:

    <configuration>
      <system.web>
        <identity impersonate="true"/>
      </system.web>
    </configuration>
    

    网络服务器将“模拟经过身份验证的用户”,您的 DBA 将看到用户的网络 ID。您还可以使用配置文件来模拟特定用户:

    <identity impersonate="true" userName="user" password="pwd" />
    

    但在这种情况下,这不是您的 DBA 想要的。

    是的,“模拟”可能听起来很奇怪,但这是在您的内部网络上验证 Web 应用程序用户的完美标准方式。您必须确保您的每个用户都具有必要的文件夹权限等,才能完成他们需要做的所有事情,因为 Web 服务器现在以他们的名义而不是以一般应用程序用户的名义做这些事情。当用户尝试做他们过去可以做的事情时,您会很快听到这些权限问题,并被拒绝访问。但是一旦他们每个人都获得了必要的权限,那就没问题了。

    【讨论】:

    • +1 - 我要补充一点,所有应用程序用户都应该放在一个应用程序组中,并且应该授予该组必要的权限(而不是单个用户)。
    • 是的,DBA 建议这样做是推出组策略。
    • 感谢@criticalfix 提供的信息。我以前从未遇到过这样的事情,所以我有点犹豫不决。
    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 2012-11-23
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多