Azure Identity-klientbibliotek för JavaScript – version 4.2.0

Azure Identity-biblioteket tillhandahåller Microsoft Entra ID (tidigare Azure Active Directory) tokenautentisering via en uppsättning praktiska TokenCredential-implementeringar.

Exempel på olika autentiseringsuppgifter finns på sidan med Azure Identity-exempel.

Nyckellänkar:

Komma igång

Migrera från v1 till v2 av @azure/identity

Om du använder v1 av @azure/identityläser du migreringsguiden för att uppdatera till v2.

Miljöer som stöds för närvarande

  • LTS-versioner av Node.js
    • Observera: Om programmet körs på Node.js v8 eller lägre och du inte kan uppgradera din Node.js version till den senaste stabila versionen, fäster du beroendet @azure/identity på version 1.1.0.
  • De senaste versionerna av Safari, Chrome, Edge och Firefox.
    • Obs! Bland de olika autentiseringsuppgifter som exporteras i det här biblioteket InteractiveBrowserCredential är det enda som stöds i webbläsaren.

Mer information finns i vår supportprincip .

Installera paketet

Installera Azure Identity med npm:

npm install --save @azure/identity

Förutsättningar

När du ska använda @azure/identity

De autentiseringsklasser som exponeras av @azure/identity fokuserar på att tillhandahålla det enklaste sättet att autentisera Azure SDK-klienter lokalt, i utvecklingsmiljöer och i produktion. Vi strävar efter enkelhet och rimligt stöd för autentiseringsprotokollen för att täcka de flesta möjliga autentiseringsscenarier i Azure. Vi expanderar aktivt för att ta upp fler scenarier. En fullständig lista över de autentiseringsuppgifter som erbjuds finns i avsnittet Autentiseringsklasser .

Alla typer av autentiseringsuppgifter som tillhandahålls av @azure/identity stöds i Node.js. För webbläsare är den typ av autentiseringsuppgifter som ska användas för grundläggande autentiseringsscenarier InteractiveBrowserCredential .

De flesta typer av autentiseringsuppgifter som erbjuds av @azure/identity använder Microsoft Authentication Library for JavaScript (MSAL.js). Mer specifikt använder vi v2-MSAL.js bibliotek, som använder OAuth 2.0 Authorization Code Flow med PKCE och är OpenID-kompatibla. Även om @azure/identity fokuserar på enkelhet är MSAL.js bibliotek, till exempel @azure/msal-common, @azure/msal-node och @azure/msal-browser, utformade för att ge robust stöd för de autentiseringsprotokoll som Azure stöder.

När du ska använda något annat

@azure/identity Autentiseringstyperna är implementeringar av klassen @azure/core-authTokenCredential. I princip fungerar alla objekt med en getToken metod som uppfyller getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken | null> som en TokenCredential. Det innebär att utvecklare kan skriva sina egna typer av autentiseringsuppgifter för att stödja autentiseringsfall som inte omfattas av @azure/identity. Mer information finns i Anpassade autentiseringsuppgifter.

Även om våra typer av autentiseringsuppgifter stöder många avancerade fall kanske utvecklare vill ha fullständig kontroll över autentiseringsprotokollet. För det användningsfallet rekommenderar vi att du använder Microsoft Authentication Library för JavaScript (MSAL.js) direkt. Du kan läsa mer via följande länkar:

För avancerade autentiseringsarbetsflöden i webbläsaren har vi ett avsnitt där vi visar hur du använder biblioteket @azure/msal-browser direkt för att autentisera Azure SDK-klienter.

Autentisera klienten i utvecklingsmiljön

Vi rekommenderar att du använder autentisering med hanterad identitet eller tjänstens huvudnamn i produktionsprogrammet, men det är vanligt att en utvecklare använder sitt eget konto för att autentisera anrop till Azure-tjänster vid felsökning och körning av kod lokalt. Det finns flera utvecklarverktyg som kan användas för att utföra den här autentiseringen i utvecklingsmiljön.

Autentisera via Azure Developer CLI

Utvecklare som kodar utanför en IDE kan också använda [Azure Developer CLI][azure_developer_cli] för att autentisera. Program som använder DefaultAzureCredential eller kan sedan använda det här kontot för att autentisera AzureDeveloperCliCredential anrop i sina program när de körs lokalt.

