Share via


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

Quando si creano applicazioni cloud, gli sviluppatori devono eseguire il debug e il test delle applicazioni nella workstation locale. Quando un'applicazione 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.

A diagram showing how an app running in local developer will obtain the application service principal from a .env file and then use that identity to connect to Azure resources.

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 dall'estensione Strumenti di Azure di VS Code, dall'interfaccia della riga di comando di Azure o da Azure PowerShell. Azure SDK per .NET è in grado di rilevare che lo sviluppatore ha eseguito l'accesso da uno di questi strumenti e quindi ottenere le credenziali necessarie dalla cache delle credenziali per autenticare l'app in Azure come 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, pertanto il superamento delle autorizzazioni che l'app verrà eseguita con nell'ambiente di produzione. In alternativa, è possibile creare entità servizio dell'applicazione da usare durante lo sviluppo locale che possono essere definite come ambito per avere solo l'accesso necessario per l'app.

1 - Creare un gruppo di Azure AD per lo sviluppo locale

Poiché esistono quasi sempre più sviluppatori che lavorano su un'applicazione, è consigliabile creare prima un gruppo di Azure AD per incapsulare i ruoli (autorizzazioni) necessari per l'app nello sviluppo locale. Questo 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 di Azure AD per l'app.
  • Se un nuovo sviluppatore si aggiunge al team, è sufficiente aggiungerlo al gruppo di Azure AD corretto per ottenere le autorizzazioni corrette per lavorare nell'app.

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

Istruzioni Schermata
Passare alla pagina Azure Active Directory nel portale di Azure digitando Azure Active Directory nella casella di ricerca nella parte superiore della pagina e quindi selezionando Azure Active Directory in servizi. A screenshot showing how to use the top search bar in the Azure portal to search for and navigate to the Azure Active Directory page.
Nella pagina Azure Active Directory, selezionare Gruppi dal menu a sinistra. A screenshot showing the location of the Groups menu item in the left-hand menu of the Azure Active Directory Default Directory page.
Nella pagina Tutti i gruppi, selezionare Nuovo gruppo. A screenshot showing the location of the New Group button in the All groups page.
Nella pagina Nuovo gruppo:
  1. Tipo di gruppo: → Sicurezza
  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.
A screenshot showing how to fill out the form to create a new Azure Active Directory group for the application. This screenshot also shows the location of the link to select to add members to this group
Nella finestra di dialogo Aggiungi membri:
  1. Usare la casella di ricerca per filtrare l'elenco di nomi utente nell'elenco.
  2. Selezionare gli utenti per lo sviluppo locale per questa app. Quando vengono selezionati gli oggetti, verranno spostati nell'elenco Elementi selezionati nella parte inferiore della finestra di dialogo.
  3. Al termine, selezionare il pulsante Seleziona.
A screenshot of the Add members dialog box showing how to select developer accounts to be included in the group.
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.
A screenshot of the New Group page showing how to complete the process by selecting the Create button.

2 - Assegnare i ruoli al gruppo Azure AD

Successivamente, è necessario determinare i ruoli (autorizzazioni) necessari per l'app in base alle risorse e assegnare tali ruoli all'app. In questo esempio i ruoli verranno assegnati al gruppo di Azure Active Directory creato nel passaggio 1. I ruoli possono essere assegnati a una risorsa, a 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 applicazioni raggruppa tutte le risorse di Azure in un unico gruppo di risorse.

Istruzioni Schermata
Individuare il gruppo di risorse per l'applicazione cercando il nome del gruppo di risorse usando 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.
A screenshot showing how to use the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Nella pagina del gruppo di risorse selezionare Controllo di accesso (IAM) nel menu a sinistra. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
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.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
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.
A screenshot showing how to filter and select role assignments to be added to the resource group.
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
Verrà aperta una finestra di dialogo sul lato destro del portale di Azure.
A screenshot showing the radio button to select to assign a role to an Azure AD group and the link used to select the group to assign the role to.
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 Azure AD di sviluppo locale creato per l'app.
  2. Selezionare il gruppo azure AD di sviluppo locale associato all'applicazione.
Selezionare Seleziona nella parte inferiore della finestra di dialogo per continuare.
A screenshot showing how to filter for and select the Azure AD group for the application in the Select members dialog box.
Il gruppo Azure AD verrà ora visualizzata come selezionata 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.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 - Accedere ad Azure con gli strumenti .NET

Successivamente è necessario accedere ad Azure usando una delle diverse opzioni di strumenti .NET. L'account a cui si accede deve esistere anche nel gruppo di Azure Active Directory creato e configurato in precedenza.

Nel menu in alto di Visual Studio passare a Strumenti>Opzioni per aprire la finestra di dialogo opzioni. Nella barra di ricerca in alto a sinistra digitare Azure per filtrare le opzioni. In Autenticazione del servizio di Azure, scegliere Selezione account.

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

A screenshot showing how to sign in to Azure using Visual Studio.

4 - Implementare DefaultAzureCredential nell'applicazione

DefaultAzureCredential supporta più metodi di autenticazione e determina il metodo di autenticazione usato in fase di esecuzione. In questo modo, l'app può usare metodi di autenticazione diversi in ambienti diversi senza implementare codice specifico dell'ambiente.

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

Per implementare DefaultAzureCredential, aggiungere prima di tutto il pacchetto Azure.Identity e facoltativamente i pacchetti Microsoft.Extensions.Azure all'applicazione. A tale scopo, è possibile usare la riga di comando o Gestione pacchetti NuGet.

Aprire l'ambiente terminale desiderato nella directory del progetto dell'applicazione e immettere il comando seguente.

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

I servizi di Azure sono in genere accessibili usando le classi client corrispondenti dall'SDK. Queste classi e i propri servizi personalizzati devono essere registrati nel file Program.cs in modo da poter essere accessibili tramite l'inserimento delle dipendenze in tutta l'app. All'interno di Program.cs, seguire questa procedura per configurare correttamente il servizio e DefaultAzureCredential.

  1. Includere gli spazi dei nomi Azure.Identity e Microsoft.Extensions.Azure con un'istruzione using.
  2. Registrare il servizio di Azure usando i metodi helper pertinenti.
  3. Passare un'istanza dell'oggetto DefaultAzureCredential al metodo UseCredential.

Un esempio è illustrato nel segmento di codice seguente.

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

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

In alternativa, è anche possibile usare DefaultAzureCredential nei servizi più direttamente senza l'aiuto di altri metodi di registrazione di Azure, come illustrato di seguito.

using Azure.Identity;

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

Quando il codice precedente viene eseguito nella workstation locale durante lo sviluppo locale, cercherà nelle variabili di ambiente un'entità servizio dell'applicazione o in Visual Studio, VS Code, nell'interfaccia della riga di comando di Azure o in Azure PowerShell un set di credenziali per sviluppatori, che possono essere usate per autenticare l'app nelle risorse di Azure durante lo sviluppo locale.

Quando distribuito in Azure, lo stesso codice può anche 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.