如何让ASPNET被SQL Server 2005识别为可信连接

时间:2009-03-27 16:31:06

标签: asp.net sql-server security database-connection sqlconnection

这是情况。我正在开发一个新网站来访问旧数据库。这是一个DoD安装,因此有很多安全性。

当前的应用程序是用经典的ASP,VBScript和一些javascript编写的。新系统是ASP.NET。

在旧系统中访问数据库意味着使用您自己的凭据(domainname \ username)命中服务器。现在我正在尝试测试我已经完成的一些早期开发。当我使用Cassini(在VS2008下)时,我没有遇到数据库,因为我们的域名\ myusername在SQL Server实例中注册为可信连接。由于我必须编写的安全方面,Cassini不能再作为测试服务器 - 我必须使用IIS(我们这里有安全卡读卡器)。卡西尼无法处理它们。

所以当我解决了在本地电脑上为管理员添加相应帐户的所有问题,以便我可以在使用IIS时在VS2008中进行调试,我试图连接到数据库而我被拒绝了,因为MYPC \ ASPNET是不是可靠的连接。

改变现有数据库是不可能的。用于访问数据库的硬编码用户名和密码是不可能的。

我问DBA他是否可以将MYPC \ ASPNET添加到域组中,以便SQL Server可以将其视为可信连接(因为MYDOMAIN \ MYNAME位于被视为可信连接的组中)。他告诉我这在技术上是不可能的。

最终将有三到四台机器(我的,另一台开发人员,最终的实时网络服务器和未来的测试网络服务器),他们的ASPNET帐户将会击中我们的两台SQL服务器(实时和测试)

我需要做些什么才能让现有的SQL服务器将我视为朋友而不是敌人?我看了模仿,但我得到的印象是它与我们的系统不兼容 - 业务规则调用一个公共例程来创建一个SqlConnection对象并打开它(甚至可能是一个SqlTransaction对象),并且使用了这个对象对于其余的业务规则和数据访问层,直到完成为止。一旦SqlConnection被打开(并且传递,ByRef回到调用例程),它看起来不会持续模仿

提前感谢任何建议。

4 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 在配置为在域帐户上下文中运行的应用程序池中运行Web应用程序
  2. 使用模拟并将您的Web应用程序配置为仅使用Windows身份验证

答案 1 :(得分:0)

答案 2 :(得分:0)

听起来您想冒充正常访问您网站的客户?您是否尝试使用模拟,或者您认为它不起作用?

修改

正如Albert所指出的,模拟需要使用Windows身份验证对用户进行身份验证。您将需要禁用匿名访问,并在IIS管理工具中启用Windows身份验证。

答案 3 :(得分:0)

正如已经建议你应该使用假冒。

但是,如果您的SQL Server在与Web服务器不同的计算机上运行,​​则模拟将不够,因为用户的凭据将不会委派给SQL Server(服务器跃点)。在这种情况下,您必须在AD中启用委派或在SQL Server上创建非Windows登录并使用它(如果您的SQL Server实际上使用Windows登录对表等进行访问控制,这将不起作用)