Autentisera JavaScript-appar till Azure-tjänster med hjälp av Azure SDK för JavaScript

När ett program behöver åtkomst till en Azure-resurs (till exempel Storage, Key Vault eller Cognitive Services) måste programmet autentiseras till Azure. Detta gäller för alla program, oavsett om de distribueras till Azure, distribueras lokalt eller under utveckling på en lokal arbetsstation för utvecklare. Den här artikeln beskriver de rekommenderade metoderna för att autentisera en app till Azure när du använder Azure SDK för JavaScript.

Den rekommenderade processen är att låta dina appar använda tokenbaserad autentisering i stället för anslutningssträng eller nycklar när de autentiseras mot Azure-resurser. Azure SDK tillhandahåller tokenbaserad autentisering och gör att appar smidigt kan autentisera till Azure-resurser oavsett om appen är i lokal utveckling, distribueras till Azure eller distribueras till en lokal server.

Den specifika typen av tokenbaserad autentisering som en app ska använda för att autentisera till Azure-resurser beror på var appen körs och visas i följande diagram.

Environment Autentisering
Lokala När en utvecklare kör en app under lokal utveckling – Appen kan autentisera till Azure med antingen ett huvudnamn för programtjänsten för lokal utveckling eller med hjälp av utvecklarens Azure-autentiseringsuppgifter. Vart och ett av dessa alternativ beskrivs mer detaljerat i avsnittet autentisering under lokal utveckling.
Azure När en app finns i Azure – Appen bör autentiseras mot Azure-resurser med hjälp av en hanterad identitet. Det här alternativet beskrivs mer detaljerat nedan i avsnittet autentisering i servermiljöer.
Lokal När en app hanteras och distribueras lokalt – Appen bör autentiseras mot Azure-resurser med hjälp av ett huvudnamn för programtjänsten. Det här alternativet beskrivs mer detaljerat nedan i avsnittet autentisering i servermiljöer.

Ett diagram som visar de rekommenderade tokenbaserade autentiseringsstrategierna för en app beroende på var den körs.

Fördelar med tokenbaserad autentisering

När du skapar appar för Azure rekommenderas tokenbaserad autentisering starkt för hemligheter (anslutningssträng eller nycklar). Tokenbaserad autentisering tillhandahålls med DefaultAzureCredential.

Tokenbaserad autentisering Hemligheter (anslutningssträng och nycklar)
Principen om minsta behörighet upprättar de specifika behörigheter som krävs av appen på Azure-resursen. En anslutningssträng eller nyckel ger azure-resursen fullständiga rättigheter.
Det finns ingen programhemlighet att lagra. Måste lagra och rotera hemligheter i appinställningen eller miljövariabeln.
Azure Identity SDK hanterar token åt dig i bakgrunden. Detta gör det enkelt att använda tokenbaserad autentisering som en anslutningssträng. Hemligheter hanteras inte.

Användning av anslutningssträng bör begränsas till inledande konceptbevisappar eller utvecklingsprototyper som inte har åtkomst till produktionsdata eller känsliga data. Annars bör de tokenbaserade autentiseringsklasserna som är tillgängliga i Azure SDK alltid föredras när du autentiserar till Azure-resurser.

Använd följande SDK:

StandardAzureCredential

Med Azure SDK DefaultAzureCredential-metoden kan appar använda olika autentiseringsmetoder beroende på vilken miljö de körs i. Detta gör att appar kan distribueras i lokala miljöer, test- och produktionsmiljöer utan kodändringar. Du konfigurerar lämplig autentiseringsmetod för varje miljö och DefaultAzureCredential identifierar och använder autentiseringsmetoden automatiskt. Användning av DefaultAzureCredential är att föredra framför att manuellt koda villkorslogik eller funktionsflaggor för att använda olika autentiseringsmetoder i olika miljöer.

Information om hur du använder klassen DefaultAzureCredential beskrivs senare i den här artikeln i avsnittet Använda DefaultAzureCredential i ett program.

Autentisering i servermiljöer

När du är värd för en servermiljö bör varje program tilldelas en unik programidentitet per miljö. I Azure representeras en appidentitet av ett huvudnamn för tjänsten, en särskild typ av säkerhetsobjekt som är avsett att identifiera och autentisera appar till Azure. Vilken typ av tjänsthuvudnamn som ska användas för din app beror på var appen körs.

