Autentisera Azure-värdbaserade appar till Azure-resurser med Azure SDK för JavaScript
När en app finns i Azure (med hjälp av en tjänst som Azure App Service, Azure Virtual Machines eller Azure Container Instances) är den rekommenderade metoden för att autentisera en app till Azure-resurser att använda en hanterad identitet.
En hanterad identitet tillhandahåller en identitet för din app så att appen ansluter till andra Azure-resurser utan att behöva använda en hemlighet (till exempel en anslutningssträng av nyckeln). Internt känner Azure till identiteten för din app och vilka resurser den tillåts ansluta till. Azure använder den här informationen för att automatiskt hämta Microsoft Entra-token för appen så att den kan ansluta till andra Azure-resurser, allt utan att du behöver hantera (skapa eller rotera) autentiseringshemligheterna.
Hanterade identitetstyper
Det finns två typer av hanterade identiteter:
- Systemtilldelade hanterade identiteter – enskild Azure-resurs
- Användartilldelade hanterade identiteter – flera Azure-resurser
Den här artikeln beskriver stegen för att aktivera och använda en systemtilldelad hanterad identitet för en app. Om du behöver använda en användartilldelad hanterad identitet kan du läsa artikeln Hantera användartilldelade hanterade identiteter för att se hur du skapar en användartilldelad hanterad identitet.
Systemtilldelade hanterade identiteter för en enskild resurs
Systemtilldelade hanterade identiteter tillhandahålls av och kopplas direkt till en Azure-resurs. När du aktiverar hanterad identitet på en Azure-resurs får du en systemtilldelad hanterad identitet för den resursen. Den är kopplad till Livscykeln för Azure-resursen. När resursen tas bort tar Azure automatiskt bort identiteten åt dig. Eftersom allt du behöver göra är att aktivera hanterad identitet för Den Azure-resurs som är värd för din kod, är detta den enklaste typen av hanterad identitet att använda.
Användartilldelade hanterade identiteter för flera resurser
Konceptuellt är den här identiteten en fristående Azure-resurs. Detta används oftast när din lösning har flera arbetsbelastningar som körs på flera Azure-resurser som alla behöver dela samma identitet och samma behörigheter. Om din lösning till exempel hade komponenter som kördes på flera Instanser av App Service och virtuella datorer och alla behövde åtkomst till samma uppsättning Azure-resurser skulle det vara meningsfullt att skapa och använda en användartilldelad hanterad identitet för dessa resurser.
1 – Systemtilldelad: Aktivera i värdbaserad app
Det första steget är att aktivera hanterad identitet på Den Azure-resurs som är värd för din app. Om du till exempel är värd för ett Django-program med Azure App Service måste du aktivera hanterad identitet för apptjänstens webbapp. Om du använder en virtuell dator som värd för din app gör du det möjligt för den virtuella datorn att använda hanterad identitet.
Du kan aktivera hanterad identitet som ska användas för en Azure-resurs med hjälp av antingen Azure Portal eller Azure CLI.
2 – Tilldela roller till den hanterade identiteten
Därefter måste du bestämma vilka roller (behörigheter) din app behöver och tilldela den hanterade identiteten till dessa roller i Azure. En hanterad identitet kan tilldelas roller i ett resurs-, resursgrupps- eller prenumerationsomfång. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång eftersom de flesta program grupperar alla sina Azure-resurser i en enda resursgrupp.
3 – Implementera DefaultAzureCredential i ditt program
Klassen DefaultAzureCredential
identifierar automatiskt att en hanterad identitet används och använder den hanterade identiteten för att autentisera till andra Azure-resurser. Som beskrivs i artikeln översikt över Azure SDK för JavaScript-autentisering stöder DefaultAzureCredential
du flera autentiseringsmetoder och avgör vilken autentiseringsmetod som används vid körning. På så sätt kan din app använda olika autentiseringsmetoder i olika miljöer utan att implementera miljöspecifik kod.
Lägg först till paketet @azure/identitet i ditt program.
npm install @azure/identity
För alla JavaScript-kod som skapar ett Azure SDK-klientobjekt i din app vill du sedan:
DefaultAzureCredential
Importera klassen från modulen@azure/identity
.- Skapa ett
DefaultAzureCredential
objekt. - Skicka objektet
DefaultAzureCredential
till Azure SDK-klientobjektkonstruktorn.
Ett exempel på detta visas i följande kodsegment.
// 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()
);
När koden ovan körs på din lokala arbetsstation under den lokala utvecklingen tittar SDK-metoden DefaultAzureCredential ()i miljövariablerna efter ett huvudnamn för programtjänsten eller i VS Code, Azure CLI eller Azure PowerShell för en uppsättning autentiseringsuppgifter för utvecklare, som kan användas för att autentisera appen till Azure-resurser under den lokala utvecklingen. På så sätt kan samma kod användas för att autentisera din app till Azure-resurser både under lokal utveckling och när den distribueras till Azure.