sql server和asp.net中的窗口身份验证

本文关键字:窗口 身份验证 net server asp sql | 更新日期: 2023-09-27 18:00:11

我的asp.net web应用程序正在使用sql数据库的窗口身份验证。但在将我的网站部署到另一台计算机后,我无法连接到数据库。是否有任何用于窗口身份验证的属性可以在web.config文件中设置用户名和密码。

sql server和asp.net中的窗口身份验证

这听起来像你的场景吗?

  • IIS web应用程序建立在本地计算机上
  • Web应用程序使用windows身份验证
  • Web应用程序也在本地计算机上与数据库对话
  • Web应用程序用户也有有效的数据库登录
  • Web应用程序用户凭据通过可信连接传递到数据库

一切都很好。然后将其移动到另一个环境中,在该环境中,数据库和IIS不再位于同一服务器上,然后无法让数据库识别IIS传入的凭据?

如果是的话,那么欢迎几个月前来到我的地狱。问题是,一旦这两个进程不在同一个盒子上,它们就不再信任对方。需要网络管理权限才能使两个进程跨服务器边界相互信任。不幸的是,我没有写博客,但一般步骤是

  • 将IIS服务帐户标记为可信任(Active directory设置)
  • 将服务主体名称(SPN)设置为netbios名称或FQDN
  • 必须在两个盒子上都设置一些东西,以表明他们可以相互信任

很抱歉我回忆得很模糊,因为我不是那个有资格修复任何东西的人,所以我只能观察他们点击按钮。关于如何使用Windows身份验证连接到SQL Server的起始文章让我们走得更远。

这涉及到这样一个事实,即在您的开发人员框中,您(或匿名用户?或开发人员web服务的用户?)受到SQL本地实例的信任。但是,在部署时,运行ASP.NET的用户是不受信任的。

选项

  • 正如George提到的,使用SQL登录,而不是windows
  • 在web服务器和SQL server之间设置适当的信任
  • 为数据上下文模拟用户(顺便说一句,这可能会很复杂)

您很可能使用了受信任的连接字符串,例如

数据源=myServerAddress;最初的Catalog=myDataBase;集成的安全性=SSPI;

因为您正在使用windows身份验证。您需要使用标准连接字符串。例如

SQL Server 2008:

数据源=myServerAddress;最初的Catalog=myDataBase;使用者Id=myUsername;密码=myPassword;

只需确保在SQL Server中设置一个非windows身份验证用户即可。

应在web.config中设置身份验证模式。此外,请检查是否禁用了匿名身份验证。

<authentication mode="Windows"/>