Udostępnij za pośrednictwem


Nawiązywanie połączenia z usługą Azure SQL Database przy użyciu uwierzytelniania wieloskładnikowego firmy Microsoft

Dotyczy: Baza danych SQL Usługi Azure SQL Database w sieci szkieletowej

Ten artykuł zawiera program w języku C#, który nawiązuje połączenie z usługą Azure SQL Database. Program korzysta z uwierzytelniania w trybie interaktywnym, które obsługuje uwierzytelnianie wieloskładnikowe przy użyciu identyfikatora Microsoft Entra (dawniej Azure Active Directory).

Aby uzyskać więcej informacji na temat obsługi uwierzytelniania wieloskładnikowego dla narzędzi SQL, zobacz Using Microsoft Entra multifactor authentication (Korzystanie z uwierzytelniania wieloskładnikowego firmy Microsoft).

Uwaga

Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).

Uwierzytelnianie wieloskładnikowe dla usługi Azure SQL Database

Active Directory Interactive uwierzytelnianie obsługuje uwierzytelnianie wieloskładnikowe przy użyciu elementu Microsoft.Data.SqlClient w celu nawiązania połączenia ze źródłami danych Azure SQL. W programie klienta języka C# wartość wyliczenia kieruje system do korzystania z trybu interaktywnego Microsoft Entra, który obsługuje uwierzytelnianie wieloskładnikowe w celu nawiązania połączenia z usługą Azure SQL Database. Użytkownik, który uruchamia program, widzi następujące okna dialogowe:

  • Okno dialogowe z wyświetloną nazwą użytkownika firmy Microsoft Entra i monitem o hasło użytkownika.

    Jeśli domena użytkownika jest federacyjna z identyfikatorem Firmy Microsoft Entra, okno dialogowe nie jest wyświetlane, ponieważ żadne hasło nie jest potrzebne.

    Jeśli zasady firmy Microsoft Entra nakładają na użytkownika uwierzytelnianie wieloskładnikowe, zostanie wyświetlone okno dialogowe logowania do konta.

  • Przy pierwszym przejściu przez uwierzytelnianie wieloskładnikowe system wyświetla okno dialogowe z prośbą o podanie numeru telefonu komórkowego w celu wysłania wiadomości SMS. Każdy komunikat zawiera kod weryfikacyjny, który użytkownik musi wprowadzić w następnym oknie dialogowym.

  • Okno dialogowe z prośbą o kod weryfikacyjny uwierzytelniania wieloskładnikowego, który system wysłał na telefon komórkowy.

Aby uzyskać informacje o sposobie konfigurowania identyfikatora entra firmy Microsoft w celu wymagania uwierzytelniania wieloskładnikowego, zobacz Wprowadzenie do uwierzytelniania wieloskładnikowego firmy Microsoft w chmurze.

Zrzuty ekranu tych okien dialogowych można znaleźć w temacie Using Microsoft Entra multifactor authentication (Korzystanie z uwierzytelniania wieloskładnikowego firmy Microsoft).

Napiwek

Interfejsy API programu .NET Framework można przeszukiwać za pomocą strony narzędzia przeglądarki interfejsu API platformy .NET.

Możesz również wyszukiwać bezpośrednio za pomocą opcjonalnego parametru ?term=<search.>

Warunek wstępny

Przed rozpoczęciem należy utworzyć i udostępnić logiczny serwer SQL.

Ustawianie administratora usługi Microsoft Entra dla serwera

Aby można było uruchomić przykład w języku C#, administrator serwera logicznego musi przypisać administratora firmy Microsoft Entra z identyfikatora Entra firmy Microsoft dla serwera.

W witrynie Azure Portal na stronie programu SQL Server wybierz pozycję Microsoft Entra ID z menu zasobów, a następnie wybierz pozycję Ustaw administratora.

Aby uzyskać więcej informacji na temat administratorów i użytkowników usługi Microsoft Entra dla usługi Azure SQL Database, zobacz zrzuty ekranu na stronie Konfigurowanie uwierzytelniania entra firmy Microsoft i zarządzanie nim za pomocą usługi SQL Database.

Microsoft.Data.SqlClient

Przykład w języku C# opiera się na przestrzeni nazw Microsoft.Data.SqlClient . Aby uzyskać więcej informacji, zobacz Using Microsoft Entra authentication with SqlClient (Korzystanie z uwierzytelniania entra firmy Microsoft w programie SqlClient).

Uwaga

System.Data.SqlClient używa biblioteki Azure Active Directory Authentication Library (ADAL), która jest przestarzała. Jeśli używasz przestrzeni nazw System.Data.SqlClient na potrzeby uwierzytelniania entra firmy Microsoft, przeprowadź migrację aplikacji do biblioteki Microsoft.Data.SqlClient i biblioteki Microsoft Authentication Library (MSAL). Aby uzyskać więcej informacji na temat korzystania z uwierzytelniania Microsoft Entra w programie SqlClient, zobacz Using Microsoft Entra authentication with SqlClient (Używanie uwierzytelniania entra firmy Microsoft z programem SqlClient).

Weryfikowanie przy użyciu programu SQL Server Management Studio

Przed uruchomieniem przykładu w języku C# warto sprawdzić, czy konfiguracja i konfiguracje są poprawne w programie SQL Server Management Studio (SSMS). Wszelkie błędy programu w języku C# można następnie zawęzić do kodu źródłowego.

Weryfikowanie adresów IP zapory na poziomie serwera

Uruchom program SSMS z tego samego komputera w tym samym budynku, w którym planujesz uruchomić przykład języka C#. W tym teście każdy tryb uwierzytelniania jest ok. Jeśli istnieje jakiekolwiek wskazanie, że serwer nie akceptuje twojego adresu IP, zobacz reguły zapory na poziomie serwera i na poziomie bazy danych, aby uzyskać pomoc.

Weryfikowanie uwierzytelniania wieloskładnikowego firmy Microsoft

Uruchom ponownie program SSMS, tym razem z ustawieniem Uwierzytelnianie na wartość Azure Active Directory — universal with MFA. Ta opcja wymaga programu SSMS w wersji 18.6 lub nowszej.

Aby uzyskać więcej informacji, zobacz Using Microsoft Entra multifactor authentication (Korzystanie z uwierzytelniania wieloskładnikowego firmy Microsoft).

Uwaga

W przypadku wersji programu SSMS wcześniejszych niż 18.x użytkownicy-goście muszą podać nazwę domeny lub identyfikator dzierżawy firmy Microsoft dla bazy danych: wybierz pozycję Opcje>Nazwa domeny usługi AD lub identyfikator dzierżawy. Program SSMS 18.x lub nowszy automatycznie rozpoznaje dzierżawę.

Aby znaleźć nazwę domeny w witrynie Azure Portal, wybierz pozycję Microsoft Entra ID>Niestandardowe nazwy domen. W przykładowym programie w języku C# podanie nazwy domeny nie jest konieczne.

Przykład kodu w języku C#

Uwaga

Jeśli używasz platformy .NET Core, użyj przestrzeni nazw Microsoft.Data.SqlClient . Aby uzyskać więcej informacji, zobacz następujący blog.

Jest to przykład kodu źródłowego języka 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();

    }
}

 

Jest to przykład danych wyjściowych testu języka C#.

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

Następne kroki