Dela via


Autentisera Azure värdbaserade Java appar för att Azure resurser med hjälp av en systemtilldelad hanterad identitet

Den rekommenderade metoden för att autentisera en Azure värdbaserad app till andra Azure resurser är att använda en hanterad identitet. De flesta Azure tjänster stöder den här metoden, inklusive appar som finns på Azure App Service, Azure Container Apps och Azure Virtual Machines. Mer information finns i Azure tjänster och resurstyper som stöder hanterade identiteter. Mer information om olika autentiseringstekniker och metoder finns i Autentisera Java appar för att Azure tjänster med hjälp av biblioteket Azure Identity.

I följande avsnitt lär du dig:

  • Grundläggande begrepp för hanterad identitet.
  • Så här skapar du en systemtilldelad hanterad identitet för din app.
  • Så här tilldelar du roller till den systemtilldelade hanterade identiteten.
  • Autentisera med hjälp av den systemtilldelade hanterade identiteten från din appkod.

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 kopplade 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ändaretilldelade 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/Råd

Läs mer om hur du väljer och hanterar systemtilldelade och användartilldelade hanterade identiteter i artikeln Rekommenderade metoder för hanterad identitet .

I följande avsnitt beskrivs stegen för att aktivera och använda en systemtilldelad hanterad identitet för en Azure värdbaserad app. Om du behöver använda en användartilldelad hanterad identitet kan du se Autentisera Azure-värdbaserade Java-appar för Azure-resurser med hjälp av en användartilldelad hanterad identitet.

Aktivera en systemtilldelad hanterad identitet på Azure värdresurs

Om du vill komma igång med en systemtilldelad hanterad identitet med din app aktiverar du identiteten på den Azure resurs som är värd för din app, till exempel en Azure App Service, Azure Container Apps eller Azure Virtual Machines instans.

Du kan aktivera en systemtilldelad hanterad identitet för en Azure resurs med hjälp av antingen Azure-portalen eller Azure CLI.

  1. I Azure-portalen går du till resursen som är värd för programkoden, till exempel en Azure App Service eller Azure Container Apps instans.

  2. På resursens översiktssida expanderar du Inställningar och väljer Identitet från navigeringen.

  3. På sidan Identity kan du dra skjutreglaget Status till läge .

  4. Välj Spara för att tillämpa ändringarna.

    En skärmbild som visar hur du aktiverar en systemtilldelad hanterad identitet i en containerapp.

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 relaterade Azure resurser med hjälp av en enda resursgrupp.

  1. Gå till sidan Översikt i resursgruppen som innehåller appen med den systemtilldelade hanterade identiteten.

  2. Välj åtkomstkontroll (IAM) i det vänstra navigeringsfältet.

  3. 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.

    En skärmbild som visar hur du kommer åt sidan för identitetsrolltilldelning.

  4. 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.

  5. Välj rollen i resultatet och välj sedan Nästa för att flytta till fliken Medlemmar.

  6. För alternativet Tilldela åtkomst till väljer du Hanterad identitet.

  7. För alternativet Medlemmar väljer du + Välj medlemmar för att öppna panelen Välj hanterade identiteter.

  8. 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 Select för att hitta systemidentiteten som du har aktiverat för den Azure resurs som är värd för din app.

    En skärmbild som visar processen för tilldelning av hanterad identitet.

  9. Välj identiteten och välj Välj längst ned i panelen för att fortsätta.

  10. Välj Granska + tilldela längst ned på sidan.

  11. På den sista fliken Granska + tilldela väljer du Granska + tilldela för att slutföra arbetsflödet.

Autentisera mot Azure-tjänster från din app

Azure Identity-biblioteket innehåller olika autentiseringsuppgifter – implementeringar av TokenCredential anpassade för att stödja olika scenarier och Microsoft Entra-autentiseringsflöden. Eftersom den hanterade identiteten inte är tillgänglig när den körs lokalt visar stegen framåt vilka autentiseringsuppgifter som ska användas i vilket scenario:

  • Lokal utvecklingsmiljö: Under lokal utveckling endast, använd en klass med namnet DefaultAzureCredential för en åsiktsbaserad, förkonfigurerad kedja med autentiseringsuppgifter. DefaultAzureCredential identifierar användarautentiseringsuppgifter från dina lokala verktyg eller IDE, till exempel Azure CLI eller Visual Studio Code. Det ger också flexibilitet och bekvämlighet för återförsök, väntetider för svar och stöd för flera autentiseringsalternativ. Läs artikeln Autentisering för Azure-tjänster under lokal utveckling för mer information.
  • Azure-värdbaserade appar: När appen körs i Azure använder du ManagedIdentityCredential för att på ett säkert sätt identifiera den hanterade identitet som konfigurerats för din app. Om du anger den här exakta typen av autentiseringsuppgifter förhindrar du att andra tillgängliga autentiseringsuppgifter oväntat hämtas.

Implementera koden

Lägg till azure-identity-beroendet i din pom.xml-fil:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Azure-tjänster används med hjälp av specialiserade klientklasser från de olika Azure SDK-klientbiblioteken. Följande kodexempel visar hur du skapar en instans av autentiseringsuppgifter och använder den med en Azure SDK-tjänstklient. I programkoden utför du följande steg för att autentisera med hjälp av en hanterad identitet:

  1. Importera klasserna DefaultAzureCredentialBuilder, ManagedIdentityCredentialBuilderoch TokenCredential .
  2. Skicka en lämplig TokenCredential instans till klienten:
    • Använd DefaultAzureCredential när du kör lokalt
    • Använd ManagedIdentityCredential när din app körs i Azure

I följande exempel visas hur du autentiserar en SecretClient med hjälp av en systemtilldelad hanterad identitet:

import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

TokenCredential credential = null;

// Set up credential based on environment (Azure or local development)
String environment = System.getenv("ENV");

if (environment != null && environment.equals("production")) {
    credential = new ManagedIdentityCredentialBuilder()
        .build();
} else {
    credential = new DefaultAzureCredentialBuilder()
        .build();
}

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Nästa steg

Den här artikeln beskriver autentisering med hjälp av en systemtilldelad hanterad identitet. Den här typen av autentisering är ett av flera sätt som du kan autentisera i Azure SDK för Java. Följande artiklar beskriver andra sätt:

Om du stöter på problem som rör Azure värdbaserad programautentisering kan du läsa Felsöka Azure värdbaserad programautentisering.