Подключение База данных SQL Azure с многофакторной проверкой подлинности Microsoft Entra

Применимо к:База данных SQL Azure

В этой статье представлена программа C#, которая подключается к Базе данных SQL Azure. Программа использует проверку подлинности в интерактивном режиме, которая поддерживает многофакторную проверку подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory).

Дополнительные сведения о поддержке многофакторной проверки подлинности для средств SQL см. в разделе "Использование многофакторной проверки подлинности Microsoft Entra".

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Многофакторная проверка подлинности для База данных SQL Azure

Active Directory Interactive проверка подлинности поддерживает многофакторную проверку подлинности с помощью Microsoft.Data.SqlClient для подключения к источникам данных SQL Azure. В клиентской программе C# значение перечисления направляет систему на использование интерактивного режима Microsoft Entra, который поддерживает многофакторную проверку подлинности для подключения к База данных SQL Azure. Пользователь, который затем запускает программу, увидит следующие диалоговые окна:

  • Диалоговое окно, отображающее имя пользователя Microsoft Entra и запрашивающее пароль пользователя.

    Если домен пользователя федеративный с идентификатором Microsoft Entra, диалоговое окно не отображается, так как пароль не нужен.

    Если политика Microsoft Entra налагает многофакторную проверку подлинности для пользователя, откроется диалоговое окно для входа в учетную запись.

  • При первом прохождении многофакторной проверки подлинности пользователь отображает диалоговое окно, в котором запрашивается номер мобильного телефона для отправки текстовых сообщений. Каждое сообщение содержит код проверки, который пользователь должен ввести в следующем диалоговом окне.

  • Диалоговое окно с запросом многофакторной проверки подлинности, который система отправила на мобильный телефон.

Сведения о настройке идентификатора Microsoft Entra для многофакторной проверки подлинности см. в статье "Начало работы с многофакторной проверкой подлинности Microsoft Entra" в облаке.

Снимок экрана этих диалоговых окон см. в разделе "Использование многофакторной проверки подлинности Microsoft Entra".

Совет

Вы можете найти интерфейсы API для .NET Framework с помощью страницы обозревателя API .NET.

Также этот поиск можно выполнять напрямую с помощью дополнительного параметра ?term=<искомое_значение>.

Необходимые условия

Прежде чем начать, создайте и подготовьте логический сервер SQL.

Настройка администратора Microsoft Entra для сервера

Для запуска примера C# администратор логического сервера должен назначить администратора Microsoft Entra из идентификатора Microsoft Entra для сервера.

В портал Azure на странице SQL Server выберите идентификатор Microsoft Entra в меню ресурсов, а затем выберите "Задать администратора".

Дополнительные сведения о администраторах и пользователях Microsoft Entra для База данных SQL Azure см. на снимках экрана, приведенных в статье "Настройка проверки подлинности Microsoft Entra с помощью База данных SQL".

Microsoft.Data.SqlClient

Пример C# использует пространство имен Microsoft.Data.SqlClient. Дополнительные сведения см. в статье Об использовании проверки подлинности Microsoft Entra с sqlClient.

Примечание.

System.Data.SqlClient использует библиотеку проверки подлинности Azure Active Directory (ADAL), которая устарела. Если вы используете пространство имен System.Data.SqlClient для проверки подлинности Microsoft Entra, перенесите приложения в Microsoft.Data.SqlClient и библиотеку проверки подлинности Майкрософт (MSAL). Дополнительные сведения об использовании проверки подлинности Microsoft Entra с SqlClient см. в статье "Использование проверки подлинности Microsoft Entra с sqlClient".

Проверка с помощью SQL Server Management Studio

Прежде чем запускать пример C#, стоит проверить правильность установки и конфигураций в SQL Server Management Studio (SSMS). Любой сбой программы C# можно затем свести к исходному коду.

Проверка IP-адресов брандмауэра на уровне сервера

Запустите SSMS с того же компьютера в том же здании, где вы планируете запустить пример C#. Для этого теста подойдет любой режим проверки подлинности. Если есть причины полагать, что сервер не принимает ваш IP-адрес, попробуйте найти ответ в описании правил брандмауэра уровня базы данных и уровня сервера.

Проверка многофакторной проверки подлинности Microsoft Entra

Снова запустите SSMS, на этот раз для параметра Аутентификация выберите значение Azure Active Directory — универсальная с поддержкой MFA. Для этого параметра требуется SSMS версии 18.6 или более поздней.

Дополнительные сведения см. в разделе "Использование многофакторной проверки подлинности Microsoft Entra".

Примечание.

Для версий SSMS до 18.x гостевые пользователи должны указать доменное имя 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
   ...

Следующие шаги