c# - 使用域外的 AD 登录详细信息验证 SQL 连接

标签 c# .net sql

我正在尝试从域外连接到 SQL 服务器。

我有以下连接字符串:

SqlConnection("SERVER=Server;DATABASE=Database;User ID=Domain\User;Password=password");

当我尝试在域外使用它时会失败,因为它会尝试使用 SQL 身份验证登录。

有什么方法可以将命令传递到字符串中以使用 Active Directory 身份验证。

还有哪些其他方法可以使用域外的事件目录详细信息连接到 SQL 服务器?

最佳答案

您要么需要:

  1. 在您的连接字符串中使用 Integrated Security,并在您的资源域(SQL Server 所在的位置)和您的帐户域(帐户所在的位置)之间创建域信任关系。或者……
  2. 在 SQL Server 中创建一个帐户,并在您的连接字符串中使用该帐户作为用户名和密码。

您通过将域凭据放入用户/密码来进行无效混合,甚至没有信任关系。

编辑:

评论表明需要将 SQL 帐户与 AD 信用同步。这不是必需的。 sql 帐户只是 SQL 范围内的用户名和密码,它特定于 SQL Server,与域信用无关。如果您使用 SQL 帐户,那么这些将成为您应用程序中的配置设置,用于构建正确的连接并通过网络发送。 SQL 服务器在不涉及 AD 的情况下在本地验证这些凭据。

创建 2 层(胖客户端直接访问 sql)或 3 层(客户端访问访问 sql 的中间层应用服务器)也很有趣。如果是后者,您的应用程序将对用户进行身份验证和授权,然后,它使用带有 sql 特定用户/密码的配置设置来访问 sql。如果它是前者并且您使用的是 sql 帐户,那么您需要每个客户端一个,这是一个问题。

关于c# - 使用域外的 AD 登录详细信息验证 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035284/

相关文章:

c# - 在关闭警告中访问 foreach 变量

c# - 在 C# 或 VB.NET 中不能做什么,您可以在 MSIL 中做什么?

MySQL:SQL插入查询以复制同一张表中的数据

mysql - SQL 子查询连接

c# - LINQ to Entities 无法识别方法 'Int32 Parse(System.String)' 方法,

c# - 如何将redis中的数据保存到磁盘中的文件并读回redis?

c# - 本地 IPEndPoint 创建的端口选择。端口号重要吗?

c# - 何时为复杂路径更新绑定(bind)目标?

python - 为什么要使用 SQLAlchemy?编码很方便吗?

c# - 如何使用 mblox 通过 SMPP 发送短信?