Om du vill autentisera med [Azure Developer CLI][azure_developer_cli] kan användarna köra kommandot azd auth login. För användare som körs i ett system med en standardwebbläsare startar Azure Developer CLI webbläsaren för att autentisera användaren.

För system utan en standardwebbläsare azd auth login --use-device-code använder kommandot autentiseringsflödet för enhetskod.

Autentisera via Azure CLI

Program som använder AzureCliCredential, antingen direkt eller via DefaultAzureCredential, kan använda Azure CLI-kontot för att autentisera anrop i programmet när de körs lokalt.

Om du vill autentisera med Azure CLI-användarna kan du köra kommandot az login. För användare som körs i ett system med en standardwebbläsare startar Azure cli webbläsaren för att autentisera användaren.

Inloggning för Azure CLI-konto

För system utan en standardwebbläsare az login använder kommandot autentiseringsflödet för enhetskod. Användaren kan också tvinga Azure CLI att använda enhetskodflödet i stället för att starta en webbläsare genom att --use-device-code ange argumentet.

Inloggning med enhetskod för Azure CLI-konto

Autentisera via Azure PowerShell

Program som använder AzurePowerShellCredential, antingen direkt eller via DefaultAzureCredential, kan använda kontot som är anslutet till Azure PowerShell för att autentisera anrop i programmet när de körs lokalt.

Om du vill autentisera med Azure PowerShell kan användarna köra cmdletenConnect-AzAccount. Som standard startar ike Azure CLI Connect-AzAccount standardwebbläsaren för att autentisera ett användarkonto.

Azure PowerShell kontoinloggning

Om interaktiv autentisering inte kan stödjas i sessionen -UseDeviceAuthentication tvingar argumentet cmdleten att använda ett autentiseringsflöde för enhetskod i stället, ungefär som motsvarande alternativ i Azure CLI-autentiseringsuppgiften.

Autentisera via Visual Studio Code

Utvecklare som använder Visual Studio Code kan använda Azure-kontotillägget för att autentisera via redigeraren. Appar som använder VisualStudioCodeCredential kan sedan använda det här kontot för att autentisera anrop i appen när de körs lokalt.

Om du vill autentisera i Visual Studio Code kontrollerar du att Azure-kontotillägget är installerat. När du har installerat den öppnar du kommandopaletten och kör kommandot Azure: Sign In .

Använd dessutom plugin-paketet @azure/identity-vscode . Det här paketet tillhandahåller beroenden för VisualStudioCodeCredential och aktiverar det. Se Plugin-program.

Det är ett känt problem som VisualStudioCodeCredential inte fungerar med azure-kontotilläggsversioner som är nyare än 0.9.11. En långsiktig lösning på det här problemet pågår. Under tiden bör du överväga att autentisera via Azure CLI.

Autentisera klienten i webbläsare

För att autentisera InteractiveBrowserCredentialAzure SDK-klienter i webbläsare erbjuder vi , som kan anges för att använda omdirigering eller popup-fönster för att slutföra autentiseringsflödet. Du måste först skapa en Azure App registrering i Azure Portal för ditt webbprogram.

Viktiga begrepp

Om det här är första gången du använder @azure/identity eller Microsoft Entra ID läser du Använda @azure/identity med Microsoft Entra ID först. Det här dokumentet ger en djupare förståelse för plattformen och hur du konfigurerar ditt Azure-konto korrekt.

Merit

En autentiseringsuppgift är en klass som innehåller eller kan hämta de data som krävs för att en tjänstklient ska kunna autentisera begäranden. Tjänstklienter i Azure SDK accepterar autentiseringsuppgifter när de skapas. Tjänstklienter använder dessa autentiseringsuppgifter för att autentisera begäranden till tjänsten.

Azure Identity-biblioteket fokuserar på OAuth-autentisering med Microsoft Entra ID och erbjuder en mängd olika autentiseringsklasser som kan hämta en Microsoft Entra token för att autentisera tjänstbegäranden. Alla autentiseringsklasser i det här biblioteket är implementeringar av den abstrakta klassen TokenCredential , och alla av dem kan användas av för att konstruera tjänstklienter som kan autentisera med en TokenCredential.

Se Autentiseringsklasser.

StandardAzureCredential

DefaultAzureCredential Är lämpligt för de flesta scenarier där programmet är avsett att köras i Azure. Detta beror på att kombinerar autentiseringsuppgifter som ofta används för att autentisera när de distribueras med autentiseringsuppgifter som används för att autentisera DefaultAzureCredential i en utvecklingsmiljö.

