Se connecter à Azure SQL Database avec l’authentification multifacteur Microsoft Entra
S’applique à : Azure SQL Database
Cet article contient un programme C# qui vous connecte à Azure SQL Database . Le programme utilise l’authentification en mode interactif, qui prend en charge l’authentification multifacteur à l’aide de Microsoft Entra ID (anciennement Azure Active Directory).
Pour plus d’informations sur la prise en charge de l’authentification multifacteur pour les outils SQL, consultez la rubrique Utilisation de l’authentification multifacteur Microsoft Entra.
Remarque
Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).
Authentification multifacteur pour Azure SQL Database
L’authentification Active Directory Interactive
prend en charge l’authentification multifacteur à l’aide de Microsoft.Data.SqlClient pour se connecter aux sources de données Azure SQL. Dans un programme client C#, cette valeur d’énumération indique au système d’utiliser le mode interactif de Microsoft Entra prenant en charge l’authentication multifacteur pour se connecter à Azure SQL Database. L’utilisateur qui exécute le programme voit les boîtes de dialogue suivantes :
Une boîte de dialogue qui affiche un nom d’utilisateur Microsoft Entra et qui demande le mot de passe de l’utilisateur.
Si le domaine de l’utilisateur est fédéré avec Microsoft Entra ID, la boîte de dialogue n’apparaît pas, car aucun mot de passe n’est nécessaire.
Si la stratégie Microsoft Entra impose l’authentification multifacteur à l’utilisateur, une boîte de dialogue permettant de se connecter à votre compte s’affiche.
La première fois qu’un utilisateur utilise l'authentification multifacteur, le système affiche une boîte de dialogue demandant un numéro de téléphone mobile pour l’envoi de SMS. Chaque SMS contient le code de vérification que l’utilisateur doit entrer dans la boîte de dialogue suivante.
Une boîte de dialogue qui demande un code de vérification de l’authentification multifacteur, envoyé par le système à un téléphone portable.
Pour plus d’informations sur la configuration de Microsoft Entra ID pour exiger l’authentification multifacteur, consultez la rubrique Démarrer avec l’authentification multifacteur Microsoft Entra dans le cloud.
Pour obtenir des captures d’écran de ces boîtes de dialogue, consultez la rubrique Utilisation de l’authentification multifacteur Microsoft Entra.
Conseil
Vous pouvez rechercher dans les API .NET Framework avec notre page d’outil Explorateur d’API .NET.
Vous pouvez également rechercher directement avec le paramètre facultatif ?term=<valeur de recherche>.
Prérequis
Avant de commencer, vous devez avoir créé un serveur SQL logique qui doit être disponible.
Définir un administrateur Microsoft Entra pour votre serveur
Pour que l’exemple C# s’exécute, un administrateur de serveur logique doit affecter un administrateur Microsoft Entra de Microsoft Entra ID pour votre serveur.
Dans le Portail Azure, dans la page SQL Server, sélectionnez Microsoft Entra ID dans le menu de ressources, puis sélectionnez Définir l’administrateur.
Pour plus d’informations sur les administrateurs Microsoft Entra et les utilisateurs Azure SQL Database, consultez les captures d’écran de l’article Configurer et gérer l’authentification Microsoft Entra avec SQL Database.
Microsoft.Data.SqlClient
L’exemple C# s’appuie sur l’espace de noms Microsoft.Data.SqlClient. Pour plus d’informations, consultez Utilisation de l'authentification Microsoft Entra avec SqlClient.
Remarque
System.Data.SqlClient utilise la Bibliothèque d'authentification Active Directory Azure (ADAL), qui est obsolète. Si vous utilisez l’espace de noms System.Data.SqlClient pour l’authentification Microsoft Entra, migrez les applications vers Microsoft.Data.SqlClient et la bibliothèque d’authentification Microsoft (MSAL). Pour plus d’informations sur l’utilisation de l’authentification Microsoft Entra avec SqlClient, consultez Utilisation de l’authentification Microsoft Entra avec SqlClient.
Vérifier avec SQL Server Management Studio
Avant d’exécuter l’exemple C#, vérifiez que vos configurations sont correctes dans SQL Server Management Studio (SSMS). Tout échec du programme C# peut ensuite être limité au code source.
Vérifier les adresses IP de pare-feu au niveau du serveur
Exécutez SSMS sur l’ordinateur sur lequel vous envisagez d’exécuter l’exemple C#. Pour ce test, vous pouvez choisir n’importe quel mode d’authentification. Si un message indique que le serveur n’accepte pas votre adresse IP, consultez Règles de pare-feu au niveau du serveur et de la base de données pour obtenir de l’aide.
Vérifier l'authentification multifacteur de Microsoft Entra
Réexécutez SSMS, en définissant cette fois Authentification sur Azure Active Directory - Authentification universelle avec MFA. Cette option nécessite SQL Server Management Studio version 18.6 ou ultérieure.
Pour plus d’informations, consultez Utilisation de l’authentification multifacteur Microsoft Entra.
Remarque
Pour les versions de SSMS antérieures à la version 18.x, les utilisateurs invités doivent fournir le nom de domaine Microsoft Entra ou l’ID de locataire de la base de données : sélectionnez Options>AD nom de domaine ou ID client. SSMS 18.x et les versions ultérieures reconnaissent automatiquement le locataire.
Pour trouver le nom de domaine dans le portail Azure, sélectionnez Microsoft Entra ID>Noms de domaine personnalisés. Dans l’exemple de programme C#, vous n’avez pas besoin de fournir de nom de domaine.
Exemple de code C#
Notes
Si vous utilisez .NET Core, vous pouvez utiliser l’espace de noms Microsoft.Data.SqlClient. Pour plus d’informations, consultez le billet de blog suivant.
Voici un exemple de code source 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();
}
}
Voici un exemple de la sortie de test C#.
ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
...