Autentisera .NET-appar som är värdbaserade i Azure mot Azure-resurser med hjälp av en användartilldelad hanterad identitet.
Den rekommenderade metoden för att autentisera sig från en app som är värdbaserad i Azure till andra Azure-resurser är att använda en hanterad identitet. Den här metoden stöds för de flesta Azure-tjänster, inklusive appar som finns i Azure App Service, Azure Container Apps och Azure Virtual Machines. Upptäck mer om olika autentiseringstekniker och metoder på -autentiseringsöversikten sidan. I de kommande avsnitten får du lära dig:
- Grundläggande begrepp för hanterad identitet
- Så här skapar du en användartilldelad hanterad identitet för din app
- Så här tilldelar du roller till den användartilldelade hanterade identiteten
- Så här autentiserar du med hjälp av den användartilldelade hanterade identiteten från din applikationskod
Grundläggande begrepp för hanterad identitet
Med en hanterad identitet kan din app på ett säkert sätt ansluta till andra Azure-resurser utan att använda hemliga nycklar eller andra programhemligheter. Internt spårar Azure identiteten 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.
Det finns två typer av hanterade identiteter att tänka på när du konfigurerar din värdbaserade app:
- Systemtilldelade hanterade identiteter aktiveras direkt på en Azure-resurs och är knutna till dess livscykel. När resursen tas bort tar Azure automatiskt bort identiteten åt dig. Systemtilldelade identiteter ger en minimalistisk metod för att använda hanterade identiteter.
- Användartilldelade hanterade identiteter skapas som fristående Azure-resurser och ger större flexibilitet och funktioner. De är idealiska för lösningar som omfattar flera Azure-resurser som behöver dela samma identitet och behörigheter. Om till exempel flera virtuella datorer behöver komma åt samma uppsättning Azure-resurser, ger en användartilldelad hanterad identitet återanvändning och optimerad hantering.
Tips
Läs mer om att välja och hantera systemtilldelade hanterade identiteter och användartilldelade hanterade identiteter i artikeln Rekommenderade metoder för hanterad identitet artikeln.
I de kommande avsnitten beskrivs stegen för att aktivera och använda en användartilldelad hanterad identitet för en Azure-värdbaserad app. Om du behöver använda en användartilldelad hanterad identitet går du till artikeln systemtilldelade hanterade identiteter för mer information.
Skapa en användartilldelad hanterad identitet
Användartilldelade hanterade identiteter skapas som fristående resurser i din Azure-prenumeration med hjälp av Azure-portalen eller Azure CLI. Azure CLI-kommandon kan köras i Azure Cloud Shell- eller på en arbetsstation med Azure CLI installerat.
I Azure-portalen anger du Hanterade identiteter i huvudsökfältet och väljer matchande resultat under avsnittet Services.
På sidan Hanterade Identiteter väljer du + Skapa.
På sidan Skapa användartilldelad hanterad identitet väljer du en prenumeration, resursgrupp och region för den användartilldelade hanterade identiteten och anger sedan ett namn.
Välj Granska + skapa för att granska och verifiera dina indata.
Välj Skapa för att skapa den användartilldelade hanterade identiteten.
När identiteten har skapats väljer du Gå till resurs.
På den nya identitetens översiktssida kopierar du värdet klient-ID som ska användas för senare när du konfigurerar programkoden.
Tilldela den hanterade identiteten till din app
En användartilldelad hanterad identitet kan associeras med en eller flera Azure-resurser. Alla resurser som använder den identiteten får de behörigheter som tillämpas via identitetens roller.
I Azure-portalen navigerar du till resursen som är värd för din appkod, till exempel en Azure App Service- eller Azure Container App-instans.
På resursens översiktssida expanderar du Inställningar och väljer Identitet från navigeringen.
På sidan Identitet växlar du till fliken Användartilldelad.
Välj + Lägg till för att öppna panelen Lägg till användartilldelad hanterad identitet.
I panelen Lägg till användartilldelad hanterad identitet använder du listrutan Prenumeration för att filtrera sökresultaten för dina identiteter. Använd sökrutan Användartilldelade hanterade identiteter för att hitta den användartilldelade hanterade identiteten som du har aktiverat för Azure-resursen som är värd för din app.
Välj identiteten och välj Lägg till längst ned i panelen för att fortsätta.
Tilldela roller till den hanterade identiteten
Bestäm sedan vilka roller din app behöver och tilldela dessa roller till den hanterade identiteten. Du kan tilldela roller till en hanterad identitet i följande omfång:
- Resurs: De tilldelade rollerna gäller endast för den specifika resursen.
- Resursgrupp: De tilldelade rollerna gäller för alla resurser i resursgruppen.
- Prenumeration: De tilldelade rollerna gäller för alla resurser i prenumerationen.
I följande exempel visas hur du tilldelar roller i resursgruppens omfång, eftersom många appar hanterar alla sina relaterade Azure-resurser med hjälp av en enda resursgrupp.
Gå till sidan Översikt i resursgruppen som innehåller appen med den användartilldelade hanterade identiteten.
Välj åtkomstkontroll (IAM) i det vänstra navigeringsfältet.
På sidan Åtkomstkontroll (IAM) väljer du + Lägg till på den översta menyn och väljer sedan Lägg till rolltilldelning för att gå till sidan Lägg till rolltilldelning.
Sidan Lägg till rolltilldelning visar ett flikarat arbetsflöde i flera steg för att tilldela roller till identiteter. På den första fliken Roll använder du sökrutan längst upp för att hitta den roll som du vill tilldela identiteten.
Välj rollen i resultatet och välj sedan Nästa för att flytta till fliken Medlemmar.
För alternativet Tilldela åtkomst till väljer du Hanterad identitet.
För alternativet Medlemmar väljer du + Välj medlemmar för att öppna panelen Välj hanterade identiteter.
I panelen Välj hanterade identiteter använder du listrutorna Prenumeration och Hanterad identitet för att filtrera sökresultaten efter dina identiteter. Använd sökrutan Välj för att hitta den användartilldelade hanterade identitet som du har aktiverat för Azure-resursen som är värd för din app.
Välj identiteten och välj Välj längst ned i panelen för att fortsätta.
Välj Granska + tilldela längst ned på sidan.
På den sista fliken Granska + tilldela väljer du Granska + tilldela för att slutföra arbetsflödet.
Implementera DefaultAzureCredential i ditt program
DefaultAzureCredential är en åsiktsbaserad, ordnad sekvens med mekanismer för autentisering till Microsoft Entra-ID. Varje autentiseringsmekanism är en klass som härleds från klassen TokenCredential och kallas autentiseringsuppgifter. Vid körning försöker DefaultAzureCredential
autentisera med hjälp av den första autentiseringsuppgiften. När legitimationen inte lyckas hämta en åtkomsttoken prövas nästa autentiseringsuppgift 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.
Om du vill använda DefaultAzureCredential
lägger du till Azure.Identity- och eventuellt paketen Microsoft.Extensions.Azure 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
:
- Inkludera namnrymderna
Azure.Identity
ochMicrosoft.Extensions.Azure
viausing
direktiv. - Registrera Azure-tjänstklienten med motsvarande
Add
-prefixed extension-metod. - Skicka en instans av
DefaultAzureCredential
till metodenUseCredential
.
Anteckning
För en användartilldelad hanterad identitet måste du tilldela identitetens clientId
-värde till egenskapen ManagedIdentityClientId
på DefaultAzureCredentialOptions
-objektet. På så sätt kan koden identifiera rätt identitet som ska användas för autentisering när den körs i Azure.
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(
new DefaultAzureCredentialOptions()
{
ManagedIdentityClientId = "<your-client-id>"
}));
});
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(new DefaultAzureCredentialOptions()
{
ManagedIdentityClientId = "<your-client-id>"
})));
När föregående kod körs på din lokala utvecklingsarbetsstation letar DefaultAzureCredential
i miljövariablerna efter ett programtjänsthuvudnamn 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.