SQL Server 集成身份验证模式

Posted

技术标签:

【中文标题】SQL Server 集成身份验证模式【英文标题】:SQL Server Integrated Authentication Mode 【发布时间】:2011-04-26 05:05:21 【问题描述】:

我想知道何时在来自 Web 应用程序的连接字符串中使用 Windows 身份验证模式。应用程序本身使用 Windows 身份验证进行授权。将使用哪个帐户登录 SQL Server。

不是web应用池帐号吗? 使用 Windows 身份验证登录到 Web 应用程序的用户帐户? 还有其他帐号吗?

应用程序在 Win Ser 2008 64 位和 IIS 7 下运行。应用程序池帐户是网络服务。

【问题讨论】:

“集成”模式?!我只知道 Windows、SQL Server 登录和混合模式(支持 Windows auth 和 SQL Server 登录)。 它将是运行 ASP.NET 代码的帐户 - 例如应用程序池的帐户(例如 ASPNETIUSR_(machinename) @OMG Ponies:如果您曾经使用过 SqlConnection.ConnectionString,您就会知道“Integrated Security”是允许您指定连接模式的关键字之一。在您的评论中,您指的是 Sql Server 身份验证模式。 OP指的是连接模式,这些是不同的东西。是的,“Integrated Security = true”表示 Windows 身份验证模式。 @zesperi:标题和标签只写着“SQL Server”;) @user724779:您的 Web 应用程序在哪个 Web 服务器/版本下运行? 【参考方案1】:

这取决于您如何配置它。来自http://msdn.microsoft.com/en-us/library/ms998292.aspx 和http://msdn.microsoft.com/en-us/library/bsz5788z.aspx ...

默认情况下,ASP.NET 应用程序不模拟。因此,当他们使用 Windows 身份验证连接到 SQL Server 时,他们使用 Web 应用程序的进程标识。使用这种方法,您的前端 Web 应用程序对其用户进行身份验证和授权,然后使用受信任的身份访问数据库。数据库信任应用程序的身份并信任应用程序正确地验证和授权调用者。这种方法称为可信子系统模型。

称为模拟/委托模型的替代模型使用原始调用者的 Windows 身份来访问数据库。此方法要求将您的 ASP.NET 应用程序配置为使用模拟。请参阅本文档中的“模拟/委托与可信子系统”部分。

因此,根据您的配置方式,它可以使用应用程序池帐户(不使用模拟时不使用)或使用 Web 应用程序的登录用户帐户(使用模拟时)。

请参阅http://msdn.microsoft.com/en-us/library/134ec8tc.aspx 以获取假冒信息。

【讨论】:

【参考方案2】:

如果您在连接字符串中指定了集成安全性,则连接到数据库的是应用程序池用户。

【讨论】:

【参考方案3】:

我遇到的问题是我在 SQL Server 中的应用程序池帐户需要设置为 db_owner 角色才能正常工作。我花了很长时间试图弄清楚这一点。

我在同一台计算机上使用 Windows 身份验证、Windows 7 家庭高级版和 IIS。我发布这个以防其他人遇到类似的问题。我用的书没有说要使用 db_owner 而是使用 reader 和 writer 帐户。

【讨论】:

以上是关于SQL Server 集成身份验证模式的主要内容,如果未能解决你的问题,请参考以下文章

如何采用SQL Server身份验证登录

Web 服务器到 SQL Server 集成身份验证

SQL Server 集成安全性(Windows 身份验证)

与 IIS、Firefox 和 SQL Server 集成的 Windows 身份验证

如何使用 WindowsIdentity 和 SQL Server 集成安全设置表单身份验证

为啥sql server身份验证失败