Autenticare le app .NET nei servizi di Azure durante lo sviluppo locale usando gli account per sviluppatori

Gli sviluppatori devono eseguire il debug delle app cloud e testarle nella workstation locale. Quando un'app viene eseguita nella workstation di uno sviluppatore durante lo sviluppo locale, deve comunque eseguire l'autenticazione a tutti i servizi di Azure usati dall'app. Questo articolo illustra come usare le credenziali di Azure di uno sviluppatore per autenticare l'app in Azure durante lo sviluppo locale.

Diagramma che mostra un'app in esecuzione nello sviluppo locale usando un'identità dello strumento di sviluppo per connettersi alle risorse di Azure.

Affinché un'app esegua l'autenticazione in Azure durante lo sviluppo locale usando le credenziali di Azure dello sviluppatore, lo sviluppatore deve accedere ad Azure da uno degli strumenti di sviluppo seguenti:

  • Visual Studio
  • Interfaccia della riga di comando di Azure
  • Azure Developer CLI
  • Azure PowerShell

La libreria di identità di Azure può rilevare che lo sviluppatore ha eseguito l'accesso da uno di questi strumenti. La libreria può quindi ottenere il token di accesso di Microsoft Entra tramite lo strumento per autenticare l'app in Azure con l'identità dell'utente connesso.

Questo approccio è più semplice da configurare per un team di sviluppo perché sfrutta gli account Azure esistenti degli sviluppatori. Tuttavia, l'account di uno sviluppatore avrà probabilmente più autorizzazioni rispetto a quelle richieste dall'applicazione, superando così le autorizzazioni che l'app userà per l'esecuzione nell'ambiente di produzione. In alternativa, è possibile creare entità servizio dell'applicazione da usare durante lo sviluppo locale definite con un ambito limitato al'accesso necessario per l'app.

1 - Creare un gruppo Microsoft Entra per lo sviluppo locale

Poiché esistono quasi sempre più sviluppatori che lavorano su un'app, è consigliabile creare un gruppo di Microsoft Entra per incapsulare i ruoli (autorizzazioni) necessari per l'app nello sviluppo locale. Questo approccio offre i vantaggi seguenti:

  • Ogni sviluppatore ha la certezza di avere gli stessi ruoli assegnati perché i ruoli vengono assegnati a livello di gruppo.
  • Se è necessario un nuovo ruolo per l'app, deve essere aggiunto solo al gruppo per l'app.
  • Se un nuovo sviluppatore si aggiunge al team, ottiene le autorizzazioni necessarie per lavorare sull'app dopo l'aggiunta al gruppo.

Se si dispone di un gruppo di Microsoft Entra esistente per il team di sviluppo, è possibile usare tale gruppo. In caso contrario, completare la procedura seguente per creare un gruppo di Microsoft Entra.

Istruzioni Schermata
Passare alla pagina Microsoft Entra ID nel portale di Azure digitando Microsoft Entra ID nella casella di ricerca nella parte superiore della pagina. Selezionare Microsoft Entra ID nella sezione Servizi. Screenshot che mostra come usare la barra di ricerca superiore nel portale di Azure per cercare e passare alla pagina Microsoft Entra ID.
Nella pagina Microsoft Entra ID, selezionare Gruppi dal menu a sinistra. Screenshot che mostra la posizione della voce di menu Gruppi nel menu a sinistra della pagina Directory predefinita di Microsoft Entra ID.
Nella pagina Tutti i gruppi, selezionare Nuovo gruppo. Screenshot che mostra la posizione del pulsante Nuovo gruppo nella pagina Tutti i gruppi.
Nella pagina Nuovo gruppo:
  1. Selezionare Sicurezza nell'elenco a discesa Tipo di gruppo.
  2. Nome gruppo → Un nome per il gruppo di sicurezza, in genere creato dal nome dell'applicazione. È anche utile includere una stringa come local-dev nel nome del gruppo per indicare lo scopo del gruppo.
  3. Descrizione del gruppo → Una descrizione dello scopo del gruppo.
  4. Selezionare il collegamento Nessun membro selezionato in Membri per aggiungere membri al gruppo.
