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.
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.
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.
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.
Selezionare Strumenti>Opzioni per aprire la finestra di dialogo delle opzioni.
Nella casella Opzioni di ricerca nella parte superiore digitare Azure per filtrare le opzioni disponibili.
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. Viene aperta una finestra che richiede di selezionare un account. Immettere le credenziali per l'account Azure desiderato e quindi selezionare la conferma.
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
:
- Includere gli spazi dei nomi
Azure.Identity
eMicrosoft.Extensions.Azure
tramite le direttiveusing
. - Registrare il client del servizio di Azure usando il metodo di estensione con prefisso
Add
corrispondente. - Passare un'istanza di
DefaultAzureCredential
al metodoUseCredential
.
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.