Durante lo sviluppo locale, le applicazioni devono eseguire l'autenticazione in Azure per accedere a vari servizi di Azure. Due approcci comuni per l'autenticazione locale sono l'utilizzo di un principale del servizio o l'utilizzo di un account sviluppatore. Questo articolo illustra come usare un account per sviluppatore. Nelle sezioni seguenti si apprenderà:
- Come usare i gruppi di Microsoft Entra per gestire in modo efficiente le autorizzazioni per più account per sviluppatori
- Come assegnare ruoli agli account per sviluppatori per le autorizzazioni di ambito
- Come accedere agli strumenti di sviluppo locali supportati
- Come eseguire l'autenticazione usando un account sviluppatore dal codice dell'app
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:
- Interfaccia CLI di Azure
- CLI per sviluppatori di Azure
- Azure PowerShell
- Visual Studio
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 come utente connesso.
Questo approccio sfrutta gli account Azure esistenti dello sviluppatore per semplificare il processo di autenticazione. Tuttavia, l'account di uno sviluppatore ha probabilmente più autorizzazioni rispetto a quelle richieste dall'app, quindi supera le autorizzazioni eseguite dall'app nell'ambiente di produzione. In alternativa, è possibile creare principali del servizio dell'applicazione da usare durante lo sviluppo locale, che possono essere configurati per avere solo l'accesso necessario all'app.
Creare un gruppo Microsoft Entra per lo sviluppo locale
Per lo sviluppo locale, creare un gruppo Microsoft Entra per racchiudere i ruoli (autorizzazioni) necessari all'applicazione, invece di assegnare i ruoli ai singoli oggetti principale di servizio. Questo approccio offre i vantaggi seguenti:
- Ogni sviluppatore ha gli stessi ruoli assegnati a livello di gruppo.
- Se è necessario un nuovo ruolo per l'app, deve essere aggiunto solo al gruppo dell'app.
- Se un nuovo sviluppatore si aggiunge al team, viene creata una nuova entità servizio dell'applicazione per lo sviluppatore e aggiunta al gruppo, assicurando che lo sviluppatore disponga delle autorizzazioni appropriate per lavorare sull'app.
Vai alla pagina di panoramica ID Entra di Microsoft nel portale di Azure.
Selezionare Tutti i gruppi dal menu a sinistra.
Nella pagina Gruppi , selezionare Nuovo gruppo .
Nella pagina Nuovo gruppo, compila i seguenti campi del modulo:
-
Tipo di gruppo: selezionare Security.
-
Nome gruppo: immettere un nome per il gruppo che include un riferimento al nome dell'app o dell'ambiente.
-
Descrizione gruppo: immettere una descrizione che spiega lo scopo del gruppo.
Seleziona il link Nessun membro selezionato nella sezione Membri per aggiungere membri al gruppo.
Nel pannello a comparsa che si apre, cercare l'entità servizio creata in precedenza e selezionarla dai risultati filtrati. Scegliere il pulsante Seleziona nella parte inferiore del pannello per confermare la selezione.
Selezionare Crea nella parte inferiore della pagina Nuovo gruppo per creare il gruppo e tornare alla pagina Tutti i gruppi. Se il nuovo gruppo non è elencato, attendere un attimo e aggiornare la pagina.
Usare il comando az ad group create per creare gruppi in Microsoft Entra ID.
az ad group create \
--display-name <group-name> \
--mail-nickname <group-mail-nickname> \
--description <group-description>
I parametri --display-name
e --mail-nickname
sono obbligatori. Il nome assegnato al gruppo deve essere basato sul nome e sull'ambiente dell'app per indicare lo scopo del gruppo.
Per aggiungere membri al gruppo, è necessario l'ID oggetto del servizio principale dell'applicazione, che è diverso dall'ID applicazione. Usare il comando az ad sp list per elencare i principali del servizio disponibili:
az ad sp list \
--filter "startswith(displayName, '<group-name>')" \
--query "[].{objectId:id, displayName:displayName}"
Il parametro --filter
accetta filtri in stile OData e può essere usato per filtrare l'elenco come illustrato. Il parametro --query
limita l'output solo alle colonne di interesse.
Usa il comando az ad group member add per aggiungere membri al gruppo:
az ad group member add \
--group <group-name> \
--member-id <object-id>
Assegnare ruoli al gruppo
Successivamente, determinare i ruoli (autorizzazioni) necessari per l'app in base alle risorse e assegnare tali ruoli al gruppo Microsoft Entra creato. Ai gruppi può essere assegnato un ruolo nell'ambito della risorsa, del gruppo di risorse o della sottoscrizione. Questo esempio illustra come assegnare ruoli nell'ambito del gruppo di risorse, poiché la maggior parte delle app raggruppa tutte le risorse di Azure in un singolo gruppo di risorse.
Nel portale di Azure passare alla pagina Panoramica del gruppo di risorse che contiene l'app.
Selezionare Access control (IAM) dal menu di navigazione a sinistra.
Nella pagina Controllo di accesso (IAM), selezionare + Aggiungi e quindi scegliere Assegna ruolo dal menu a discesa. Nella pagina Aggiungi assegnazione di ruolo sono disponibili diverse schede per configurare e assegnare ruoli.
Nella scheda Ruolo, usare la casella di ricerca per individuare il ruolo da assegnare. Selezionare il ruolo e quindi scegliere Avanti.
Nella scheda membri :
- Per assegnare l'accesso al valore di , selezionare utente, gruppo o principale di servizio.
- Per il valore membri , scegliere + Seleziona membri per aprire il riquadro a comparsa Seleziona membri.
- Cercare il gruppo Microsoft Entra creato in precedenza e selezionarlo nei risultati filtrati. Scegliere Selezionare per selezionare il gruppo e chiudere il pannello a comparsa.
- Selezionare Rivedi e assegna nella parte inferiore della scheda Membri.
Nella scheda Rivedi e assegna, seleziona Rivedi e assegna, nella parte inferiore della pagina.
Usare il comando az role definition list per ottenere i nomi dei ruoli a cui è possibile assegnare un gruppo o un oggetto servizio Microsoft Entra:
az role definition list \
--query "sort_by([].{roleName:roleName, description:description}, &roleName)" \
--output table
Usare il comando az role assignment create per assegnare un ruolo al gruppo Microsoft Entra che hai creato.
az role assignment create \
--assignee "<group-object-Id>" \
--role "<role-name>" \
--resource-group "<resource-group-name>"
Per informazioni sull'assegnazione di autorizzazioni a livello di risorsa o sottoscrizione tramite l'interfaccia della riga di comando di Azure, vedere Assegnare ruoli di Azure usando l'interfaccia della riga di comando di Azure.
Accedere quindi ad Azure usando uno dei diversi strumenti di sviluppo che possono essere usati per eseguire l'autenticazione nell'ambiente di sviluppo. L'account autenticato deve esistere anche nel gruppo Microsoft Entra creato e configurato in precedenza.
Gli sviluppatori che usano Visual Studio 2017 o versione successiva possono eseguire l'autenticazione usando il proprio account sviluppatore tramite l'IDE. Le app che usano DefaultAzureCredential o VisualStudioCredential possono individuare e usare questo account per autenticare le richieste di app durante l'esecuzione in locale. Questo account viene usato anche quando si pubblicano app direttamente da Visual Studio in Azure.
In Visual Studio passare a Opzioni strumenti> per aprire la finestra di dialogo 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.
Nella finestra visualizzata immettere le credenziali per l'account Azure desiderato e quindi confermare gli input.
Selezionare OK per chiudere la finestra di dialogo delle opzioni.
Gli sviluppatori che codificano all'esterno di un IDE possono anche usare l'interfaccia della riga di comando di Azure per l'autenticazione. Le app che usano DefaultAzureCredential
o AzureCliCredential possono quindi usare questo account per autenticare le richieste di app durante l'esecuzione in locale.
Per eseguire l'autenticazione con l'interfaccia della riga di comando di Azure, eseguire il az login
comando . In un sistema con un Web browser predefinito, l'interfaccia della riga di comando di Azure avvia il browser per autenticare l'utente.
az login
Per i sistemi senza un Web browser predefinito, il comando az login
usa il flusso di autenticazione del codice del dispositivo. L'utente può anche forzare Azure CLI a utilizzare il flusso di codice dispositivo anziché avviare un browser specificando l'argomento --use-device-code
.
az login --use-device-code
Gli sviluppatori che codificano all'esterno di un IDE possono anche usare l'interfaccia della riga di comando per sviluppatori di Azure per l'autenticazione. Le app che usano DefaultAzureCredential
o AzureDeveloperCliCredential possono quindi usare questo account per autenticare le richieste di app durante l'esecuzione in locale.
Per eseguire l'autenticazione con l'interfaccia della riga di comando per sviluppatori di Azure, eseguire il azd auth login
comando . In un sistema con un Web browser predefinito, l'interfaccia della riga di comando per sviluppatori di Azure avvia il browser per autenticare l'utente.
azd auth login
Per i sistemi senza un Web browser predefinito, azd auth login --use-device-code
usa il flusso di autenticazione del codice del dispositivo. L'utente può anche forzare l'interfaccia della riga di comando per sviluppatori di Azure a usare il flusso del codice del dispositivo anziché avviare un browser specificando l'argomento --use-device-code
.
azd auth login --use-device-code
Gli sviluppatori che codificano all'esterno di un IDE possono anche usare Azure PowerShell per l'autenticazione. Le app che usano DefaultAzureCredential
o AzurePowerShellCredential possono quindi usare questo account per autenticare le richieste di app durante l'esecuzione in locale.
Per eseguire l'autenticazione con Azure PowerShell, eseguire il comando Connect-AzAccount
. In un sistema con un Web browser predefinito e la versione 5.0.0 o successiva di Azure PowerShell, avvia il browser per autenticare l'utente.
Connect-AzAccount
Per i sistemi senza un Web browser predefinito, il comando Connect-AzAccount
usa il flusso di autenticazione del codice del dispositivo. L'utente può anche forzare Azure PowerShell a usare il flusso del codice del dispositivo anziché avviare un browser specificando l'argomento UseDeviceAuthentication
.
Connect-AzAccount -UseDeviceAuthentication
Eseguire l'autenticazione ai servizi di Azure dall'app
La libreria di identità di Azure fornisce varie credenziali , ossia implementazioni di TokenCredential
adattate al supporto di diversi scenari e flussi di autenticazione di Microsoft Entra. I passaggi successivi illustrano come usare DefaultAzureCredential quando si lavora con gli account utente in locale.
DefaultAzureCredential è una sequenza ordinata e predeterminata di meccanismi per l'autenticazione in Microsoft Entra ID. Ogni meccanismo di autenticazione è una classe derivata dalla classe TokenCredential ed è nota come 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 correttamente un token di accesso. In questo modo, l'app può usare credenziali diverse in ambienti diversi senza scrivere codice specifico dell'ambiente.
Per usare DefaultAzureCredential
, aggiungere il 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
Fare clic con il pulsante destro del mouse sul tuo progetto nella finestra di Esplora soluzioni di Visual Studio e selezionare Gestisci pacchetti NuGet. Cercare Azure.Identitye installare il pacchetto corrispondente. Ripetere questo processo per il pacchetto Microsoft.Extensions.Azure.
È possibile accedere ai servizi di Azure usando classi client specializzate dalle varie librerie client di Azure SDK. Queste classi e i tuoi servizi personalizzati devono essere registrati affinché possano essere accessibili tramite dependency injection in tutta l'app. In Program.cs
completare i passaggi seguenti per registrare una classe client e DefaultAzureCredential
:
- Includere i namespace
Azure.Identity
e Microsoft.Extensions.Azure
tramite direttive using
.
- Registrare il client del servizio di Azure utilizzando il corrispondente metodo di estensione con prefisso
Add
.
- Passa un'istanza di
DefaultAzureCredential
al metodo UseCredential
.
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Un'alternativa al metodo UseCredential
consiste nel fornire direttamente le credenziali al client del servizio:
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));