Azure-autentisering i Java-utvecklingsmiljöer

Den här artikeln innehåller en översikt över stöd för Azure Identity-bibliotek för Microsoft Entra-tokenautentisering. Det här stödet möjliggör autentisering för program som körs lokalt på utvecklardatorer via en uppsättning TokenCredential implementeringar.

Den här artikeln beskriver följande ämnen:

Felsökning av problem med autentisering i utvecklingsmiljön finns i Felsöka autentisering i utvecklingsmiljön.

Autentiseringsuppgifter för enhetskod

Enhetskodens autentiseringsuppgifter autentiserar interaktivt en användare på enheter med begränsat användargränssnitt. Det fungerar genom att uppmana användaren att besöka en inloggnings-URL på en webbläsaraktiverad dator när programmet försöker autentisera. Användaren anger sedan enhetskoden som anges i anvisningarna tillsammans med deras inloggningsuppgifter. Vid lyckad autentisering autentiseras programmet som begärde autentisering på den enhet som körs på.

Mer information finns i Microsofts identitetsplattform och beviljandeflödet för OAuth 2.0-enhetsauktorisering.

Aktivera program för enhetskodflöde

Utför följande steg för att autentisera en användare via enhetskodflöde:

  1. Gå till Microsoft Entra-ID i Azure-portalen och leta reda på din appregistrering.
  2. Gå till avsnittet Autentisering .
  3. Under Föreslagna omdirigerade URI:er kontrollerar du den URI som slutar med /common/oauth2/nativeclient.
  4. Under Standardklienttyp väljer du Ja för Behandla program som en offentlig klient.

De här stegen gör det möjligt för programmet att autentisera, men det har fortfarande inte behörighet att logga in dig på Microsoft Entra-ID eller komma åt resurser för din räkning. Du kan åtgärda det här problemet genom att gå till API-behörigheter och aktivera Microsoft Graph och de resurser som du vill komma åt.

Du måste också vara administratör för din klientorganisation för att bevilja medgivande till ditt program när du loggar in för första gången.

Om du inte kan konfigurera alternativet för enhetskodflöde i ditt Microsoft Entra-ID kan det kräva att din app är flera klientorganisationer. Om du vill göra din app till flera klientorganisationer går du till panelen Autentisering och väljer sedan Konton i valfri organisationskatalog. Välj sedan Ja för Behandla programmet som offentlig klient.

Autentisera ett användarkonto med enhetskodflöde

I följande exempel visas autentisera SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av DeviceCodeCredential på en IoT-enhet.

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).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(deviceCodeCredential)
  .buildClient();

Autentiseringsuppgifter för interaktiv webbläsare

Den här autentiseringsuppgiften autentiserar en användare interaktivt med standardwebbläsaren och ger en smidig autentiseringsupplevelse genom att låta dig använda dina egna autentiseringsuppgifter för att autentisera ditt program.

Aktivera program för OAuth 2-flöde för interaktiv webbläsare

Om du vill använda InteractiveBrowserCredentialmåste du registrera ett program i Microsoft Entra-ID med behörighet att logga in för en användares räkning. Följ de tidigare stegen för enhetskodflöde för att registrera ditt program. Som tidigare nämnts måste en administratör för din klientorganisation bevilja medgivande till ditt program innan något användarkonto kan logga in.

Du kanske märker att i InteractiveBrowserCredentialBuilderkrävs en omdirigerings-URL. Lägg till omdirigerings-URL:en till underavsnittet Omdirigerings-URI:er under avsnittet Autentisering i ditt registrerade Microsoft Entra-program.

Autentisera ett användarkonto interaktivt i webbläsaren

I följande exempel visas hur du autentiserar SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av InteractiveBrowserCredential.

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .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(interactiveBrowserCredential)
  .buildClient();

Azure CLI-autentiseringsuppgifter

Azure CLI-autentiseringsuppgifterna autentiseras i en utvecklingsmiljö med den aktiverade användaren eller tjänstens huvudnamn i Azure CLI. Den använder Azure CLI givet en användare som redan är inloggad i den och använder CLI för att autentisera programmet mot Microsoft Entra-ID.

Logga in på Azure CLI för AzureCliCredential

Logga in som användare med följande Azure CLI-kommando :

az login

