Conexión a Azure SQL Database con la autenticación multifactor de Microsoft Entra
Se aplica a: Azure SQL Database
En este artículo se proporciona un programa de C# que conecta con Azure SQL Database. El programa usa la autenticación de modo interactivo, que admite la autenticación multifactor mediante Microsoft Entra ID (anteriormente Azure Active Directory).
Para más información sobre la compatibilidad con la autenticación multifactor de las herramientas de SQL, consulte Uso de la autenticación multifactor de Microsoft Entra.
Nota:
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Autenticación multifactor de Azure SQL Database
La autenticación de Active Directory Interactive
admite la autenticación multifactor mediante Microsoft.Data.SqlClient para conectarse a orígenes de datos de Azure SQL. En un programa cliente de C#, el valor de enumeración indica al sistema que use el modo interactivo de Microsoft Entra que admite la autenticación multifactor para conectarse a Azure SQL Database. El usuario que ejecuta el programa ve los cuadros de diálogos siguientes:
Un cuadro de diálogo que muestra el nombre de usuario de Microsoft Entra y pide la contraseña del usuario.
Si el dominio del usuario está federado con Microsoft Entra ID, el cuadro de diálogo no aparece porque no se necesita contraseña.
Si la directiva de Microsoft Entra impone la autenticación multifactor al usuario, se mostrará un cuadro de diálogo para iniciar sesión en la cuenta.
La primera vez que un usuario pasa por la autenticación multifactor, el sistema muestra un cuadro de diálogo que pide un número de teléfono móvil al que enviar mensajes de texto. Cada mensaje proporciona el código de verificación que el usuario debe especificar en el cuadro de diálogo siguiente.
Un cuadro de diálogo que solicita un código de verificación de autenticación multifactor, que el sistema ha enviado a un teléfono móvil.
Para información sobre cómo configurar Microsoft Entra ID para solicitar la autenticación multifactor, consulte Introducción a la autenticación multifactor de Microsoft Entra en la nube.
Para ver capturas de pantalla de estos cuadros de diálogo, consulte Uso de la autenticación multifactor de Microsoft Entra.
Sugerencia
Puede buscar en las API de .NET Framework con la página de la herramientas del Explorador de API .NET.
También puede buscar directamente con el parámetro ?term=<valor de búsqueda> opcional.
Requisito previo
Antes de empezar, debe haber un servidor SQL lógico disponible.
Establecimiento de un administrador de Microsoft Entra para el servidor
Para que se ejecute el ejemplo de C#, un administrador del servidor lógico debe asignar un administrador de Microsoft Entra desde Microsoft Entra ID para el servidor.
En Azure Portal, en la página SQL Server, seleccione Microsoft Entra ID en el menú de recursos y después Establecer administrador.
Para más información sobre los usuarios y administradores de Microsoft Entra para Azure SQL Database, consulte las capturas de pantalla que aparecen en Configuración y administración de la autenticación de Microsoft Entra con SQL Database.
Microsoft.Data.SqlClient
El ejemplo de C# se basa en el espacio de nombres Microsoft.Data.SqlClient. Para obtener más información, consulte Uso de la autenticación de Microsoft Entra con SqlClient.
Nota:
System.Data.SqlClient usa la Biblioteca de autenticación de Azure Active Directory (ADAL), que está en desuso. Si usa el espacio de nombres System.Data.SqlClient para la autenticación de Microsoft Entra, migre las aplicaciones a Microsoft.Data.SqlClient y a la Biblioteca de autenticación de Microsoft (MSAL). Para más información sobre el uso de la autenticación de Microsoft Entra con SqlClient, consulte Uso de la autenticación de Microsoft Entra con SqlClient.
Comprobación con SQL Server Management Studio
Antes de ejecutar el ejemplo de C#, se recomienda comprobar que la configuración de SQL Server Management Studio (SSMS) es correcta. De ese modo, cualquier error del programa de C# se puede restringir al código fuente.
Comprobación de las direcciones IP del firewall de nivel de servidor
Ejecute SSMS desde el mismo equipo, en el mismo edificio, donde planea ejecutar el ejemplo de C#. Para esta prueba sirve cualquier modo de autenticación. Si hay cualquier indicación de que el servidor no acepta su dirección IP, consulte Reglas de firewall de nivel de servidor y de nivel de base de datos para obtener ayuda.
Comprobación de la autenticación multifactor de Microsoft Entra
Vuelva a ejecutar SSMS, en esta ocasión con la opción Autenticación establecida en Active Directory - Universal con MFA. Esta opción requiere la versión 18.6 o posterior de SSMS.
Para más información, consulte Uso de la autenticación multifactor de Microsoft Entra.
Nota:
En el caso de las versiones de SSMS anteriores a la 18.x, los usuarios invitados deben proporcionar el nombre de dominio o el identificador de inquilino de Microsoft Entra para la base de datos: seleccione Opciones>Nombre de dominio o identificador de inquilino de AD. SSMS 18.x y versiones posteriores reconocen automáticamente el inquilino.
Para buscar el nombre de dominio en Azure Portal, seleccione Microsoft Entra ID>Nombres de dominio personalizados. En el programa de C# de ejemplo, no es necesario brindar un nombre de dominio.
Ejemplo de código de C#
Nota:
Si usa .NET Core, querrá usar el espacio de nombres Microsoft.Data.SqlClient. Para más información, consulte el siguiente blog.
Este es un ejemplo de código fuente de 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();
}
}
Este es un ejemplo de la salida de prueba de C#.
ConnectionString2 succeeded.
select @@version
Microsoft SQL Azure (RTM) - 12.0.2000.8
...