Autentisering under lokal utveckling

När ett program körs på en utvecklares arbetsstation under lokal utveckling måste den lokala miljön fortfarande autentiseras mot alla Azure-tjänster som används av appen.

Använda DefaultAzureCredential i ett program

Om du vill använda DefaultAzureCredential i en JavaScript-app lägger du till paketet @azure/identity i ditt program.

npm install @azure/identity

I följande kodexempel visas sedan hur du instansierar ett DefaultAzureCredential objekt och använder det med en Azure SDK-klientklass, i det här fallet en BlobServiceClient som används för att komma åt Blob Storage.

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

DefaultAzureCredential identifierar automatiskt den autentiseringsmekanism som konfigurerats för appen och hämtar nödvändiga token för att autentisera appen till Azure. Om ett program använder mer än en SDK-klient kan samma autentiseringsobjekt användas med varje SDK-klientobjekt.

Sekvens med val av autentiseringsmetoder när du använder DefaultAzureCredential

Implementerar internt DefaultAzureCredential en kedja med att välja autentiseringsprovidrar för att autentisera program till Azure-resurser. Varje autentiseringsprovider kan identifiera om autentiseringsuppgifter av den typen har konfigurerats för appen. DefaultAzureCredential kontrollerar varje provider i ordning och använder autentiseringsuppgifterna från den första providern som har konfigurerat autentiseringsuppgifter.

Om du har konfigurerat fler än en autentiseringsuppgift är det viktigt att hitta autentiseringsuppgifterna via kedjan.

Den ordning som DefaultAzureCredential söker efter autentiseringsuppgifter för JavaScript visas i diagrammet och tabellen nedan.

Ett diagram som visar sekvensen där DefaultAzureCredential kontrollerar vilken autentiseringskälla som har konfigurerats för ett program.

Det finns två sökvägar:

  • Distribuerad tjänst (Azure eller lokalt): sekvensen börjar med miljövariablerna, sedan den hanterade identiteten och sedan resten av platserna för en autentiseringsuppgift (Visual Studio Code, Azure CLI, Azure PowerShell).
  • Utvecklarens lokala miljö: Den lokala utvecklararbetsstationens kedja börjar med Visual Studio Code-inloggade Azure-användare, som visas i det nedre fältet i IDE och sedan går vidare till Azure CLI och sedan Azure PowerShell. Det är viktigt att du förstår om du har konfigurerat dina lokala miljövariabler, antingen för hela miljön eller för ett projekts virtuella miljö (till exempel med DOTENV), så åsidosätter dessa variabler Visual Studio Code –> Azure CLI –> PowerShell-kedjan eftersom de är den första autentiseringsuppgiften som kontrolleras i kedjan.
Typ av autentiseringsuppgifter beskrivning
Environment DefaultAzureCredential läser en uppsättning miljövariabler för att avgöra om ett programtjänsthuvudnamn (programanvändare) har angetts för appen. I så fall DefaultAzureCredential använder du dessa värden för att autentisera appen till Azure.

Den här metoden används oftast i servermiljöer men kan också användas när du utvecklar lokalt.
Hanterad identitet Om programmet distribueras till en Azure-värd med hanterad identitet aktiverad DefaultAzureCredential autentiserar appen till Azure med den hanterade identiteten. Autentisering med hjälp av en hanterad identitet beskrivs i avsnittet Autentisering i servermiljöer i det här dokumentet.

Den här metoden är endast tillgänglig när ett program finns i Azure med hjälp av en hanterad identitetsaktiverad tjänst.
Visual Studio-koden Om utvecklaren har autentiserats till Azure med hjälp av plugin-programmet DefaultAzureCredential Visual Studio Code Azure-konto autentiserar du appen till Azure med samma konto.
Azure CLI Om en utvecklare har autentiserats az login till Azure med hjälp av kommandot i Azure CLI autentiserar DefaultAzureCredential appen till Azure med samma konto.
Azure PowerShell Om en utvecklare har autentiserats till Azure med hjälp av cmdleten Connect-AzAccount från Azure PowerShell autentiserar DefaultAzureCredential appen till Azure med samma konto.
Interaktivt Om det är aktiverat autentiserar DefaultAzureCredential utvecklaren interaktivt via det aktuella systemets standardwebbläsare. Det här alternativet är inaktiverat som standard.