Logga in som tjänstens huvudnamn med följande kommando:

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

Om kontot eller tjänstens huvudnamn har åtkomst till flera klienter kontrollerar du att den önskade klientorganisationen eller prenumerationen är i tillståndet "Aktiverad" i utdata från följande kommando:

az account list

Innan du använder AzureCliCredential i kod kör du följande kommando för att kontrollera att kontot har konfigurerats.

az account get-access-token

Du kan behöva upprepa den här processen efter en viss tidsperiod, beroende på giltigheten för uppdateringstoken i din organisation. I allmänhet är giltighetsperioden för uppdateringstoken några veckor till några månader. AzureCliCredential uppmanar dig att logga in igen.

Autentisera ett användarkonto med Azure CLI

I följande exempel visas autentisera SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av AzureCliCredential på en arbetsstation med Azure CLI installerat och loggat in.

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().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(cliCredential)
  .buildClient();

IntelliJ-autentiseringsuppgifter

IntelliJ-autentiseringsuppgifterna autentiseras i en utvecklingsmiljö med kontot i Azure Toolkit for IntelliJ. Den använder den inloggade användarinformationen på IntelliJ IDE och använder den för att autentisera programmet mot Microsoft Entra-ID.

Logga in på Azure Toolkit for IntelliJ for IntelliJCredential

Använd följande steg för att logga in:

  1. Öppna File Inställningar Plugins i IntelliJ-fönstret. >>
  2. Sök efter "Azure Toolkit for IntelliJ" på marketplace. Installera och starta om IDE.
  3. Hitta det nya menyalternativet Verktyg > Azure > Azure-inloggning
  4. Enhetsinloggning hjälper dig att logga in som ett användarkonto. Följ anvisningarna för att logga in på webbplatsen login.microsoftonline.com med enhetskoden. IntelliJ uppmanar dig att välja dina prenumerationer. Välj prenumerationen med de resurser som du vill komma åt.

I Windows behöver du också Sökvägen till KeePass-databasen för att läsa IntelliJ-autentiseringsuppgifter. Du hittar sökvägen i IntelliJ-inställningarna under File Inställningar Appearance &Behavior System Inställningar Passwords (Fil > Inställningar > Utseende och beteendesystem > Inställningar > lösenord). Anteckna platsen för Sökvägen KeePassDatabase.

Autentisera ett användarkonto med IntelliJ IDEA

I följande exempel visas autentisera SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av IntelliJCredential på en arbetsstation där IntelliJ IDEA är installerat och användaren har loggat in med ett Azure-konto.

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .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(intelliJCredential)
  .buildClient();

Visual Studio Code-autentiseringsuppgifter

Visual Studio Code-autentiseringsuppgifterna möjliggör autentisering i utvecklingsmiljöer där VS Code installeras med VS Code Azure-kontotillägget. Den använder den inloggade användarinformationen i VS Code IDE och använder den för att autentisera programmet mot Microsoft Entra-ID.

Logga in i Visual Studio Code Azure-kontotillägget för VisualStudioCodeCredential

Nn-integrering med Azure-kontotillägget hanterar Visual Studio Code-autentiseringen. Om du vill använda den här autentiseringsformen installerar du Azure-kontotillägget och använder sedan Visa > kommandopaletten för att köra kommandot Azure: Sign In. Det här kommandot öppnar ett webbläsarfönster och visar en sida som gör att du kan logga in på Azure. När du har slutfört inloggningsprocessen kan du stänga webbläsaren enligt anvisningarna. När du kör programmet (antingen i felsökningsprogrammet eller var som helst på utvecklingsdatorn) används autentiseringsuppgifterna från inloggningen.

Autentisera ett användarkonto med Visual Studio Code

I följande exempel visas autentisering SecretClient från klientbiblioteket azure-security-keyvault-secrets med hjälp av VisualStudioCodeCredential på en arbetsstation där Visual Studio Code är installerat och användaren har loggat in med ett Azure-konto.

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().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(visualStudioCodeCredential)
  .buildClient();

Nästa steg

Den här artikeln beskriver autentisering under utveckling med autentiseringsuppgifter som är tillgängliga på datorn. 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 autentisering i utvecklingsmiljön kan du läsa Felsöka autentisering i utvecklingsmiljön.

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