使用自定义应用程序池身份进行数据库登录时出错

Posted

技术标签:

【中文标题】使用自定义应用程序池身份进行数据库登录时出错【英文标题】:Error using custom app-pool identity for database login 【发布时间】:2014-07-20 15:15:46 【问题描述】:

我是 IIS 和 MS SQL Server 的新手(来自 Apache mysql 环境),所以希望我能提供足够的详细信息让你们帮助我!

我正在转换我的 Web 应用程序,使其在 web.config 的连接字符串中使用硬编码的数据库凭据(当前为 SA :/)。

我删除了用户名和密码并输入了“Integrated Security=SSPI”。该网站配置了一个专用的应用程序池,并且该应用程序池标识设置为我希望它使用的域帐户。当我尝试使用网络应用程序时出现错误。当我查看 SQL Server 日志时,我看到“用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败。原因:找不到与提供的名称匹配的登录名。

关于我做错了什么有什么想法吗?

【问题讨论】:

我自己不是 IIS 专家,但很明显,您的网站/Web 应用程序正试图通过 NT AUTHORITY\ANONYMOUS LOGON 匿名连接到 SQL Server。您可以将该登录名添加到 SQL Server,但 it's probably a very bad idea。我会回到你的 web.config 中的 SQL 身份验证。只是不要使用sa(或任何其他具有系统管理员权限的登录)。 @user3858056,您最好避免使用 sa 帐户进行日常数据访问。此外,Windows 身份验证更安全,应尽可能使用。 【参考方案1】:

将以下元素添加(或修改)到您的 web.config 的 system.web 部分。

<identity impersonate="true" />

见http://msdn.microsoft.com/en-us/library/vstudio/134ec8tc(v=vs.100).aspx

【讨论】:

我们已经有了它和 system.web 部分,但它仍在使用匿名。 数据库和web服务器是否在同一个域,账号也在同一个域? 我必须将其设置为 False。否则它仍然通过匿名。一旦我将其设置为 false,它就会传递为应用程序池中的身份设置的凭据。

以上是关于使用自定义应用程序池身份进行数据库登录时出错的主要内容,如果未能解决你的问题,请参考以下文章

.Net Crystal Reports 13 可以使用应用程序池身份登录 SQL Server 吗?

Firebase 使用电话号码对现有的自定义登录流程进行身份验证

Azure 应用服务:自定义身份验证和社交提供程序

在服务器端 Blazor 项目中搭建标识时出错

通过使用 AngularJS 的自定义登录进行 Spring Security 身份验证

使用 Spring Boot 使用 OpenID 提供程序对 Web 应用程序进行身份验证时出错