sql server和asp.net中的窗口身份validation
我正在为我的asp.net web应用程序使用sql数据库的窗口身份validation。但是在我将我的网站部署到另一台计算机后,我无法连接到数据库。是否有任何属性用于窗口身份validation以在web中设置用户名和密码.config文件。
这听起来像你的情景吗?
- 在本地计算机上构建的IIS Web应用程序
- Web应用程序使用Windows身份validation
- Web应用程序也在本地计算机上与数据库通信
- Web应用程序用户还具有有效的数据库登录
- Web应用程序用户凭据通过可信连接传递到数据库
一切都很好。 然后将其移动到数据库和IIS不再位于同一服务器上的不同环境中,然后您无法让数据库识别IIS传入的凭据?
如果是的话,几个月前欢迎来到我的地狱。 问题是,一旦两个进程不在同一个盒子上,他们就不再相互信任了。 需要网络管理权限才能使两个进程跨服务器边界相互信任。 不幸的是,我没有博客,但一般的步骤是
- 将IIS服务帐户标记为可信(Active Directory设置)
- 将服务主体名称(SPN)设置为netbios名称或FQDN
- 必须在两个盒子上设置一些东西,以表明他们可以相互信任
很抱歉模糊的回忆,因为我不是那个有修改任何东西的凭证的人,我只需要观察他们点击按钮。 关于如何使用Windows身份validation连接到SQL Server的入门文章让我们走得很远。
这涉及到这样一个事实:在您的开发人员框中,您(或者匿名用户?或者开发者Web服务转移的用户?)受到本地SQL实例的信任。 但是,在部署时,运行的用户ASP.NET不受信任。
选项
- 正如乔治所提到的那样,请使用SQL登录,而不是Windows
- 在Web服务器和SQL Server之间建立适当的信任
- 模拟用户的数据上下文(这可能变得复杂,顺便说一下)
您最有可能使用可信连接字符串,例如
Data Source = myServerAddress; Initial Catalog = myDataBase; Integrated Security = SSPI;
…因为您正在使用Windows身份validation。 您需要使用标准连接字符串。 例如
SQL Server 2008:
Data Source = myServerAddress; Initial Catalog = myDataBase; User Id = myUsername; Password = myPassword;
只需确保在SQL Server中设置非Windows身份validation用户。
应在web.config中设置身份validation模式。 另外,请检查是否禁用了匿名身份validation。