如何使用Active Directory通用身份验证打开System.Data.SQLClient.SQLConnection

时间:2017-02-06 20:39:39

标签: c# azure ado.net azure-sql-database system.data

我使用以下代码连接到使用Active Directory集成身份验证的SQL Azure DB。

private string GenerateConnectionString(string databaseName, string serverName)
{
    SqlConnectionStringBuilder connBuilder = new SqlConnectionStringBuilder();
    sqlConnectionBuilder.DataSource = string.Format(
        "tcp:{0}.database.windows.net",
        serverName);
    connBuilder.InitialCatalog = databaseName;
    connBuilder.Authentication = SqlAuthenticationMethod.ActiveDirectoryIntegrated;
    connBuilder.ConnectTimeout = 30;
    return connBuilder.ConnectionString;
}

身份验证从Active Directory集成身份验证更改为Active Directory通用身份验证,以支持多因素身份验证。

我看到了枚举 System.Data.SqlClient.SqlAuthenticationMethod没有Active Directory通用身份验证的值。是否仍然可以使用System.Data.SqlClient连接到数据库?如果是,那是什么 我必须在代码中做的改变?

enter image description here

2 个答案:

答案 0 :(得分:2)

自.NET Framework 4.7.2以来,ActiveDirectoryInteractive身份验证方法可用。不确定它是否与" Universal"相同。或不。

答案 1 :(得分:0)

从2020年8月开始,有一种更好的方法可以连接到Azure SQL DB或Azure Synapse DW(SQL池)。通过使用MSOLEDBSQL driver(可以与应用程序一起重新分发),您的应用程序可以使用普通的System.Data.OleDb对象执行交互式/ MFA身份验证:

using System.Data.OleDb;
...
OleDbConnection con = new OleDbConnection("Provider=MSOLEDBSQL;Data Source=sqlserver.database.windows.net;User ID=user@domain.com;Initial Catalog=database;Authentication=ActiveDirectoryInteractive");

实际上,这是建议以编程方式连接到任何Microsoft SQL产品的方法,因为已经不推荐使用SQLOLEDB和SQLNCLI(也称为“ SNAC”)。