Share via


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 C# che si connette a database SQL di Azure. Il programma usa l'autenticazione in modalità interattiva, che supporta l'autenticazione a più fattori usando l'ID Microsoft Entra (in precedenza Azure Active Directory).

Per altre informazioni sul supporto dell'autenticazione a più fattori per gli strumenti SQL, vedere Uso dell'autenticazione a più fattori Di Microsoft Entra.

Nota

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

Autenticazione a più fattori per database SQL di Azure

Active Directory Interactive l'autenticazione supporta l'autenticazione a più fattori usando Microsoft.Data.SqlClient per connettersi alle origini dati SQL di Azure. In un programma C# client, il valore di enumerazione indirizza il sistema all'uso della modalità interattiva Microsoft Entra che supporta l'autenticazione a più fattori per connettersi a database SQL di Azure. L'utente che esegue il programma vede le finestre di dialogo seguenti:

  • Finestra di dialogo che visualizza un nome utente di Microsoft Entra e chiede la password dell'utente.

    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 passa attraverso l'autenticazione a più fattori, il sistema visualizza una finestra di dialogo che richiede un numero di telefono cellulare a cui inviare sms. Ogni messaggio specifica un codice di verifica che l'utente deve immettere nella finestra di dialogo successiva.

  • Finestra di dialogo che richiede un codice di verifica dell'autenticazione a più fattori, che il sistema ha inviato a un 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 Uso dell'autenticazione a più fattori di Microsoft Entra.

Suggerimento

È possibile eseguire ricerche nelle API .NET Framework con la pagina degli strumenti .NET API Browser.

È anche possibile eseguire la ricerca direttamente con il parametro facoltativo ?term=<valore> di ricerca.

Prerequisito

Prima di iniziare, è necessario avere un server SQL logico creato e disponibile.

Impostare un amministratore di Microsoft Entra per il server

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

Nella pagina SQL Server della portale di Azure selezionare MICROSOFT Entra ID dal menu della risorsa e quindi selezionare Imposta amministratore.

Per altre informazioni sugli amministratori e gli 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 C# si basa sullo spazio dei nomi Microsoft.Data.SqlClient . Per altre informazioni, vedere Uso dell'autenticazione di Microsoft Entra con SqlClient.

Nota

System.Data.SqlClient usa Azure Active Directory Authentication Library (ADAL), deprecato. 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, vedere Uso dell'autenticazione di Microsoft Entra con SqlClient.

Verificare con SQL Server Management Studio

Prima di eseguire l'esempio C#, è consigliabile verificare che l'installazione e le configurazioni siano corrette in SQL Server Management Studio (SSMS). 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, nello stesso edificio, in cui si prevede di eseguire l'esempio C#. Per questo test, qualsiasi modalità di autenticazione è OK. Se è presente un'indicazione che il server non accetta l'indirizzo IP, vedere Regole del firewall a livello di server e a livello di database per assistenza.

Verificare l'autenticazione a più fattori di Microsoft Entra

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

Per altre informazioni, vedere Uso dell'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 automaticamente il tenant.

Per trovare il nome di dominio nella 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, vedere il blog seguente.

Questo è un esempio di codice sorgente 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 C#.

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

Passaggi successivi