使用IIS7使用可信连接从DMZ Web服务器连接到内部SQL Server 2008 R2?

时间:2012-11-08 00:57:44

标签: asp.net authentication sql-server-2008-r2 dmz trustedconnection

我正在尝试连接并收到如下错误:

  

登录失败。登录不能与Windows身份验证

一起使用

我在SQL Server和Web服务器上使用镜像本地帐户,因为我只是尝试在不在同一域上的计算机之间使用可信连接。这似乎是相当普遍的事情,但经过几天试图找到适用于我的情况的答案,我不承认任何答案都适用......或者我只是一个事实。 NET开发人员,而不是系统管理员或DBA意味着我拥有它,只是不知道它。

这就是我能说的:

  • CMS网络服务器:在企业DMZ上的Windows Server 2008,IIS7上运行的ASP.NET 4.0网络应用程序
  • CMS数据库服务器:域服务器上的SQL Server 2008 R2
  • 出于各种原因,我不会参加,加密凭据是不够的。
  • 应用程序需要连接的数据库端口不是标准端口,而是设置为侦听其他端口。
  • 设置数据库镜像不是一种选择,并不能真正满足要求(以我的思维方式)

此外,如果这有助于了解:仅供参考:

  • 内容输入发生在内部Web服务器上,该服务器将内容发布到DMZ Web服务器访问的同一个DB。
  • 内容服务器设置为让网站以集成模式运行应用程序池,使用-ga开关设置为服务帐户的Windows域用户并获得所有适当的权限,一切运行完美。

  • 外部Web服务器,没有域访问权限,使用镜像帐户(在SQL Server计算机和Web计算机上设置相同的用户名和密码)。

  • Web服务器上的本地帐户使用-ga开关设置为服务帐户,并作为我的应用程序的应用程序池标识运行。
  • 在“SQL Server”框中,创建具有相同信誉并且具有与域用户标识相同的权限的本地用户
  • 通过安装在Web服务器上的MGMT studio连接到SQL Server,SQL Server用户信誉正常。

现在,如果我将用户名放入连接字符串中,一切都很完美。一旦我将trusted_connection = yes放在连接字符串中,就像我对域服务器连接字符串所做的那样,我就会收到信任错误。

因此,如果我的连接字符串是这样的,它可以正常工作:

Server=myServerAddress;Database=myDataBase;Username=MyUser; Password=MyPassword;

如果我将连接字符串更改为其中任何一个,则会失败:

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

我正在与客户的一位网络管理员合作,他不一定是DBA,也没有配置网络应用程序的经验。所以我们可能会遗漏一些东西,任何建议或想法都会有所帮助。我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果使用SQL凭据不是一个选项,那么您应该使用Active Directory并创建单向信任(让DMZ服务器域信任您的内部域),在您的DMZ应用程序可以使用的内部域中创建一个服务帐户,并授予该帐户访问数据库的权限。然后它将能够生成SSPI上下文。