Dela via


Autentisera Java-applikationer mot Azure-tjänster under lokal utveckling med hjälp av tjänstprincipaler

Under lokal utveckling måste applikationer autentisera sig mot Azure för att få åtkomst till olika Azure-tjänster. Du kan autentisera lokalt med någon av följande metoder:

Den här artikeln beskriver hur du använder ett huvudnamn för programtjänsten. Mer information om tjänsteansvariga finns i dokumentationen Applikations- och tjänsteobjekt i Microsoft Entra ID. I den här artikel får du lära dig om:

  • Så här registrerar du ett program med Microsoft Entra för att skapa ett huvudnamn för tjänsten.
  • Så här använder du Microsoft Entra grupper för att effektivt hantera behörigheter.
  • Så här tilldelar du roller till omfångsbehörigheter.
  • Autentisera din appkod med hjälp av en tjänstehuvudprincip.

Med dedikerade huvudnamn för programtjänsten kan du följa principen om lägsta behörighet när du får åtkomst till Azure resurser. Du kan begränsa behörigheter till de specifika kraven för appen under utvecklingen för att förhindra oavsiktlig åtkomst till Azure resurser som är avsedda för andra appar eller tjänster. Den här metoden hjälper dig också att undvika problem när du flyttar appen till produktion genom att se till att den inte är överprivilegierad i utvecklingsmiljön.

A-diagram som visar hur en lokal Java app använder ett tjänsthuvudnamn för att ansluta till Azure resources.

När du registrerar appen i Azure skapas ett huvudnamn för programtjänsten. För lokal utveckling bör du:

  • Skapa en separat appregistrering för varje utvecklare som arbetar med appen så att varje utvecklare har sitt eget huvudnamn för programtjänsten och inte behöver dela autentiseringsuppgifter.
  • Skapa en separat appregistrering för varje app för att begränsa appens behörigheter till endast det som är nödvändigt.

Under lokal utveckling anger du miljövariabler med programtjänstens huvudnamns identitet. I Azure Identity-biblioteket läss dessa miljövariabler för att autentisera appen till nödvändiga Azure resurser.

Registrera appen i Azure

Huvudobjekt för programtjänsten skapas via en appregistrering i Azure med antingen Azure-portalen eller Azure CLI.

  1. I Azure-portalen använder du sökfältet för att navigera till sidan App registrations.

  2. På sidan App registrations väljer du + Ny registrering.

  3. På sidan Registrera en applikation:

    • För fältet Namn anger du ett beskrivande värde som innehåller appnamnet och målmiljön.
    • För kontotyper som stödsväljer du endast Konton i den här organisationskatalogen (endast Microsoft Customer Led – Enskild klientorganisation)eller vilket alternativ som passar bäst för dina behov.
  4. Välj Registrera för att registrera din app och skapa tjänstens huvudnamn.

    En skärmbild som visar hur du skapar en appregistrering i Azure portal.

  5. På sidan Appregistrering för din app kopierar du Program-ID (klient) och Katalog-ID (hyresgäst), som du sedan klistrar in på en tillfällig plats för senare användning i appkodkonfigurationerna.

  6. Välj Lägg till ett certifikat eller en hemlig för att konfigurera autentiseringsuppgifter för din app.

  7. På sidan Certifikat och hemligheter väljer du + Ny klienthemlighet.

  8. I Lägg till en klienthemlighet flyout-panelen som öppnas:

    • För Beskrivninganger du värdet Aktuell.
    • För värdet Upphör att gälla lämnar du det rekommenderade standardvärdet på 180 dagar.
    • Välj Lägg till för att lägga till hemligheten.
  9. På sidan certifikat & hemligheter kopierar du egenskapen Value för klienthemligheten för användning i ett framtida steg.

    Anmärkning

    Värdet för klienthemlighet visas bara en gång efter att appregistreringen har skapats. Du kan lägga till fler klienthemligheter utan att ogiltigförklara den här klienthemligheten, men det går inte att visa det här värdet igen.

Skapa en Microsoft Entra grupp för lokal utveckling

Skapa en Microsoft Entra-grupp för att kapsla in de roller (behörigheter) som appen behöver i lokal utveckling i stället för att tilldela rollerna till enskilda tjänsthuvudobjekt. Den här metoden erbjuder följande fördelar:

  • Varje utvecklare har samma roller tilldelade på gruppnivå.
  • Om en ny roll behövs för appen behöver den bara läggas till i gruppen för appen.
  • Om en ny utvecklare ansluter till teamet skapas ett nytt huvudnamn för programtjänsten för utvecklaren och läggs till i gruppen, vilket säkerställer att utvecklaren har rätt behörighet att arbeta med appen.
  1. Gå till översiktssidan Microsoft Entra ID i Azure-portalen.

  2. Välj Alla grupper på den vänstra menyn.

  3. På sidan Grupper väljer du Ny grupp.

  4. På sidan Ny grupp fyller du i följande formulärfält:

    • Grupptyp: Välj Säkerhet.
    • Gruppnamn: Ange ett namn för gruppen som innehåller en referens till appens eller miljöns namn.
    • Gruppbeskrivning: Ange en beskrivning som förklarar syftet med gruppen.

    En skärmbild som visar hur du skapar en grupp i Azure portal.

  5. Välj länken Inga medlemmar har valts under Medlemmar för att lägga till medlemmar i gruppen.

  6. I den utfällbara panelen som öppnas söker du efter tjänstens huvudnamn som du skapade tidigare och väljer det från de filtrerade resultaten. Välj knappen Välj längst ned i panelen för att bekräfta ditt val.

  7. Välj Skapa längst ned på sidan Ny grupp för att skapa gruppen och återgå till sidan Alla grupper . Om du inte ser den nya gruppen i listan väntar du en stund och uppdaterar sidan.

