Herstellen einer Verbindung zu Azure SQL-Datenbank mit Multi-Faktor-Authentifizierung von Microsoft Entra
Gilt für: Azure SQL-Datenbank SQL-Datenbank in Fabric
Dieser Artikel enthält ein C#-Programm, das eine Verbindung mit einer Azure SQL-Datenbank herstellt. Das Programm nutzt den interaktiven Authentifizierungsmodus, der die Multi-Faktor-Authentifizierung über Microsoft Entra ID (früher Azure Active Directory) unterstützt.
Weitere Informationen zur Unterstützung der Multi-Faktor-Authentifizierung für SQL-Tools finden Sie unter Verwenden der Multi-Faktor-Authentifizierung von Microsoft Entra.
Hinweis
Microsoft Entra ID war zuvor als Azure Active Directory (Azure AD) bekannt.
Multi-Faktor-Authentifizierung für Azure SQL-Datenbank
Im Authentifizierungsmodus Active Directory Interactive
wird zum Herstellen einer Verbindung mit Azure SQL-Datenquellen die Multi-Faktor-Authentifizierung mithilfe von Microsoft.Data.SqlClient unterstützt. In einem C#-Clientprogramm weist dieser Enumerationswert das System an, den interaktiven Microsoft Entra-Modus zu verwenden, der die Multi-Faktor-Authentifizierung für Verbindungen mit Azure SQL-Datenbank unterstützt. Der Benutzer, der das Programm ausführt, sieht die folgenden Dialogfelder:
Ein Dialogfeld, in dem ein Microsoft Entra-Benutzername andezeigt und das Benutzerkennwort angefordert wird.
Wenn die Domäne des Benutzers eine Microsoft Entra ID-Verbunddomäne ist, wird das Dialogfeld nicht angezeigt, da kein Kennwort erforderlich ist.
Wenn die Microsoft Entra-Richtlinie die Multi-Faktor-Authentifizierung für den Benutzer erzwingt, wird ein Dialogfeld zum Anmelden bei Ihrem Konto angezeigt.
Wenn ein Benutzer die Multi-Faktor-Authentifizierung zum ersten Mal ausführt, wird er in einem Dialogfeld zur Angabe einer Mobiltelefonnummer für den Empfang von SMS aufgefordert. Jede Nachricht enthält den Prüfcode, den der Benutzer im nächsten Dialogfeld eingeben muss.
Ein weiteres Dialogfeld fordert die Eingabe des Prüfcodes für die Multi-Faktor-Authentifizierung an, den das System an ein Mobiltelefon gesendet hat.
Informationen darüber, wie Sie Microsoft Entra ID so konfigurieren, dass Multi-Faktor-Authentifizierung erforderlich ist, finden Sie unter Erste Schritte mit Multi-Faktor-Authentifizierung von Microsoft Entra in der Cloud.
Screenshots dieser Dialogfelder finden Sie unter Verwenden der Multi-Faktor-Authentifizierung von Microsoft Entra.
Tipp
Sie können die .NET Framework-APIs auf der Seite mit dem Tool .NET API-Browser suchen.
Mit dem optionalen ?term=<Suchwert>-Parameter können Sie auch eine direkte Suche ausführen.
Voraussetzungen
Zu Beginn wird vorausgesetzt, dass ein logischer SQL-Server erstellt wurde und verfügbar ist.
Festlegen eines Microsoft Entra-Administrators für Ihren Server
Damit das C#-Beispiel ausgeführt werden kann, muss ein Administrator eines logischen Servers einen Microsoft Entra-Administrator über Microsoft Entra ID für Ihren Server zuweisen.
Wählen Sie im Azure-Portal auf der Seite SQL-Server den Eintrag Microsoft Entra ID im Ressourcenmenü aus, und wählen Sie dann Administrator festlegen aus.
Weitere Informationen zu Microsoft Entra-Administratoren und Benutzern für Azure SQL-Datenbank finden Sie in den Screenshots unter Konfigurieren und Verwalten der Microsoft Entra-Authentifizierung mit SQL-Datenbank.
Microsoft.Data.SqlClient
Das C#-Beispiel basiert auf dem Namespace Microsoft.Data.SqlClient. Weitere Informationen finden Sie unter Verwenden der Microsoft Entra-Authentifizierung mit SqlClient.
Hinweis
System.Data.SqlClient verwendet die Azure Active Directory-Authentifizierungsbibliothek (ADAL), die veraltet ist. Wenn Sie den Namespace System.Data.SqlClient für die Microsoft Entra-Authentifizierung verwenden, migrieren Sie Anwendungen zu Microsoft.Data.SqlClient und zur Microsoft-Authentifizierungsbibliothek (MSAL). Weitere Informationen zur Verwendung der Microsoft Entra-Authentifizierung mit SqlClient finden Sie unter Verwenden der Microsoft Entra-Authentifizierung mit SqlClient.
Durchführen einer Überprüfung mit SQL Server Management Studio
Bevor Sie das C#-Beispiel ausführen, sollten Sie in SQL Server Management Studio (SSMS) überprüfen, ob das Setup und die Konfigurationen ordnungsgemäß funktionieren. Fehler im C#-Programm können dann im Quellcode eingegrenzt werden.
Überprüfen der IP-Adressen der Firewall auf Serverebene
Führen Sie SSMS auf demselben Computer und im selben Gebäude aus, auf bzw. in dem auch das C#-Beispiel ausgeführt werden soll. Für diesen Test kann ein beliebiger Authentifizierungsmodus verwendet werden. Bei Anzeichen, dass der Server Ihre IP-Adresse nicht akzeptiert, finden Sie hilfreiche Informationen unter Firewallregeln auf Server- und Datenbankebene.
Bestätigen der Multi-Faktor-Authentifizierung von Microsoft Entra
Führen Sie SSMS erneut aus, wobei Sie Authentifizierung dieses Mal auf Active Directory: universell mit MFA festlegen. Diese Option erfordert SSMS, Version 18.6 oder höher.
Weitere Informationen finden Sie unter Verwenden der Multi-Faktor-Authentifizierung von Microsoft Entra.
Hinweis
Für SSMS-Versionen vor 18.x müssen Gastbenutzer den Microsoft Entra-Domänennamen oder die Mandanten-ID für die Datenbank angeben: Wählen Sie Optionen>AD-Domänenname oder Mandanten-ID aus. In SSMS 18.x und höher wird der Mandant automatisch erkannt.
Um den Namen Domänennamen im Azure-Portal zu finden, wählen Sie Microsoft Entra ID>Benutzerdefinierte Domänennamen aus. Im C#-Beispielprogramm muss kein Domänenname angegeben werden.
C#-Codebeispiel
Hinweis
Wenn Sie .NET Core verwenden, werden Sie wahrscheinlich den Namespace Microsoft.Data.SqlClient nutzen. Weitere Informationen finden Sie im folgenden Blogbeitrag.
Dies ist ein Beispiel für C#-Quellcode.
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();
}
}
Dies ist ein Beispiel für die C#-Testbefehlsausgabe.
ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
...