Connettersi a Azure SQL Database con Azure AD Multi-Factor Authentication

Si applica a: Database SQL di Azure

Questo articolo fornisce un programma C# che si connette a Azure SQL Database. Il programma usa l'autenticazione in modalità interattiva, che supporta Azure AD Multi-Factor Authentication.

Per altre informazioni sul supporto di Multi-Factor Authentication per gli strumenti SQL, vedere Uso dell'autenticazione di Azure Active Directory a più fattori.

Multi-Factor Authentication per Azure SQL Database

Active Directory Interactivel'autenticazione supporta l'autenticazione a più fattori tramite Microsoft.Data.SqlClient per connettersi a Azure SQL origini dati. In un programma C# client, il valore di enumerazione indirizza il sistema all'uso della modalità interattiva di Azure Active Directory (Azure AD) che supporta Multi-Factor Authentication per la connessione a Azure SQL Database. L'utente che esegue il programma vede le finestre di dialogo seguenti:

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

    Se il dominio dell'utente è federato con Azure AD, la finestra di dialogo non viene visualizzata perché non è necessaria alcuna password.

    Se i criteri di Azure AD impongono Multi-Factor Authentication all'utente, verrà visualizzata una finestra di dialogo per accedere all'account.

  • La prima volta che un utente passa attraverso Multi-Factor Authentication, 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 Multi-Factor Authentication, che il sistema ha inviato a un telefono cellulare.

Per informazioni su come configurare Azure AD per richiedere Multi-Factor Authentication, vedere Introduzione ad Azure AD Multi-Factor Authentication nel cloud.

Per gli screenshot di queste finestre di dialogo, vedere Configurare l'autenticazione a più fattori per SQL Server Management Studio e Azure AD.

Suggerimento

È possibile cercare le API .NET Framework con la pagina dello strumento .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 Azure AD per il server

Per l'esecuzione dell'esempio C#, un amministratore logico di SQL Server deve assegnare un amministratore di Azure AD per il server.

Nella pagina SQL Server selezionare Amministratore > di Active DirectoryImposta amministratore.

Per altre informazioni sugli amministratori e gli utenti di Azure AD per Azure SQL Database, vedere gli screenshot in Configurare e gestire l'autenticazione di Azure Active Directory 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 Azure Active Directory con SqlClient.

Nota

System.Data.SqlClient usa Azure Active Directory Authentication Library (ADAL), che verrà deprecato. Se si usa lo spazio dei nomi System.Data.SqlClient per l'autenticazione di Azure Active Directory, eseguire la migrazione delle applicazioni a Microsoft.Data.SqlClient e a Microsoft Authentication Library (MSAL).If you're using the System.Data.SqlClient namespace for Azure Active Directory authentication authentication, migrate applications to Microsoft.Data.SqlClient and the Microsoft Authentication Library (MSAL). Per altre informazioni sull'uso dell'autenticazione di Azure AD con SqlClient, vedere Uso dell'autenticazione di Azure Active Directory con SqlClient.

Verificare con SQL Server Management Studio

Prima di eseguire l'esempio C#, è consigliabile verificare che la configurazione 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 Azure Active Directory Multi-Factor Authentication

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

Per altre informazioni, vedere Configurare Multi-Factor Authentication per SSMS e Azure AD.

Nota

Se si è un utente guest nel database, è necessario specificare anche il nome di dominio di Azure AD per il database: selezionare Opzioni>nome di dominio AD o ID tenant. Se si esegue SSMS 18.x o versione successiva, il nome di dominio o l'ID tenant di ACTIVE Directory non è più necessario per gli utenti guest perché 18.x o versione successiva lo riconosce automaticamente.

Per trovare il nome di dominio nel portale di Azure, selezionareNomi di dominio personalizzati di Azure Active Directory>. Nel programma di esempio in C#, fornire un nome di dominio non è necessario.

Esempio di codice C#

Nota

Se si usa .NET Core, si vuole 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