Autentisera Azure-värdbaserade appar till Azure-resurser med Azure SDK för .NET
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 den kan ansluta till andra Azure-resurser utan att behöva använda en hemlig nyckel eller annan programhemlighet. 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 några programhemligheter.
Hanterade identitetstyper
Det finns två typer av hanterade identiteter:
- Systemtilldelad – Den här typen av hanterad identitet 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. En systemtilldelad hanterad identitet är kopplad till livscykeln för den Azure-resurs som den är associerad med. 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ändartilldelad – Du kan också skapa en hanterad identitet som 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 som 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.
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.
1 – Aktivera hanterad identitet i Azure-resursen som är värd för appen
Det första steget är att aktivera hanterad identitet på En Azure-resurs som är värd för din app. Om du till exempel är värd för en .NET-app med Azure App Service måste du aktivera hanterad identitet för App Service-webbappen som är värd för din app. 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 att hanterad identitet används för en Azure-resurs med hjälp av antingen Azure-portalen eller Azure CLI.
2 – Tilldela roller till den hanterade identiteten
Bestäm sedan 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
DefaultAzureCredential är en åsiktsbaserad, ordnad sekvens med mekanismer för autentisering till Microsoft Entra. Varje autentiseringsmekanism är en klass som härleds från klassen TokenCredential och kallas för en autentiseringsuppgift. Vid körning DefaultAzureCredential
försöker autentisera med hjälp av den första autentiseringsuppgiften. Om det inte går att hämta en åtkomsttoken görs nästa autentiseringsuppgifter i sekvensen och så vidare tills en åtkomsttoken har hämtats. På så sätt kan din app använda olika autentiseringsuppgifter i olika miljöer utan att skriva miljöspecifik kod.
Ordningen och platserna där DefaultAzureCredential
du söker efter autentiseringsuppgifter finns i StandardAzureCredential.
Om du vill använda DefaultAzureCredential
lägger du till Azure.Identity och eventuellt Microsoft.Extensions.Azure-paketen i ditt program:
I valfri terminal går du till programprojektkatalogen och kör följande kommandon:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure-tjänster används med hjälp av specialiserade klientklasser från de olika Azure SDK-klientbiblioteken. Dessa klasser och dina egna anpassade tjänster bör registreras så att de kan nås via beroendeinmatning i hela appen. I Program.cs
utför du följande steg för att registrera en klientklass och DefaultAzureCredential
:
Azure.Identity
Inkludera namnrymderna ochMicrosoft.Extensions.Azure
viausing
direktiv.- Registrera Azure-tjänstklienten med hjälp av motsvarande
Add
-prefixed extension-metod. - Skicka en instans av
DefaultAzureCredential
tillUseCredential
-metoden.
Till exempel:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Ett alternativ till UseCredential
är att instansiera DefaultAzureCredential
direkt:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
När föregående kod körs på din lokala utvecklingsarbetsstation letar den i miljövariablerna efter ett huvudnamn för programtjänsten eller lokalt installerade utvecklarverktyg, till exempel Visual Studio, för en uppsättning autentiseringsuppgifter för utvecklare. Endera metoden kan användas för att autentisera appen till Azure-resurser under lokal utveckling.
När den distribueras till Azure kan samma kod även autentisera din app till andra Azure-resurser. DefaultAzureCredential
kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.