使用Windows身份验证连接到不同域上的不同数据库

时间:2014-09-29 09:35:20

标签: c# sql-server cross-domain database-connection windows-authentication

我必须使用连接在不同数据库/服务器上的第三方工具来收集一些数据并做一些工作。这个应用只是注意它连接到Server1\DB1上的Server2\DB2Domain1并不重要。两台服务器仅使用Windows身份验证(即客户端必须与IntegratedSecurity=true连接)。这种方法在Domain1中运行良好。但有一天,我们决定将此应用程序移植到另一个域(业务原因)。我们在另一个域上创建了Server1\DB1的镜像(让我们称之为Server1IOtherDomain\DB1)。目前这个应用程序可以使用S erver1OtherDomain\DB1,因为我作为新域的用户运行它似乎一切正常。我们只需要在我们的环境中支持新版本的DB。但是几天前我们已经认识到Server2\DB2的连接字符串是硬编码的,我们不能对Server2\DB2执行相同操作(在我们的OtherDomain上创建镜像)。显然,某些功能部分无法正常工作,因为它无法在Server2\DB2中达到Domain1。 总结一下,我有图片:

enter image description here


我的2个问题:

  1. 是否可以在OtherDomain中以某种方式运行应用程序以使其连接到不同域中的两个数据库?
  2. 是否可以为不同域中的各种服务器创建可连接的C#程序?例如,对不同的主机使用不同的Windows身份验证,如何管理此类情况?

1 个答案:

答案 0 :(得分:1)

回答你的第二个问题:
可以使用可在不同域中使用的C#程序,查看this answer以获取简单的C#实现,this Q/A以获取有关跨域身份验证的更多详细信息,并this question与SQL Server和跨域身份验证相关的更具体的问题 您需要采取一些步骤来使两个域彼此信任以允许从一个到另一个的连接,但是这也会打开这两个域以解决更多安全问题,并且这些决策需要由网络管理员。

我还建议您查看WindowsIdentity.ImpersonateWindowsImpersonationContext以获取有关如何具体实施模拟的示例和其他信息。