Eseguire l'autenticazione alle risorse di Azure dalle app JavaScript locali

Le app in esecuzione all'esterno di Azure (ad esempio in locale o in un data center di terze parti) devono usare un'entità servizio dell'applicazione per eseguire l'autenticazione in Azure quando accedono alle risorse di Azure. Gli oggetti entità servizio dell'applicazione vengono creati tramite il processo di registrazione delle app in Azure. Quando viene creata un'entità servizio dell'applicazione, vengono generati un ID client e un segreto client per l'app. L'ID client, il segreto client e l'ID tenant vengono archiviati nelle variabili di ambiente in modo che Azure SDK per JavaScript usi le variabili di ambiente per autenticare l'app in Azure in fase di esecuzione.

È necessario creare una registrazione dell'app diversa per ogni ambiente (ad esempio test, fase, produzione) in cui è in esecuzione l'app. In questo modo è possibile configurare le autorizzazioni delle risorse specifiche dell'ambiente per ogni entità servizio e assicurarsi che un'app distribuita in un ambiente non parli con le risorse di Azure che fanno parte di un altro ambiente.

1 - Registrare l'applicazione in Azure

Un'app può essere registrata con Azure usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Accedere al portale di Azure e seguire la procedura seguente.

Istruzioni Schermata
Nel portale di Azure:
  1. Immettere registrazioni app nella barra di ricerca nella parte superiore del portale di Azure.
  2. Selezionare l'elemento etichettato Registrazioni app sotto l'intestazione Servizi nel menu visualizzato sotto la barra di ricerca.
A screenshot showing how to use the top search bar in the Azure portal to find and navigate to the App registrations page.
Nella pagina registrazioni app, selezionare + Nuova registrazione. A screenshot showing the location of the New registration button in the App registrations page.
Nella pagina Registrare un'applicazione, compilare il modulo come segue.
  1. Nome → Immettere un nome per la registrazione app in Azure. È consigliabile che questo nome includa il nome dell'app e l'ambiente (test, prod) per il quale è stata eseguita la registrazione dell'app.
  2. Tipi di account supportatiAccount solo in questa directory organizzativa.
Selezionare Registra per registrare l'app e creare l'entità servizio dell'applicazione.
A screenshot to fill out Register by giving the app a name and specifying supported account types as accounts in this organizational directory only.
Nella pagina Registrazione app per l'app:
  1. ID applicazione (client) → Questo è l'ID app che verrà usato dall'app per accedere ad Azure durante lo sviluppo locale. Copiare questo valore in una posizione temporanea in un editor di testo perché sarà necessario in un passaggio futuro.
  2. ID directory (tenant) → Questo valore sarà necessario anche per l'app quando esegue l'autenticazione in Azure. Copiare questo valore in una posizione temporanea in un editor di testo, in quanto sarà necessario in un passaggio futuro.
  3. Credenziali client → È necessario impostare le credenziali client per l'app prima che l'app possa eseguire l'autenticazione in Azure e usare i servizi di Azure. Selezionare Aggiungi un certificato o un segreto per aggiungere le credenziali per l'app.
A screenshot of the App registration after completion. This screenshot shows the application and tenant IDs, which will be needed in a future step.
Nella pagina Certificati e segreti, selezionare + Nuovo segreto client. A screenshot showing the location of the link to use to create a new client secret on the certificates and secrets page.
La finestra di dialogo Aggiungi un segreto client verrà visualizzata dal lato destro della pagina. In questa finestra di dialogo:
  1. Descrizione → Immettere un valore Corrente.
  2. Scade → Selezionare un valore di 24 mesi.
Selezionare Aggiungere per aggiungere il segreto.

IMPORTANTE: impostare un promemoria nel calendario prima della data di scadenza del segreto. In questo modo, è possibile aggiungere un nuovo segreto prima e aggiornare le app prima della scadenza di questo segreto, evitando un'interruzione del servizio nell'app.
A screenshot showing the page where a new client secret is added for the application service principal created by the app registration process.
Nella pagina Certificati e segreti viene visualizzato il valore del segreto client.

Copiare questo valore in una posizione temporanea in un editor di testo perché è necessario in un passaggio futuro.

IMPORTANTE: questa è l'unica volta che verrà visualizzato questo valore. Dopo aver lasciato o aggiornato questa pagina, non sarà più possibile visualizzare questo valore. È possibile aggiungere un altro segreto client senza invalidare il segreto client, ma questo valore non verrà visualizzato di nuovo.
A screenshot showing the page with the generated client secret.

2 - Assegnare ruoli all'entità servizio dell'applicazione

Successivamente, è necessario determinare i ruoli (autorizzazioni) necessari per l'app in base alle risorse e assegnare tali ruoli all'app. I ruoli possono essere assegnati a una risorsa, a gruppo di risorse o a una sottoscrizione. Questo esempio illustra come assegnare ruoli per l'entità servizio nell'ambito del gruppo di risorse, perché la maggior parte delle applicazioni raggruppa tutte le risorse di Azure in un singolo 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 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
Viene visualizzata una finestra di dialogo sul lato destro del portale di Azure.
A screenshot showing the radio button to select to assign a role to a Microsoft Entra 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 dell'entità servizio creata per l'app per filtrare l'elenco.
  2. Selezionare l'entità servizio associata all'applicazione.
Selezionare Seleziona nella parte inferiore della finestra di dialogo per continuare.
A screenshot showing how to filter for and select the Microsoft Entra group for the application in the Select members dialog box.
L'entità servizio viene 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 - Configurare le variabili di ambiente per l'applicazione

È necessario impostare le AZURE_CLIENT_IDvariabili di ambiente , AZURE_TENANT_IDe AZURE_CLIENT_SECRET per il processo che esegue l'app JavaScript per rendere le credenziali dell'entità servizio dell'applicazione disponibili per l'app in fase di esecuzione. L'oggetto DefaultAzureCredential cerca le informazioni sull'entità servizio in queste variabili di ambiente.

AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>

4 - Implementare DefaultAzureCredential nell'applicazione

Per autenticare gli oggetti client di Azure SDK in Azure, l'applicazione deve usare la DefaultAzureCredential classe dal pacchetto di @azure/identità .

Aggiungere prima di tutto il pacchetto di @azure/identità all'applicazione.

npm install @azure/identity

Successivamente, per qualsiasi codice JavaScript che crea un oggetto client azure SDK nell'app, è necessario:

  1. Importare la DefaultAzureCredential classe dal @azure/identity modulo.
  2. Creare un oggetto DefaultAzureCredential.
  3. Passare l'oggetto al costruttore dell'oggetto DefaultAzureCredential client di Azure SDK.

Un esempio è illustrato nel segmento di codice seguente.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Quando il codice precedente crea un'istanza dell'oggetto DefaultAzureCredential , DefaultAzureCredential legge le variabili AZURE_SUBSCRIPTION_IDdi ambiente , AZURE_TENANT_ID, AZURE_CLIENT_IDe AZURE_CLIENT_SECRET per le informazioni sull'entità servizio dell'applicazione con cui connettersi ad Azure.