Screenshot che mostra come creare un nuovo gruppo di Microsoft Entra. Il percorso del collegamento da selezionare per aggiungere membri a questo gruppo è evidenziato.
Nella finestra di dialogo Aggiungi membri:
  1. Usare la casella di ricerca per filtrare l'elenco di nomi utente nell'elenco.
  2. Scegliere uno o più utenti per lo sviluppo locale per questa app. Quando si sceglie un oggetto, l'oggetto viene spostato nell'elenco Elementi selezionati nella parte inferiore della finestra di dialogo.
  3. Al termine, scegliere il pulsante Seleziona.
Screenshot della finestra di dialogo Aggiungi membri che mostra come selezionare gli account sviluppatore da includere nel gruppo.
Di nuovo nella pagina Nuovo gruppo selezionare Crea per creare il gruppo. Il gruppo verrà creato e si tornerà alla pagina Tutti i gruppi. La visualizzazione del gruppo potrebbe richiedere fino a 30 secondi e potrebbe essere necessario aggiornare la pagina a causa della memorizzazione nella cache nel portale di Azure. Screenshot della pagina Nuovo gruppo che mostra come completare il processo selezionando il pulsante Crea.

Nota

Per impostazione predefinita, la creazione di gruppi di Microsoft Entra è limitata a determinati ruoli con privilegi in una directory. Se non è possibile creare un gruppo, contattare un amministratore per la directory. Se non è possibile aggiungere membri a un gruppo esistente, contattare il proprietario del gruppo o un amministratore della directory. Per altre informazioni, vedere Gestire i gruppi e l'appartenenza a un gruppo di Microsoft Entra.

2 - Assegnare ruoli al gruppo di Microsoft Entra

Successivamente, determinare i ruoli (autorizzazioni) necessari per l'app in base alle risorse e assegnare tali ruoli all'app. In questo esempio i ruoli vengono assegnati al gruppo di Microsoft Entra creato nel passaggio 1. Ai gruppi può essere assegnato un ruolo con ambito limitato a una risorsa, a un gruppo di risorse o a una sottoscrizione. Questo esempio illustra come assegnare i ruoli a livello di gruppo di risorse perché la maggior parte delle app raggruppa tutte le risorse di Azure in un unico gruppo di risorse.

Istruzioni Schermata
Individuare il gruppo di risorse per l'app cercando il nome del gruppo di risorse tramite la casella di ricerca nella parte superiore del portale di Azure. Passare al gruppo di risorse selezionando il nome del gruppo di risorse nell'intestazione Gruppi di risorse della finestra di dialogo. Screenshot che mostra come usare la casella di ricerca superiore nel portale di Azure per individuare e passare al gruppo di risorse a cui assegnare ruoli (autorizzazioni).
Nella pagina del gruppo di risorse selezionare Controllo di accesso (IAM) nel menu a sinistra. Screenshot della pagina del gruppo di risorse che mostra la posizione della voce di menu Controllo di accesso (IAM).
Nella pagina Controllo di accesso (IAM):
  1. Selezionare la scheda Assegnazioni di ruolo.
  2. Selezionare + Aggiungi nel menu in alto e quindi Aggiungi assegnazione di ruolo nel menu a discesa risultante.
Screenshot che mostra come passare alla scheda Assegnazioni di ruolo e alla posizione del pulsante usato per aggiungere assegnazioni di ruolo a un gruppo di risorse.
Nella pagina Aggiungi assegnazione di ruolo sono elencati tutti i ruoli che è possibile assegnare per il gruppo di risorse.
  1. Usare la casella di ricerca per filtrare l'elenco in modo da renderlo più gestibile. Questo esempio illustra come filtrare i ruoli di BLOB del servizio di archiviazione.
  2. Selezionare il ruolo che si vuole assegnare.
Selezionare Avanti per passare alla schermata successiva.
Screenshot che mostra come filtrare e selezionare le assegnazioni di ruolo da aggiungere al gruppo di risorse.
La pagina Aggiungi assegnazione di ruolo successiva consente di specificare a quale utente assegnare il ruolo.
  1. Selezionare Utente, gruppo o servizio principale in Assegnazione dell'accesso a .
  2. Selezionare + Selezionare membri in Membri.
Viene aperta una finestra di dialogo sul lato destro del portale di Azure.
Screenshot che mostra il pulsante di opzione da selezionare per assegnare un ruolo a un gruppo Microsoft Entra e il collegamento usato per selezionare il gruppo a cui assegnare il ruolo.
Nella finestra di dialogo Seleziona membri:
  1. La casella di testo Seleziona può essere usata per filtrare l'elenco di utenti e gruppi nella sottoscrizione. Se necessario, digitare i primi caratteri del gruppo di Microsoft Entra di sviluppo locale creato per l'app.
  2. Selezionare il gruppo Microsoft Entra di sviluppo locale associato all'applicazione.
