0

我试图连接并得到一个错误,如:使用IIS7使用受信任的连接从DMZ Web服务器连接到内部SQL Server 2008 R2?

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

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

这是我能说什么:

  • CMS Web服务器:在Windows Server 2008上运行,IIS7,对企业DMZ
  • CMS数据库服务器ASP.NET 4.0 Web应用程序:SQL Server 2008 R2上一个域服务器
  • 由于各种原因,我不会去,加密凭据是不够的。
  • 应用程序需要连接的数据库端口不是标准端口,并且设置为侦听不同的端口。
  • 建立数据库镜像是不是一种选择,并没有真正解决的要求(在我的思维方式)

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

  • 内容条目发生在内部Web服务器上,该服务器将内容发布到由DMZ Web服务器访问的相同数据库。
  • 内容服务器设置为让网站以集成模式运行应用程序池,并使用已被设置为使用-ga开关的服务帐户的windows域用户,并授予所有适当的权限,并且所有内容都运行良好。

  • 使用镜像帐户(在SQL Server计算机和Web计算机上设置相同的用户名和密码),无需域访问的外部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,并没有经验配置网络应用。所以有可能我们错过了一些东西,任何建议或想法都会有所帮助。我错过了什么?

回答

0

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

+0

因此,基本上,如果我了解你,你所说的是,如果创建信任不是一种选择,并且加密证书的可能性不是一种选择,那么根本没有办法避免将简单服务器上的文本凭据? – divamatrix

+0

我其实已经在阅读更多。因此,SQL中的Windows身份验证应从Kerberos退回到NTLM,NTLM在概念上允许同步帐户运行(Kerberos需要信任,因此是我的原始答案)。因此,假设帐户都是**本地**帐户,应用程序池设置为使用该身份,在SQL服务器上启用Windows身份验证,并且本地帐户被授予访问权限,毕竟这可能起作用。我怀疑可能需要一些额外的工作才能使NTLM正常工作,特别是至少有一台域中的计算机。有人在Serverfault可能知道。 – HackedByChinese

相关问题