【问题标题】:IIS with a Web Application using Windows Authentication with ImpersonationIIS 和 Web 应用程序使用 Windows 身份验证和模拟
【发布时间】:2013-11-13 02:43:48
【问题描述】:

我没有使用这个,但这是一个有趣的问题。 如果我在 IIS 上设置 Web 应用程序以使用 Windows 身份验证并模拟经过身份验证的用户,并且我的 ConnectionString 到 SQLServer 数据库使用Integrated Security=true;,我的应用程序在尝试连接到数据库时将使用应用程序验证的用户?

如果是,这是一件好事吗? (该数据库具有 LDAP/AD“域用户”权限。考虑到一个可审计的数据库,每个用户都会记录您的操作。)

【问题讨论】:

    标签: asp.net sql-server iis windows-authentication impersonation


    【解决方案1】:

    是的,它将使用经过身份验证的用户并模拟“经过身份验证的用户”权限来访问数据库。 有关更多信息,请查看此链接How To: Use Impersonation and Delegation in ASP.NET 2.0

    【讨论】:

      【解决方案2】:

      另一种方法是使用服务帐户,即对数据库具有完全访问权限的非交互式 Windows 域帐户。

      这允许连接池 例如,消除复杂的权限模型,以允许选定的用户对一组数据执行删除。

      这确实意味着必须将审计逻辑添加到应用程序的数据层和访问数据库的存储过程中,以确保调用用户被记录为数据库访问的一部分,否则服务帐户将是审计表中的唯一帐户。

      【讨论】:

        【解决方案3】:

        我相信 E.K. 的回答只有在使用 kerberos 身份验证的情况下才是正确的。您所描述的被称为“双跳”。本质上,如果用户向“服务器-A”进行身份验证,则在“服务器-A”上运行的代码无法转身并使用这些凭据访问其他网络资源,例如“服务器-B”上的 SQL Server。这很详细,但这里有一个直接链接:Blog Article

        如果您在 kerberos 架构的网络上运行,那么您可以将服务器标记为受信任的委托服务器。但对大多数人来说,情况并非如此。如果您想了解有关如何执行此操作的更多信息,请参阅this link

        【讨论】:

          【解决方案4】:

          是的,与 SQL Server 的连接将在这些用户下。

          总的来说,这并不好。但这取决于情况。以下是需要考虑的主要因素:

          1. 每个用户都需要自己的连接。即使使用了连接池,也不能重用来自不同用户的连接。创建连接是相对昂贵的操作。而且每个连接都需要一点内存
          2. 每个用户都需要登录(或至少该用户所属的 Windows 组需要登录)。这可能是创建登录等的额外维护。另一方面,可以以不同的方式保护每个此类登录。重要的是,如果使用单个帐户连接到 SQL Server,也可以为不同用户保护对象

          【讨论】:

            猜你喜欢
            • 2011-05-07
            • 2010-12-18
            • 2015-01-16
            • 1970-01-01
            • 2011-08-14
            • 1970-01-01
            • 2014-02-05
            • 1970-01-01
            • 2014-03-01
            相关资源
            最近更新 更多