使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?
Posted
技术标签:
【中文标题】使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?【英文标题】:Which account is used to authenticate ASP.net to SQL when using a trusted connection? 【发布时间】:2014-09-04 11:38:26 【问题描述】:我正在尝试在我们的 IIS 服务器上正确配置 asp.net 4.5。
我已经能够成功导航并启动一个不包含数据连接的 ASPX 页面,因此我知道本地目录的应用程序池身份验证正常工作。
现在虽然我有一个单独的 SQL 服务器连接到域,并且在代码中存储了一个连接字符串,该连接字符串使用受信任的连接将 ASPX 页面连接到服务器。在 Visual Studio 调试模式下运行时,连接工作正常 - 但此时我假设它正在使用我的登录凭据。
我的问题是,当用户在新的 IIS7 服务器上托管时通过浏览器调用 aspx 页面时,使用可信连接时使用哪个帐户调用 SQL 服务器? - 是最终用户还是来自 IIS 服务器的本地帐户?
当我调用嵌入了数据连接的页面时,我收到错误:用户 ADMIN\PCNAME$ 登录失败 ... 这表明这是它正在使用的帐户。但是,我知道的域上不存在此帐户。 - 是吗?!
提前致谢,
【问题讨论】:
【参考方案1】:它将使用运行 ASP.NET 的帐户,正如您所设计的那样。您通常应该做的是创建一个域帐户(具有正确的权限)并在该帐户下运行您的 ASP.NET AppPool。然后受信任的连接将使用该帐户连接到数据库,并且只要您授予它访问权限(作为域帐户您可以这样做),它应该一切正常。
添加:
在 cmet 上来回折腾之后,让我们回到开始:设置新的 AppPool 使用域用户帐户运行,并回收 AppPool。什么是说密码错误?如果是 IIS 尝试启动 AppPool,那么极有可能是您为 AppPool 提供的密码错误,或者密码设置为在首次登录时更改。 如果它不是 IIS,而是打开一个数据库连接,你确定数据库允许这个域帐户访问数据库和它需要的表吗?您为该帐户分配了哪些角色?另外,它试图执行什么 SQL 语句(如果它已经足够远,可以尝试执行一条语句)?
我建议您在最初的问题中做出任何回应 - 如果 cmets 太多,它们就会成为拖累。
【讨论】:
嗨,谢谢,这是有道理的。从那时起,我尝试做两件事 - 首先更改应用程序池,以便它使用我们配置的服务帐户的特定凭据,以访问 SQL 服务器,并使用我也可以访问的凭据。不过,我似乎无法应用更改,并且每次我收到错误提示密码无效时: serverfault.com/questions/421658/… 但不幸的是,该线程没有解决方案! ...您以前见过这个问题吗? 您是否在使用模拟?检查 web.config 文件。 遵循此处的建议:forums.iis.net/t/1180450.aspx 我尝试将我的凭据添加到本地管理员组 - 这现在允许数据库页面在本地主机上正确加载,但是如果我尝试从另一台机器,然后我收到“Internet Explorer 无法显示页面”错误。我认为这是因为匿名身份验证仍设置为使用应用程序池帐户,所以我也将其更改为我的凭据......但它仍然不会加载。据我所知 - 不使用模拟。 - 感觉就像我接近了! 这也很奇怪:第一个网站(默认)可以通过远程 PC 的 IP 地址访问。如果我输入 10.200.38.123:8080 (第二个网站的地址) - 它不起作用。查看匿名身份验证设置,第一个使用 ISUR,第二个使用应用程序池标识(从我的凭据更改回来),...切换到使用 ISUR 意味着页面也停止在本地主机上工作。莫名其妙!以上是关于使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?的主要内容,如果未能解决你的问题,请参考以下文章
Windows 身份验证问题“登录来自不受信任的域,不能用于 Windows 身份验证。”