Selezionare Seleziona nella parte inferiore della finestra di dialogo per continuare.
Screenshot che mostra come filtrare e selezionare il gruppo Microsoft Entra per l'applicazione nella finestra di dialogo Seleziona membri.
Il gruppo Microsoft Entra viene ora visualizzato come selezionato nella schermata Aggiungi assegnazione di ruolo. Selezionare Rivedi e assegna per passare alla pagina finale e quindi Rivedi e assegna di nuovo per completare il processo. Screenshot che mostra la pagina Aggiungi assegnazione di ruolo completata e il percorso del pulsante Rivedi e assegna usato per completare il processo.

3 - Accedere ad Azure con gli strumenti di sviluppo

Accedere quindi ad Azure usando uno dei diversi strumenti di sviluppo. L'account autenticato deve esistere anche nel gruppo di Microsoft Entra creato e configurato in precedenza.

  1. Selezionare Strumenti>Opzioni per aprire la finestra di dialogo delle opzioni.

  2. Nella casella Opzioni di ricerca nella parte superiore digitare Azure per filtrare le opzioni disponibili.

  3. In Autenticazione del servizio di Azure, scegliere Selezione account.

  4. Selezionare il menu a discesa in Scegliere un account e scegliere di aggiungere un account Microsoft. Viene aperta una finestra che richiede di selezionare un account. Immettere le credenziali per l'account Azure desiderato e quindi selezionare la conferma.

    Screenshot che mostra come accedere ad Azure con Visual Studio.

  5. Selezionare OK per chiudere la finestra di dialogo delle opzioni.

4 - Implementare DefaultAzureCredential nell'applicazione

DefaultAzureCredential è una sequenza solida e ordinata di meccanismi per l'autenticazione in Microsoft Entra. Ogni meccanismo di autenticazione è una classe derivata dalla classe TokenCredential, denominata credenziale. In fase di esecuzione, DefaultAzureCredential tenta di eseguire l'autenticazione usando la prima credenziale. Se tale credenziale non riesce ad acquisire un token di accesso, viene tentata la credenziale successiva nella sequenza e così via finché non viene ottenuto un token di accesso correttamente. In questo modo, l'app può usare credenziali diverse in ambienti diversi senza scrivere codice specifico dell'ambiente.

L'ordine e le posizioni in cui DefaultAzureCredential cerca le credenziali sono disponibili in DefaultAzureCredential.

Per usare DefaultAzureCredential, aggiungere Azure.Identity e facoltativamente, i pacchetti Microsoft.Extensions.Azure all'applicazione:

In un terminale di propria scelta passare alla directory del progetto dell'applicazione ed eseguire i comandi seguenti:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

È possibile accedere ai servizi di Azure usando classi client specializzate dalle varie librerie client di Azure SDK. Queste classi e i propri servizi personalizzati devono essere registrati in modo da poter essere accessibili tramite l'inserimento delle dipendenze in tutta l'app. In Program.cs completare la procedura seguente per registrare una classe client e DefaultAzureCredential:

  1. Includere gli spazi dei nomi Azure.Identity e Microsoft.Extensions.Azure tramite le direttive using.
  2. Registrare il client del servizio di Azure usando il metodo di estensione con prefisso Add corrispondente.
  3. Passare un'istanza di DefaultAzureCredential al metodo UseCredential.

Ad esempio:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Un'alternativa a UseCredential consiste nel creare un'istanza diretta di DefaultAzureCredential:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Quando il codice precedente viene eseguito nella workstation di sviluppo locale, cerca un'entità servizio dell'applicazione nelle variabili di ambiente o negli strumenti di sviluppo installati localmente, come Visual Studio, per un set di credenziali per sviluppatori. È possibile usare entrambi gli approcci per autenticare l'app nelle risorse di Azure durante lo sviluppo locale.

Dopo la distribuzione in Azure, è possibile anche usare lo stesso codice per autenticare l'app in altre risorse di Azure. DefaultAzureCredential può recuperare automaticamente le impostazioni dell'ambiente e le configurazioni dell'identità gestita per l'autenticazione automatica in altri servizi.