Dela via


Autentisera JavaScript-appar med Azure-värd till Azure-resurser med hjälp av Azure Identity-biblioteket

När en app finns i Azure (med hjälp av en tjänst som Azure App Service, Azure Functions eller Azure Container Apps) kan du använda en hanterad identitet för att på ett säkert sätt autentisera din app till Azure-resurser.

En hanterad identitet tillhandahåller en identitet för din app, så att den kan ansluta till andra Azure-resurser utan att behöva använda en hemlighet (till exempel en anslutningssträng eller nyckel). Internt identifierar Azure identiteten för din app och vet vilka resurser appen har behörighet att komma åt. Azure använder den här informationen för att automatiskt hämta Microsoft Entra-token för appen, vilket gör att den kan ansluta till andra Azure-resurser utan att du behöver hantera (skapa eller rotera) autentiseringshemligheter.

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 hanterade identiteten ä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 den här identitetstypen den enklaste typen av hanterad identitet att använda.

Användartilldelade hanterade identiteter för flera resurser

En användartilldelad hanterad identitet är en fristående Azure-resurs. Den här identitetstypen 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. Anta till exempel att din lösning innehåller program som körs på flera Instanser av App Service och virtuella datorer. Alla program behöver åtkomst till samma uppsättning Azure-resurser. Att skapa och använda en användartilldelad hanterad identitet för dessa resurser är det bästa designvalet.

1 – Aktivera systemtilldelad hanterad identitet 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 Express.js program med hjälp av Azure App Service måste du aktivera hanterad identitet för webbappen för Azure App Service. 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.

Instruktioner Skärmbild
Gå till resursen som är värd för programkoden i Azure Portal.

Du kan till exempel skriva namnet på resursen i sökrutan överst på sidan och navigera till den genom att välja den i dialogrutan.
En skärmbild som visar hur du använder det översta sökfältet i Azure Portal för att hitta och navigera till en resurs i Azure.
På sidan för resursen väljer du menyalternativet Identitet på den vänstra menyn.

Alla Azure-resurser som kan stödja hanterad identitet har ett menyalternativ för identitet även om menyns layout kan variera något.
En skärmbild som visar platsen för menyalternativet Identitet i den vänstra menyn för en Azure-resurs.
På identitetssidan:
  1. Ändra skjutreglaget Status till .
  2. Välj Spara.
En bekräftelsedialogruta verifierar att du vill aktivera hanterad identitet för din tjänst. Svara Ja för att aktivera hanterad identitet för Azure-resursen.
En skärmbild som visar hur du aktiverar hanterad identitet för en Azure-resurs på resursens identitetssida.

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.

Instruktioner Skärmbild
Leta upp resursgruppen för ditt program genom att söka efter resursgruppens namn med hjälp av sökrutan överst i Azure Portal.

Gå till resursgruppen genom att välja resursgruppens namn under rubriken Resursgrupper i dialogrutan.
En skärmbild som visar hur du använder det översta sökfältet i Azure Portal för att hitta och navigera till en resursgrupp i Azure.
På sidan för resursgruppen väljer du Åtkomstkontroll (IAM) på den vänstra menyn. En skärmbild som visar platsen för menyalternativet Åtkomstkontroll (I A M ) i den vänstra menyn i en Azure-resursgrupp.
På sidan Åtkomstkontroll (IAM):
  1. Välj fliken Rolltilldelningar.
  2. Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning från den resulterande nedrullningsbara menyn.
En skärmbild som visar hur du navigerar till fliken rolltilldelningar och platsen för knappen som används för att lägga till rolltilldelningar i en resursgrupp.
sidan Lägg till rolltilldelning visas alla roller som kan tilldelas för resursgruppen.
  1. Använd sökrutan för att filtrera listan till en mer hanterbar storlek. Det här exemplet visar hur du filtrerar efter Storage Blob-roller.
  2. Välj den roll du vill tilldela.
    Välj Nästa för att gå till nästa skärm.
En skärmbild som visar hur du filtrerar och väljer rolltilldelningar som ska läggas till i resursgruppen.
På nästa sida För att lägga till rolltilldelning kan du ange vilken användare som ska tilldela rollen till.
  1. Välj Hanterad identitet under Tilldela åtkomst till.
  2. Välj + Välj medlemmar under Medlemmar
En dialogruta öppnas till höger om Azure Portal.
En skärmbild som visar hur du väljer hanterad identitet som den typ av användare som du vill tilldela rollen (behörighet) på sidan lägg till rolltilldelningar.
I dialogrutan Välj hanterade identiteter:
  1. Listrutan Hanterad identitet och textrutan Välj kan användas för att filtrera listan över hanterade identiteter i din prenumeration. I det här exemplet visas endast hanterade identiteter som är associerade med en App Service genom att välja App Service.
  2. Välj den hanterade identiteten för Den Azure-resurs som är värd för ditt program.
Välj Välj längst ned i dialogrutan för att fortsätta.
En skärmbild som visar hur du använder dialogrutan Välj hanterade identiteter för att filtrera och välja den hanterade identitet som rollen ska tilldelas till.
Den hanterade identiteten visas som markerad på skärmen Lägg till rolltilldelning .

Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.
En skärmbild av den sista skärmen för att lägga till rolltilldelning där en användare behöver välja knappen Granska + Tilldela för att slutföra rolltilldelningen.

3 – Implementera DefaultAzureCredential i ditt program

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 Azure Identity Library för JavaScript-autentisering, stöder DefaultAzureCredential flera autentiseringsmetoder och bestämmer vilken metod 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:

  1. DefaultAzureCredential Importera klassen från modulen@azure/identity.
  2. Skapa ett DefaultAzureCredential objekt.
  3. Skicka objektet DefaultAzureCredential till Azure SDK-klientobjektkonstruktorn.

Ett exempel på dessa steg 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()
);