Tilldela roller till gruppen

Bestäm sedan vilka roller (behörigheter) din app behöver på vilka resurser och tilldela dessa roller till den Microsoft Entra grupp som du skapade. Grupper kan tilldelas en roll på resurs-, resursgrupps- eller prenumerationsnivå. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång, eftersom de flesta appar grupperar alla sina Azure resurser i en enda resursgrupp.

  1. I Azure-portalen går du till sidan Overview i resursgruppen som innehåller din app.

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

  3. På sidan Åtkomstkontroll (IAM) väljer du + Lägg till och väljer sedan Lägg till rolltilldelning i den nedrullningsbara menyn. Sidan Lägg till rolltilldelning innehåller flera flikar för att konfigurera och tilldela roller.

  4. På fliken Roll använder du sökrutan för att hitta den roll som du vill tilldela. Välj rollen och välj sedan Nästa.

  5. På fliken Medlemmar:

    • För värdet Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn .
    • För värdet Medlemmar väljer du + Välj medlemmar för att öppna den utfällbara panelen Välj medlemmar .
    • Sök efter den Microsoft Entra grupp som du skapade tidigare och välj den från de filtrerade resultaten. Välj Välj för att välja gruppen och stäng den utfällbara panelen.
    • Välj Granska + tilldela längst ned på fliken Medlemmar .

    En skärmbild som visar hur du tilldelar en roll till Microsoft Entra group.

  6. På fliken Granska + tilldela väljer du Granska + tilldela längst ned på sidan.

Ange appmiljövariablerna

Vid körning söker vissa autentiseringsuppgifter från Azure Identity Library, till exempel DefaultAzureCredential, EnvironmentCredential och ClientSecretCredential, efter information om tjänstens huvudnamn efter konvention i miljövariablerna. När du arbetar med Java kan du konfigurera miljövariabler på olika sätt beroende på verktyg och miljö.

Oavsett vilken metod du väljer konfigurerar du följande miljövariabler för tjänstens huvudnamn:

  • AZURE_CLIENT_ID: Används för att identifiera den registrerade appen i Azure.
  • AZURE_TENANT_ID: ID för Microsoft Entra klientorganisationen.
  • AZURE_CLIENT_SECRET: Den hemliga autentiseringsuppgift som genererades för appen.

Lägg till följande rader i din ~/.bashrc eller ~/.zshrc filen. Ersätt platshållarvärdena med de faktiska värdena från appregistreringen:

export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"

När du har redigerat filen, kör source ~/.bashrc eller source ~/.zshrc för att tillämpa ändringarna på den aktuella sessionen.

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

I Azure Identity Library finns olika credentials – implementeringar av TokenCredential som stöder olika scenarier och Microsoft Entra autentiseringsflöden. Följande steg visar hur du använder ClientSecretCredential när du arbetar med serviceprincipaler lokalt och i produktion.

Implementera koden

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

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

Du får åtkomst till Azure tjänster med hjälp av specialiserade klientklasser från de olika Azure SDK klientbiblioteken. Följ dessa steg för alla Java kod som skapar ett Azure SDK klientobjekt i din app:

  1. ClientSecretCredentialBuilder Importera klassen från com.azure.identity paketet.
  2. Skapa ett ClientSecretCredential-objekt med hjälp av ClientSecretCredentialBuilder med tenantId, clientId och clientSecret.
  3. Skicka instansen ClientSecretCredential till Azure SDK-klientobjektverktygets metod credential.

Ett exempel på den här metoden visas i följande kodsegment:

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");

ClientSecretCredential credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .build();

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
    .endpoint("https://<account-name>.blob.core.windows.net")
    .credential(credential)
    .buildClient();

Nästa steg

Den här artikeln tar upp autentisering via ett tjänstehuvudnamn. Den här typen av autentisering är ett av många sätt som du kan autentisera i Azure SDK för Java. I följande artiklar beskrivs andra sätt att autentisera:

Om du stöter på problem som rör autentisering med tjänstens huvudnamn kan du läsa Felsöka autentisering med tjänstens huvudnamn.

När du har slutfört autentiseringen kan du läsa Konfigurera loggning i Azure SDK för Java för information om de loggningsfunktioner som tillhandahålls av SDK.