使用 Microsoft Entra 多重要素驗證 連線 至 Azure SQL 資料庫

適用於:Azure SQL Database

本文提供 C# 程式,可連線至 Azure SQL 資料庫。 此程式使用互動式模式驗證,其支援 使用 Microsoft Entra ID 進行多重要素驗證先前稱為 Azure Active Directory)。

如需 SQL 工具多重要素驗證支援的詳細資訊,請參閱 使用 Microsoft Entra 多重要素驗證

注意

Microsoft Entra 標識符 先前稱為 Azure Active Directory (Azure AD)。

Azure SQL 資料庫 的多重要素驗證

Active Directory Interactive 驗證支援使用 Microsoft.Data.SqlClient 連線至 Azure SQL 數據源的多重要素驗證。 在用戶端 C# 程式中,列舉值會指示系統使用支援多重要素驗證的 Microsoft Entra 互動式模式來連線到 Azure SQL 資料庫。 執行程式的使用者會看到下列對話盒:

  • 顯示 Microsoft Entra 使用者名稱並要求使用者密碼的對話方塊。

    如果使用者的網域與 Microsoft Entra ID 同盟,則不會顯示對話框,因為不需要密碼。

    如果 Microsoft Entra 原則會對使用者施加多重要素驗證,則會顯示登入您的帳戶的對話方塊。

  • 使用者第一次通過多重要素驗證時,系統會顯示對話方塊,要求行動電話號碼傳送簡訊。 每個訊息都會 提供用戶必須在下一個對話框中輸入的驗證碼

  • 要求多重要素驗證驗證碼的對話框,系統已傳送至行動電話。

如需如何設定 Microsoft Entra ID 以要求多重要素驗證的資訊,請參閱開始在雲端中使用 Microsoft Entra 多重要素驗證

如需這些對話框的螢幕擷取畫面,請參閱使用 Microsoft Entra 多重要素驗證

提示

您可以使用 .NET API 瀏覽器工具頁面來搜尋 .NET Framework API

您也可以使用選擇性的 ?term=<search value> 參數直接搜尋。

必要條件

開始之前,您應該已 建立邏輯 SQL 伺服器 並可供使用。

為您的伺服器設定 Microsoft Entra 管理員

若要執行 C# 範例, 邏輯伺服器 管理員必須從伺服器的 Microsoft Entra 識別符指派 Microsoft Entra 管理員。

在 [Azure 入口網站] 的 [SQL Server] 頁面上,從資源功能表中選取 [Microsoft Entra ID],然後選取 [設定系統管理員]。

如需 Azure SQL 資料庫 Microsoft Entra 系統管理員和使用者的詳細資訊,請參閱使用 SQL 資料庫 設定和管理 Microsoft Entra 驗證中的螢幕快照。

Microsoft.Data.SqlClient

C# 範例依賴 Microsoft.Data.SqlClient 命名空間。 如需詳細資訊,請參閱 搭配 SqlClient 使用 Microsoft Entra 驗證。

注意

System.Data.SqlClient 會使用已被取代的 Azure Active Directory 驗證連結庫 (ADAL)。 如果您使用 System.Data.SqlClient 命名空間進行 Microsoft Entra 驗證,請將應用程式遷移至 Microsoft.Data.SqlClientMicrosoft 驗證連結庫 (MSAL)。 如需搭配 SqlClient 使用 Microsoft Entra 驗證的詳細資訊,請參閱 搭配 SqlClient 使用 Microsoft Entra 驗證。

使用 SQL Server Management Studio 進行驗證

執行 C# 範例之前,最好先檢查您的設定和組態是否在 SQL Server Management Studio (SSMS)正確無誤。 然後,任何 C# 程式失敗都可以縮小為原始程式碼。

確認伺服器層級防火牆IP位址

在打算執行 C# 範例的相同電腦中,從同一部電腦執行 SSMS。 在此測試中,任何 驗證 模式都沒問題。 如果有任何指示表示伺服器不接受您的IP位址,請參閱 伺服器層級和資料庫層級防火牆規則 以取得協助。

驗證 Microsoft Entra 多重要素驗證

再次執行 SSMS,這次驗證設定為 Azure Active Directory - 通用 MFA。 此選項需要 SSMS 18.6 版或更新版本。

如需詳細資訊,請參閱使用 Microsoft Entra 多重要素驗證

注意

針對 18.x 之前的 SSMS 版本,來賓用戶必須提供資料庫的 Microsoft Entra 功能變數名稱或租使用者標識碼:選取 [選項>AD 功能變數名稱] 或 [租用戶標識符]。 SSMS 18.x 和更新版本會自動辨識租使用者。

若要在 Azure 入口網站 中尋找功能變數名稱,請選取 [Microsoft Entra ID>自定義功能變數名稱]。 在 C# 範例程式中,不需要提供功能變數名稱。

C# 程式碼範例

注意

如果您使用 .NET Core,您會想要使用 Microsoft.Data.SqlClient 命名空間。 如需詳細資訊,請參閱下列 部落格

這是 C# 原始程式碼的範例。


using System;
using Microsoft.Data.SqlClient;

public class Program
{
    public static void Main(string[] args)
    {
        // Use your own server, database, and user ID.
        // Connetion string - user ID is not provided and is asked interactively.
        string ConnectionString = @"Server=<your server>.database.windows.net; Authentication=Active Directory Interactive; Database=<your database>";


        using (SqlConnection conn = new SqlConnection(ConnectionString))

        {
            conn.Open();
            Console.WriteLine("ConnectionString2 succeeded.");
            using (var cmd = new SqlCommand("SELECT @@Version", conn))
            {
                Console.WriteLine("select @@version");
                var result = cmd.ExecuteScalar();
                Console.WriteLine(result.ToString());
            }

        }
        Console.ReadKey();

    }
}

 

這是 C# 測試輸出的範例。

ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
   ...

下一步