Autentiseringskedjor i Azure Identity-klientbiblioteket för JavaScript
Azure Identity-klientbiblioteket innehåller autentiseringsuppgifter som är offentliga klasser som implementerar Azure Core-bibliotekets TokenCredential--gränssnitt. En autentiseringsuppgift representerar ett distinkt autentiseringsflöde för att hämta en åtkomsttoken från Microsoft Entra-ID. Dessa autentiseringsuppgifter kan väljas individuellt eller sammanlänkas för att bilda en ordnad sekvens med autentiseringsmekanismer som ska försökas.
- Individuella autentiseringsuppgifter ge hastighet och säkerhet. Om de misslyckas vet du att autentiseringsuppgifterna inte autentiserades.
- Chains ger reservlösningar. När autentiseringsuppgifterna inte kan autentiseras görs nästa autentiseringsuppgift i kedjan.
Utforma dina autentiseringsflöden
När du använder Azure SDK-klientbibliotek är det första steget att autentisera till Azure. Det finns många alternativ för att autentisera, till exempel verktyg och IDE:er som används i utvecklingsteamet, automatiseringsarbetsflöden som testning och CI/CD och värdplattformar som Azure App Service.
Välj bland följande vanliga förlopp för ditt autentiseringsflöde:
Använd
DefaultAzureCredential
för team vars utvecklare använder olika IDE:er och CLIs för att autentisera till Azure. Detta ger största möjliga flexibilitet. Den här flexibiliteten tillhandahålls på bekostnad av prestanda för att verifiera autentiseringsuppgifterna i kedjan tills en lyckas.- Övergången från autentiseringsuppgifter till autentiseringsuppgifter väljs för din räkning baserat på den gällande miljön.
- Om du vill ta reda på vilka autentiseringsuppgifter som har valts aktiverar du felsökning.
Använd
ChainedTokenCredential
för team som har ett strikt och begränsat urval av verktyg. Till exempel autentiserar de alla i och använder samma IDE eller CLI. Detta gör att teamet kan välja exakta autentiseringsuppgifter och den ordning som fortfarande ger flexibilitet men till en lägre prestandakostnad.- Du väljer reservvägen mellan autentiseringsuppgifter, oavsett vilken miljö den körs i.
- Om du vill ta reda på vilka autentiseringsuppgifter som har valts aktiverar du felsökning.
För team med säkerhet om autentiseringsuppgifter i alla miljöer kan du med en kontrollflödesinstrukation som if/else veta vilka autentiseringsuppgifter som valdes i varje miljö.
- Det finns ingen återställning till en annan typ av autentiseringsuppgifter.
- Du behöver inte felsöka för att avgöra vilka autentiseringsuppgifter som valdes eftersom den har angetts.
Så här fungerar en länkad autentiseringsuppgift
Vid körning försöker en autentiseringskedja autentisera med sekvensens första autentiseringsuppgifter. Om det inte går att hämta en åtkomsttoken med den nuvarande autentiseringsuppgiften, försöks nästa autentiseringsuppgift i sekvensen tills en åtkomsttoken har hämtats. Följande sekvensdiagram illustrerar det här beteendet:
Använd DefaultAzureCredential för flexibilitet
DefaultAzureCredential är en åsiktsbaserad, förkonfigurerad kedja av autentiseringsuppgifter. Den är utformad för att stödja många miljöer, tillsammans med de vanligaste autentiseringsflödena och utvecklarverktygen. I grafisk form ser den underliggande kedjan ut så här:
I vilken ordning DefaultAzureCredential
försök till autentiseringsuppgifter följer.
Beställning | Behörighet | Beskrivning |
---|---|---|
1 | Miljö | Läser en samling miljövariabler för att avgöra om ett programtjänsthuvudnamn (programanvändare) har konfigurerats för appen. I så fall använder DefaultAzureCredential 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. |
2 | Arbetsbelastningsidentitet | Om appen distribueras till en Azure-värd med aktiverad Workload Identity, autentiserar du det kontot. |
3 | hanterad identitet | Om appen distribueras till en Azure-värd med hanterad identitet aktiverad autentiserar du appen till Azure med hjälp av den hanterade identiteten. |
4 | Azure CLI- | Om utvecklaren autentiserades till Azure med hjälp av Azure CLI:s az login -kommando autentiserar du appen till Azure med samma konto. |
5 | Azure PowerShell | Om utvecklaren autentiserade till Azure med hjälp av Azure PowerShells Connect-AzAccount cmdlet autentiserar du appen till Azure med samma konto. |
6 | Azure Developer CLI | Om utvecklaren autentiserade till Azure med hjälp av Azure Developer CLI:s azd auth login -kommando autentiserar du med det kontot. |
I den enklaste formen kan du använda den parameterlösa versionen av DefaultAzureCredential
på följande sätt:
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
// Acquire a credential object
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(
"https://<my_account_name>.blob.core.windows.net",
credential
);
Autentiseringsuppgifter är globala för miljön
DefaultAzureCredential
söker efter förekomsten av vissa miljövariabler. Det är möjligt att någon kan lägga till eller ändra dessa miljövariabler på systemnivå på värddatorn. Dessa ändringar gäller globalt och ändrar därför beteendet för DefaultAzureCredential
vid körning i alla appar som körs på den datorn.
Använd ChainedTokenCredential för kornighet
ChainedTokenCredential är en tom kedja där du lägger till autentiseringsuppgifter som passar appens behov. I följande exempel läggs till exempel en ManagedIdentityCredential
instans och sedan en AzureCliCredential
instans.
import {
ChainedTokenCredential,
ManagedIdentityCredential,
AzureCliCredential
} from "@azure/identity";
const credential = new ChainedTokenCredential(
new ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
new AzureCliCredential()
);
Föregående kodexempel skapar en anpassad autentiseringskedja som består av två autentiseringsuppgifter. Den variant av den användartilldelade hanterade identiteten som gäller för ManagedIdentityCredential
försöks först, följt av AzureCliCredential
, om det behövs. I grafisk form ser kedjan ut så här:
Tips
Optimera autentiseringsordningen för din produktionsmiljöför bättre prestanda. Autentiseringsuppgifter som är avsedda att användas i den lokala utvecklingsmiljön bör läggas till sist.
Felsöka en länkad autentiseringsuppgift
Om du vill felsöka en autentiseringskedja aktiverar du Azure SDK-loggning.