Condividi tramite


Connessione per database SQL di Azure con l’autenticazione a più fattori Di Microsoft Entra

Si applica a:database SQL di Azure

Questo articolo fornisce un programma in C# che esegue la connessione al database SQL di Azure. Il programma usa la modalità di autenticazione interattiva, che supporta l’autenticazione a più fattori tramite Microsoft Entra ID (in precedenza Azure Active Directory).

Per ottenere informazioni sull’uso dell’autenticazione a più fattori, vedere Utilizzare l'autenticazione a più fattori di Microsoft Entra.

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Autenticazione a più fattori per il database SQL di Azure

L’autenticazione di Active Directory Interactive supporta l’autenticazione a più fattori tramite Microsoft.Data.SqlClient per la connessione alle origini dati di Azure SQL. In un programma client in C#, questo valore di enumerazione indica al sistema di usare la modalità interattiva di Microsoft Entra, che supporta l’autenticazione a più fattori, per la connessione a un database SQL di Azure. L’utente che esegue il programma vede le seguenti finestre di dialogo:

  • Una finestra di dialogo che mostra il nome di un utente di Microsoft Entra e che ne richiede la password.

    Se il dominio dell’utente è federato con Microsoft Entra ID, la finestra di dialogo non viene visualizzata perché non è necessaria alcuna password.

    Se il criterio Microsoft Entra impone l’autenticazione a più fattori per l’utente, verrà visualizzata una finestra di dialogo per accedere all’account.

  • La prima volta che un utente esegue l’autenticazione a più fattori, il sistema mostra una finestra di dialogo che chiede di inserire un numero di telefono cellulare per l’invio di SMS. In ogni messaggio è presente un codice di verifica che l’utente deve immettere nella finestra di dialogo successiva.

  • In un’altra finestra di dialogo viene chiesto di immettere il codice di verifica per l’autenticazione a più fattori che il sistema ha inviato a al telefono cellulare.

Per informazioni su come configurare Microsoft Entra ID per richiedere l’autenticazione a più fattori, vedere Introduzione all’autenticazione a più fattori di Microsoft Entra nel cloud.

Per gli screenshot di queste finestre di dialogo, vedere Utilizzare l'autenticazione a più fattori di Microsoft Entra.

Suggerimento

È possibile cercare le API .NET Framework nella pagina dello strumento Browser API .NET.

anche possibile cercare direttamente con il parametro facoltativo ?term=<valore cercato>.

Prerequisito

Prima di iniziare, occorre avere un server logico SQL pronto e disponibile.

Configurare un amministratore di Microsoft Entra per il server

Per l’esecuzione dell’esempio C#, un amministratore del server logico deve assegnare al server un amministratore di Microsoft Entra da Microsoft Entra ID.

Nella pagina SQL Server del portale di Azure selezionare Microsoft Entra ID dal menu della risorsa, quindi selezionare Imposta amministratore.

Per altre informazioni sugli amministratori e sugli utenti di Microsoft Entra per database SQL di Azure, vedere gli screenshot in Configurare e gestire l’autenticazione di Microsoft Entra con database SQL.

Microsoft.Data.SqlClient

L’esempio in C# si basa sullo spazio dei nomi Microsoft.Data.SqlClient. Per altre informazioni, vedere Usare l’autenticazione di Microsoft Entra con SqlClient.

Nota

System.Data.SqlClient usa Active Directory Authentication Library (ADAL) di Azure, che è deprecata. Se si usa lo spazio dei nomi System.Data.SqlClient per l'autenticazione di Microsoft Entra, eseguire la migrazione delle applicazioni a Microsoft.Data.SqlClient e Microsoft Authentication Library (MSAL). Per altre informazioni sull’uso dell’autenticazione di Microsoft Entra con SqlClient, consultare Usare l’autenticazione di Microsoft Entra con SqlClient.

Verificare con SQL Server Management Studio

Prima di eseguire l’esempio in C#, è consigliabile verificare che le impostazioni e le configurazioni in SQL Server Management Studio (SSMS) siano corrette. In questo modo, qualsiasi errore del programma in C# potrà essere ricondotto al codice sorgente.

Verificare gli indirizzi IP del firewall a livello di server

Eseguire SSMS dallo stesso computer e nello stesso edificio in cui si intende eseguire l’esempio in C#. Per questo test è ammessa qualsiasi modalità di Autenticazione. Se viene segnalato che il server non accetta l’indirizzo IP specificato, vedere Regole del firewall a livello di database e di server.

Verificare l’autenticazione a più fattori di Microsoft Entra

Eseguire di nuovo SSMS, questa volta con Autenticazione impostata su Azure Active Directory - Universale con MFA. Questa opzione richiede SSMS 18.6 o versione successiva.

Per altre informazioni, vedere Utilizzare l'autenticazione a più fattori di Microsoft Entra.

Nota

Per le versioni di SSMS precedenti alla 18.x, gli utenti guest devono specificare il nome di dominio o l’ID tenant di Microsoft Entra per il database: selezionare Opzioni>Nome di dominio o ID tenant di Active Directory. SSMS 18.x e versioni successive riconosce il tenant automaticamente.

Per trovare il nome di dominio nel portale di Azure, selezionare Microsoft Entra ID>Nomi di dominio personalizzati. Nel programma di esempio in C#, fornire un nome di dominio non è necessario.

Esempio di codice C#

Nota

Se si usa .NET Core, è consigliabile usare lo spazio dei nomi Microsoft.Data.SqlClient. Per altre informazioni, consultare il blog seguente.

Questo è un esempio di codice sorgente in 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();

    }
}

 

Questo è un esempio dell’output del test in C#.

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

Passaggi successivi