DefaultAzureCredential Obs! är avsett att förenkla komma igång med SDK genom att hantera vanliga scenarier med rimliga standardbeteenden. Utvecklare som vill ha mer kontroll eller vars scenario inte hanteras av standardinställningarna bör använda andra typer av autentiseringsuppgifter.

Om den används från Node.js försöker den autentisera DefaultAzureCredential via följande mekanismer i ordning:

Standardflöde förAzureCredential-autentisering

  1. Miljö – kommer DefaultAzureCredential att läsa kontoinformation som anges via miljövariabler och använda den för att autentisera.
  2. Arbetsbelastningsidentitet – Om programmet distribueras till Azure Kubernetes Service med Hanterad identitet aktiverat autentiseras DefaultAzureCredential med det.
  3. Hanterad identitet – Om programmet distribueras till en Azure-värd med hanterad identitet aktiverad autentiseras DefaultAzureCredential med det kontot.
  4. Azure CLI – Om utvecklaren har autentiserat ett konto via Azure CLI-kommandot az login autentiseras DefaultAzureCredential med det kontot.
  5. Azure PowerShell – Om utvecklaren har autentiserats med kommandot Azure PowerShell modul Connect-AzAccount autentiseras DefaultAzureCredential med det kontot.
  6. Azure Developer CLI – Om utvecklaren har autentiserat ett konto via kommandot Azure Developer CLI azd auth login autentiseras DefaultAzureCredential med det kontot.

Fortsättningsprincip

Från och med version 3.3.0 DefaultAzureCredential försöker autentisera med alla autentiseringsuppgifter för utvecklare tills en lyckas, oavsett eventuella fel som tidigare autentiseringsuppgifter för utvecklare har uppstått. En utvecklarautentiseringsuppgift kan till exempel försöka hämta en token och misslyckas, så DefaultAzureCredential fortsätter till nästa autentiseringsuppgift i flödet. Autentiseringsuppgifter för distribuerade tjänster stoppar flödet med ett undantag som utlöses om de kan försöka hämta token, men inte får något.

På så sätt kan du prova alla autentiseringsuppgifter för utvecklare på datorn samtidigt som du har förutsägbart distribuerat beteende.

Obs! VisualStudioCodeCredential

På grund av ett känt problemVisualStudioCodeCredential har tagits bort från DefaultAzureCredential tokenkedjan. När problemet löses i en framtida version återställs den här ändringen.

Plugin-program

Azure Identity for JavaScript tillhandahåller ett plugin-API som gör att vi kan tillhandahålla vissa funktioner via separata plugin-paket. Paketet @azure/identity exporterar en toppnivåfunktion (useIdentityPlugin) som kan användas för att aktivera ett plugin-program. Vi tillhandahåller två plugin-paket:

  • @azure/identity-broker, som ger stöd för asynkron autentisering via en intern asynkron autentisering, till exempel Web Account Manager.
  • @azure/identity-cache-persistence, som tillhandahåller beständig cachelagring av token i Node.js med hjälp av ett internt säkert lagringssystem som tillhandahålls av operativsystemet. Med det här plugin-programmet kan cachelagrade värden sparas access_token mellan sessioner, vilket innebär att ett interaktivt inloggningsflöde inte behöver upprepas så länge en cachelagrad token är tillgänglig.

Exempel

Du hittar fler exempel på hur du använder olika autentiseringsuppgifter på sidan Exempel på Azure Identity

Autentisera med DefaultAzureCredential

Det här exemplet visar autentisering från KeyClientklientbiblioteket @azure/keyvault-keys med hjälp av DefaultAzureCredential.

// The default credential first checks environment variables for configuration as described above.
// If environment configuration is incomplete, it will try managed identity.

// Azure Key Vault service to use
import { KeyClient } from "@azure/keyvault-keys";

// Azure authentication library to access Azure Key Vault
import { DefaultAzureCredential } from "@azure/identity";

// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();

// Create authenticated client
const client = new KeyClient(vaultUrl, credential);

Ange en användartilldelad hanterad identitet med DefaultAzureCredential

Ett relativt vanligt scenario är att autentisera med hjälp av en användartilldelad hanterad identitet för en Azure-resurs. Utforska exemplet om att autentisera en användartilldelad hanterad identitet med DefaultAzureCredential för att se hur detta görs till en relativt enkel uppgift som kan konfigureras med hjälp av miljövariabler eller kod.

