Condividi tramite


Come autenticare le app JavaScript nei servizi di Azure usando la libreria di identità di Azure

Quando un'applicazione deve accedere a una risorsa di Azure, ad esempio Archiviazione, Key Vault o Servizi cognitivi, l'applicazione deve essere autenticata in Azure. Questo vale per tutte le applicazioni, sia distribuite in Azure, distribuite in locale o in fase di sviluppo in una workstation per sviluppatori locale. Questo articolo descrive gli approcci consigliati per autenticare un'app in Azure quando si usa Azure SDK per JavaScript.

L'approccio consigliato è usare l'autenticazione basata su token , anziché le stringhe di connessione o le chiavi, per autenticarsi alle risorse di Azure. La libreria di identità di Azure fornisce l'autenticazione basata su token e consente alle app di eseguire facilmente l'autenticazione alle risorse di Azure, indipendentemente dal fatto che l'app sia in fase di sviluppo locale, distribuita in Azure o distribuita in un server locale.

Il tipo specifico di autenticazione basata su token che un'app deve usare per eseguire l'autenticazione alle risorse di Azure dipende dalla posizione in cui è in esecuzione l'app ed è illustrata nel diagramma seguente.

Ambiente Autenticazione
locale Quando uno sviluppatore esegue un'app durante lo sviluppo locale; l'app può eseguire l'autenticazione in Azure usando un'entità del servizio applicativo per lo sviluppo locale o usando le credenziali di Azure dello sviluppatore. Ognuna di queste opzioni è discussa in modo più dettagliato nella sezione autenticazione durante lo sviluppo locale.
azzurro Quando un'app è ospitata in Azure: l'app deve eseguire l'autenticazione alle risorse di Azure usando un'identità gestita. Questa opzione è illustrata in modo più dettagliato di seguito nella sezione autenticazione negli ambienti del server.
In sede Quando un'app è ospitata e distribuita in locale, l'app deve autenticarsi alle risorse di Azure usando un principal del servizio applicativo. Di seguito, questa opzione è illustrata in modo più dettagliato nella sezione autenticazione negli ambienti server.

Diagramma che mostra le strategie di autenticazione basate su token consigliate per un'app a seconda della posizione in cui è in esecuzione.

Vantaggi dell'autenticazione basata su token

Quando si creano app per Azure, è fortemente consigliato utilizzare l'autenticazione basata su token anziché segreti (stringhe di connessione o chiavi). L'autenticazione basata su token viene fornita con DefaultAzureCredential.

Autenticazione basata su token Segreti (stringhe di connessione e chiavi)
Principio dei privilegi minimi, stabilire le autorizzazioni specifiche necessarie per l'app nella risorsa di Azure. Una stringa di connessione o una chiave concede diritti completi alla risorsa di Azure.
Non esiste alcun segreto dell'applicazione da archiviare. Deve archiviare e ruotare i segreti nell'impostazione dell'app o nella variabile di ambiente.
La libreria di identità di Azure gestisce automaticamente i token sullo sfondo. Questo rende l'uso dell'autenticazione basata su token facile quanto l'uso di una stringa di connessione. I segreti non vengono gestiti.

L'uso di stringhe di connessione deve essere limitato alle app di verifica iniziali o ai prototipi di sviluppo che non accedono a dati sensibili o di produzione. In caso contrario, le classi di autenticazione basate su token disponibili nella libreria di identità di Azure devono essere sempre preferite quando si esegue l'autenticazione alle risorse di Azure.

Usare la libreria seguente:

DefaultAzureCredential (Credenziali Predefinite di Azure)

La DefaultAzureCredential classe fornita dalla libreria di identità di Azure consente alle app di usare metodi di autenticazione diversi a seconda dell'ambiente in cui viene eseguita. Questo comportamento consente alle app di essere promosse dallo sviluppo locale agli ambienti di test all'ambiente di produzione senza modifiche al codice. Si configura il metodo di autenticazione appropriato per ogni ambiente e DefaultAzureCredential rileverà e userà automaticamente tale metodo di autenticazione. L'uso di DefaultAzureCredential deve essere preferito rispetto alla codifica manuale della logica condizionale o dei flag di funzionalità per l'uso di metodi di autenticazione diversi in ambienti diversi.

I dettagli sull'uso di DefaultAzureCredential sono disponibili in Usare DefaultAzureCredential in un'applicazione.

Autenticazione negli ambienti server

Quando si ospita in un ambiente server, a ogni applicazione deve essere assegnata un'identità dell'applicazione univoca per ogni ambiente. In Azure, un'identità dell'app è rappresentata da un'entità servizio , un tipo speciale di entità di sicurezza destinato a identificare e autenticare le app in Azure. Il tipo di principale del servizio da utilizzare per la tua app dipende da dove l'app è in esecuzione.

Autenticazione durante lo sviluppo locale

Quando un'applicazione viene eseguita nella workstation di uno sviluppatore durante lo sviluppo locale, l'ambiente locale deve comunque eseguire l'autenticazione a tutti i servizi di Azure usati dall'app.

Usare DefaultAzureCredential in un'applicazione

DefaultAzureCredential è una sequenza ordinata di meccanismi con preferenze definite 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, aggiungi il pacchetto @azure/identity all'applicazione.

npm install @azure/identity

L'esempio di codice seguente illustra quindi come creare un'istanza di un oggetto DefaultAzureCredential e usarlo con una classe client del servizio Azure SDK; in questo caso, un BlobServiceClient usato per accedere al blob di archiviazione di Azure.

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()
);

DefaultAzureCredential rileverà automaticamente il meccanismo di autenticazione configurato per l'app e otterrà i token necessari per autenticare l'app in Azure. Se un'applicazione usa più client SDK, è possibile usare lo stesso oggetto credenziale con ogni oggetto client SDK.