【问题标题】:Connecting to different databases on different domains using Windows Authentication使用 Windows 身份验证连接到不同域上的不同数据库
【发布时间】:2014-11-23 15:51:14
【问题描述】:

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


我的两个问题:

  1. 是否可以在OtherDomain 中以某种方式运行应用程序以使其连接到不同域中的两个数据库?
  2. 是否可以为不同域的各种服务器制作可以连接的C#程序?比如对不同的主机使用不同的Windows Authentication,这种情况如何管理?

【问题讨论】:

  • 请注意,这个应用程序是第 3 方,我无法重建它。我试图以不同的用户runas /netonly /user:DOMAIN1\USER_NAME "App.exe" 运行它,但是与Server1OtherDomain\DB1 的连接断开了。因为在 OtherDomain 中运行我不能使用旧的Server1\DB1
  • 两个域是信任关系吗?
  • 如果应用程序是第三方的,那么这不是一个编程问题,而是一个基础设施问题,最好在Server Fault 上提出,不是吗?
  • 你有什么错误信息吗?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多