Definiera ett anpassat autentiseringsflöde med ChainedTokenCredential

DefaultAzureCredential Det är i allmänhet det snabbaste sättet att komma igång med att utveckla program för Azure, men mer avancerade användare kanske vill anpassa de autentiseringsuppgifter som beaktas vid autentisering. Gör ChainedTokenCredential det möjligt för användare att kombinera flera instanser av autentiseringsuppgifter för att definiera en anpassad kedja med autentiseringsuppgifter. Det här exemplet visar hur du skapar ett ChainedTokenCredential som försöker autentisera med hjälp av två olika konfigurerade instanser av ClientSecretCredential, för att sedan autentisera KeyClient från @azure/keyvault-keys:

import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity";

// When an access token is requested, the chain will try each
// credential in order, stopping when one provides a token
const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);
const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);

// The chain can be used anywhere a credential is required
import { KeyClient } from "@azure/keyvault-keys";
const client = new KeyClient(vaultUrl, credentialChain);

Stöd för hanterad identitet

Autentiseringen för hanterad identitet stöds antingen DefaultAzureCredential via klasserna eller ManagedIdentityCredential autentiseringsuppgifterna direkt för följande Azure-tjänster:

Exempel på hur du använder hanterad identitet för autentisering finns i exemplen.

Molnkonfiguration

Autentiseringsuppgifterna är standard för autentisering till Microsoft Entra slutpunkt för Azure Public Cloud. Om du vill komma åt resurser i andra moln, till exempel Azure Government eller ett privat moln, konfigurerar du autentiseringsuppgifter med authorityHost argumentet i konstruktorn. Gränssnittet AzureAuthorityHosts definierar myndigheter för välkända moln. För US Government-molnet kan du instansiera en autentiseringsuppgift på det här sättet:

import { AzureAuthorityHosts, ClientSecretCredential } from "@azure/identity";
const credential = new ClientSecretCredential(
  "<YOUR_TENANT_ID>",
  "<YOUR_CLIENT_ID>",
  "<YOUR_CLIENT_SECRET>",
  {
    authorityHost: AzureAuthorityHosts.AzureGovernment,
  }
);

Alla autentiseringsuppgifter kräver inte den här konfigurationen. Autentiseringsuppgifter som autentiseras via ett utvecklingsverktyg, till exempel AzureCliCredential, använder verktygets konfiguration. VisualStudioCodeCredential På samma sätt accepterar ett authorityHost argument men standardinställningen för den authorityHost matchande Visual Studio Code-inställningen Azure: Cloud.

Autentiseringsklasser

Autentisera Azure-värdbaserade program

Merit Användning Exempel
DefaultAzureCredential Ger en förenklad autentiseringsupplevelse för att snabbt börja utveckla program som körs i Azure. Exempel
ChainedTokenCredential Tillåter användare att definiera anpassade autentiseringsflöden som består av flera autentiseringsuppgifter. Exempel
EnvironmentCredential Autentiserar tjänstens huvudnamn eller användare via information om autentiseringsuppgifter som anges i miljövariabler. Exempel
ManagedIdentityCredential Autentiserar den hanterade identiteten för en Azure-resurs. Exempel
WorkloadIdentityCredential Stöder Microsoft Entra Workload ID på Kubernetes. Exempel

Autentisera tjänstens huvudnamn

Merit Användning Exempel Referens
ClientAssertionCredential Autentiserar ett huvudnamn för tjänsten med en signerad klientkontroll. Exempel Autentisering med tjänstens huvudnamn
ClientCertificateCredential Autentiserar ett huvudnamn för tjänsten med ett certifikat. Exempel Autentisering med tjänstens huvudnamn
ClientSecretCredential Autentiserar ett huvudnamn för tjänsten med hjälp av en hemlighet. Exempel Autentisering med tjänstens huvudnamn

Autentisera användare

Merit Användning Exempel Referens
AuthorizationCodeCredential Autentiserar en användare med en tidigare auktoriseringskod. Exempel OAuth2-autentiseringskod
DeviceCodeCredential Autentiserar en användare interaktivt på enheter med begränsat användargränssnitt. Exempel Autentisering av enhetskod
InteractiveBrowserCredential Autentiserar en användare interaktivt med standardsystemwebbläsaren. Läs mer om hur detta händer här. Exempel OAuth2-autentiseringskod
OnBehalfOfCredential Sprider den delegerade användaridentiteten och behörigheterna via begärandekedjan Autentisering för räkning
UsernamePasswordCredential Autentiserar en användare med användarnamn och lösenord. Exempel Autentisering av användarnamn och lösenord

Autentisera via utvecklingsverktyg

Merit Användning Exempel Referens
AzureCliCredential Autentisera i en utvecklingsmiljö med Azure CLI. Exempel Azure CLI-autentisering
AzureDeveloperCliCredential Autentisera i en utvecklingsmiljö med det aktiverade användaren eller tjänstens huvudnamn i Azure Developer CLI. Azure Developer CLI referens
AzurePowerShellCredential Autentisera i en utvecklingsmiljö med hjälp av Azure PowerShell. Exempel Azure PowerShell autentisering
VisualStudioCodeCredential Autentiseras när användaren är inloggad i Azure-kontotillägget för Visual Studio Code. VS Code Azure-kontotillägg

Miljövariabler

DefaultAzureCredential och EnvironmentCredential kan konfigureras med miljövariabler. Varje typ av autentisering kräver värden för specifika variabler.

Tjänstens huvudnamn med hemlighet

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra program
AZURE_TENANT_ID ID för programmets Microsoft Entra klientorganisation
AZURE_CLIENT_SECRET en av programmets klienthemligheter

Tjänstens huvudnamn med certifikat

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra program
AZURE_TENANT_ID ID för programmets Microsoft Entra klientorganisation
AZURE_CLIENT_CERTIFICATE_PATH sökväg till en PEM-kodad certifikatfil inklusive privat nyckel
AZURE_CLIENT_CERTIFICATE_PASSWORD lösenord för certifikatfilen, om det finns

Användarnamn och lösenord

Variabelnamn Värde
AZURE_CLIENT_ID ID för ett Microsoft Entra program
AZURE_TENANT_ID ID för programmets Microsoft Entra klientorganisation
AZURE_USERNAME ett användarnamn (vanligtvis en e-postadress)
AZURE_PASSWORD användarens lösenord

Konfigurationen görs i ovanstående ordning. Om det till exempel finns värden för en klienthemlighet och ett certifikat används klienthemligheten.

Kontinuerlig åtkomstutvärdering

Från och med version 3.3.0 är det möjligt att komma åt resurser som skyddas av utvärdering av kontinuerlig åtkomst (CAE) per begäran. Detta kan aktiveras med hjälp av API:etGetTokenOptions.enableCae(boolean). CAE stöds inte för autentiseringsuppgifter för utvecklare.

Cachelagring av token

Cachelagring av token är en funktion som tillhandahålls av Azure Identity-biblioteket som gör att appar kan:

  • Cachetoken i minnet (standard) och på disk (anmäl dig).
  • Förbättra motståndskraft och prestanda.
  • Minska antalet begäranden som görs till Microsoft Entra ID för att hämta åtkomsttoken.

Azure Identity-biblioteket erbjuder både minnesintern och beständig diskcachelagring. Mer information finns i dokumentationen för cachelagring av token.

Asynkron autentisering

En autentiseringskoordinator är ett program som körs på en användares dator och hanterar handskakningar för autentisering och tokenunderhåll för anslutna konton. För närvarande stöds endast Windows Web Account Manager (WAM). Använd paketet för @azure/identity-broker att aktivera support. Mer information om hur du autentiserar med WAM finns i dokumentationen för plugin-programmet broker.

Felsökning

Mer information om felsökning finns i felsökningsguiden.

Nästa steg

Läs dokumentationen

API-dokumentation för det här biblioteket finns på vår dokumentationswebbplats.

Stöd för klientbibliotek

Klient- och hanteringsbibliotek som visas på sidan azure SDK-versioner som stöder Microsoft Entra autentisering accepterar autentiseringsuppgifter från det här biblioteket. Läs mer om hur du använder dessa bibliotek i deras dokumentation, som är länkad från versionssidan.

Kända problem

Azure AD B2C-stöd

Det här biblioteket stöder inte Azure AD B2C-tjänsten.

Andra öppna problem finns i bibliotekets GitHub-lagringsplats.

Ge feedback

Om du stöter på buggar eller har förslag kan du öppna ett problem.

Bidra

Om du vill bidra till det här biblioteket kan du läsa bidragsguiden för att lära dig mer om hur du skapar och testar koden.

Visningar