Azure-autentisering med Java och Azure Identity

Den här artikeln innehåller en översikt över Java Azure Identity-biblioteket, som tillhandahåller stöd för Microsoft Entra-tokenautentisering i Azure SDK för Java. Det här biblioteket innehåller en uppsättning TokenCredential implementeringar som du kan använda för att skapa Azure SDK-klienter som stöder Microsoft Entra-tokenautentisering.

Azure Identity-biblioteket stöder för närvarande:

Följ de här länkarna om du vill veta mer om detaljerna i var och en av dessa autentiseringsmetoder. I resten av den här artikeln introducerar vi vanliga DefaultAzureCredential och relaterade ämnen.

Lägg till Maven-beroenden

Om du vill lägga till Maven-beroendet inkluderar du följande XML i projektets pom.xml-fil . Ersätt {version_number} med den senaste stabila versionens versionsnummer, som visas på sidan För Azure Identity-bibliotek.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>{version_number}</version>
</dependency>

Nyckelbegrepp

Det finns två viktiga begrepp när det gäller att förstå Azure Identity-biblioteket: begreppet autentiseringsuppgifter och den vanligaste implementeringen av autentiseringsuppgifterna. DefaultAzureCredential

En autentiseringsuppgift är en klass som innehåller eller kan hämta de data som behövs för att en tjänstklient ska kunna autentisera begäranden. Tjänstklienter i Azure SDK accepterar autentiseringsuppgifter när de skapas och tjänstklienter använder dessa autentiseringsuppgifter för att autentisera begäranden till tjänsten.

Azure Identity-biblioteket fokuserar på OAuth-autentisering med Microsoft Entra-ID och erbjuder olika autentiseringsklasser som kan hämta en Microsoft Entra-token för att autentisera tjänstbegäranden. Alla autentiseringsklasser i det här biblioteket är implementeringar av den abstrakta klassen i azure-core, och du kan använda någon av dem för att konstruera tjänstklienter som kan autentisera TokenCredential med en TokenCredential.

DefaultAzureCredential är lämpligt för de flesta scenarier där programmet är avsett att köras i Azure Cloud. DefaultAzureCredential kombinerar autentiseringsuppgifter som ofta används för att autentisera när de distribueras, med autentiseringsuppgifter som används för att autentisera i en utvecklingsmiljö. Mer information, inklusive exempel med hjälp av DefaultAzureCredential, finns i avsnittet Standardautentiseringsuppgifter för Azure i Autentisera Azure-värdbaserade Java-program.

Exempel

Som du ser i Använda Azure SDK för Java skiljer sig hanteringsbiblioteken något åt. Ett sätt att skilja sig åt är att det finns bibliotek för användning av Azure-tjänster, så kallade klientbibliotek och bibliotek för hantering av Azure-tjänster, så kallade hanteringsbibliotek. I följande avsnitt finns en snabb översikt över autentisering i både klient- och hanteringsbibliotek.

Autentisera Azure-klientbibliotek

I följande exempel visas hur du autentiserar SecretClient från klientbiblioteket azure-security-keyvault-secrets med .DefaultAzureCredential

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

Autentisera Azure-hanteringsbibliotek

Azure-hanteringsbiblioteken använder samma API:er för autentiseringsuppgifter som Azure-klientbiblioteken, men kräver även ett Azure-prenumerations-ID för att hantera Azure-resurserna för den prenumerationen.

Du hittar prenumerations-ID:t på sidan Prenumerationer i Azure-portalen. Du kan också använda följande Azure CLI-kommando för att hämta prenumerations-ID:t:

az account list --output table

Du kan ange prenumerations-ID i AZURE_SUBSCRIPTION_ID miljövariabeln. AzureProfile hämtar det här ID:t som standardprenumerations-ID när en Manager instans skapas i följande exempel:

AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
        new DefaultAzureCredentialBuilder().build(),
        new AzureProfile(AzureEnvironment.AZURE))
    .withDefaultSubscription();

DefaultAzureCredential används i det här exemplet autentiserar en AzureResourceManager instans med hjälp av DefaultAzureCredential. Du kan också använda andra implementeringar av DefaultAzureCredentialtokenautentiseringsuppgifter som erbjuds i Azure Identity-biblioteket i stället för .

Felsökning

Vägledning finns i Felsöka problem med Azure Identity-autentisering.

Nästa steg

Den här artikeln introducerade azure-identitetsfunktionerna som är tillgängliga i Azure SDK för Java. Det beskrivs DefaultAzureCredential som vanligt och lämpligt i många fall. I följande artiklar beskrivs andra sätt att autentisera med hjälp av Azure Identity-biblioteket och ge mer information om DefaultAzureCredential: