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
...