Autenticazione di Azure in ambienti di sviluppo Java

Questo articolo offre una panoramica del supporto della libreria di identità di Azure per l'autenticazione del token Microsoft Entra. Questo supporto abilita l'autenticazione per le applicazioni in esecuzione in locale nei computer per sviluppatori tramite un set di TokenCredential implementazioni.

Questo articolo illustra gli argomenti seguenti:

Per la risoluzione dei problemi di autenticazione dell'ambiente di sviluppo, vedere Risolvere i problemi di autenticazione dell'ambiente di sviluppo.

Credenziali del codice del dispositivo

La credenziale del codice del dispositivo autentica in modo interattivo un utente nei dispositivi con interfaccia utente limitata. Funziona richiedendo all'utente di visitare un URL di accesso in un computer abilitato al browser quando l'applicazione tenta di eseguire l'autenticazione. L'utente immette quindi il codice del dispositivo indicato nelle istruzioni insieme alle credenziali di accesso. Al termine dell'autenticazione, l'applicazione che ha richiesto l'autenticazione viene autenticata correttamente nel dispositivo in cui è in esecuzione.

Per altre informazioni, vedere Microsoft Identity Platform e il flusso di concessione delle autorizzazioni per dispositivi OAuth 2.0.

Abilitare le applicazioni per il flusso di codice del dispositivo

Per autenticare un utente tramite il flusso del codice del dispositivo, seguire questa procedura:

  1. Passare a Microsoft Entra ID nel portale di Azure e trovare la registrazione dell'app.
  2. Passare alla sezione Autenticazione .
  3. In URI reindirizzati suggeriti controllare l'URI che termina con /common/oauth2/nativeclient.
  4. In Tipo di client predefinito selezionare per Considera applicazione come client pubblico.

Questi passaggi consentono all'applicazione di eseguire l'autenticazione, ma non dispone ancora dell'autorizzazione necessaria per accedere all'ID Microsoft Entra o accedere alle risorse per conto dell'utente. Per risolvere questo problema, passare a Autorizzazioni API e abilitare Microsoft Graph e le risorse a cui si vuole accedere.

È anche necessario essere l'amministratore del tenant per concedere il consenso all'applicazione quando si accede per la prima volta.

Se non è possibile configurare l'opzione del flusso di codice del dispositivo nell'ID Microsoft Entra, potrebbe essere necessario che l'app sia multi-tenant. Per rendere l'app multi-tenant, passare al pannello Autenticazione e quindi selezionare Account in qualsiasi directory organizzativa. Selezionare quindi sì per Considera applicazione come client pubblico.

Autenticare un account utente con il flusso del codice del dispositivo

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando in DeviceCodeCredential un dispositivo IoT.

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();

Credenziali interattive del browser

Questa credenziale autentica in modo interattivo un utente con il browser di sistema predefinito e offre un'esperienza di autenticazione senza problemi consentendo di usare le proprie credenziali per autenticare l'applicazione.

Abilitare le applicazioni per il flusso OAuth 2 interattivo del browser

Per usare InteractiveBrowserCredential, è necessario registrare un'applicazione in Microsoft Entra ID con autorizzazioni per accedere per conto di un utente. Seguire i passaggi precedenti per il flusso del codice del dispositivo per registrare l'applicazione. Come accennato in precedenza, un amministratore del tenant deve concedere il consenso all'applicazione prima che qualsiasi account utente possa accedere.

È possibile notare che in InteractiveBrowserCredentialBuilderè necessario un URL di reindirizzamento. Aggiungere l'URL di reindirizzamento alla sottosezione URI di reindirizzamento nella sezione Autenticazione dell'applicazione Microsoft Entra registrata.

Autenticare un account utente in modo interattivo nel browser

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando .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();

Credenziali dell'interfaccia della riga di comando di Azure

Le credenziali dell'interfaccia della riga di comando di Azure eseguono l'autenticazione in un ambiente di sviluppo con l'utente o l'entità servizio abilitata nell'interfaccia della riga di comando di Azure. Usa l'interfaccia della riga di comando di Azure in base a un utente che ha già eseguito l'accesso e usa l'interfaccia della riga di comando per autenticare l'applicazione in Base all'ID Microsoft Entra.

Accedere all'interfaccia della riga di comando di Azure per AzureCliCredential

Accedere come utente con il comando seguente dell'interfaccia della riga di comando di Azure :

az login

Accedere come entità servizio usando il comando seguente:

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

Se l'account o l'entità servizio ha accesso a più tenant, verificare che il tenant o la sottoscrizione desiderata sia nello stato "Abilitato" nell'output del comando seguente:

az account list

Prima di usare AzureCliCredential nel codice, eseguire il comando seguente per verificare che l'account sia stato configurato correttamente.

az account get-access-token

Potrebbe essere necessario ripetere questo processo dopo un determinato periodo di tempo, a seconda della validità del token di aggiornamento nell'organizzazione. In genere, il periodo di validità del token di aggiornamento è di alcune settimane a pochi mesi. AzureCliCredential richiede di eseguire di nuovo l'accesso.

Autenticare un account utente con l'interfaccia della riga di comando di Azure

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando in una workstation con l'interfaccia della riga di comando di Azure installata e eseguita l'accessoAzureCliCredential.

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();

Credenziali intelliJ

La credenziale IntelliJ esegue l'autenticazione in un ambiente di sviluppo con l'account in Azure Toolkit for IntelliJ. Usa le informazioni utente che hanno eseguito l'accesso nell'IDE di IntelliJ e le usa per autenticare l'applicazione in Base all'ID Microsoft Entra.

Accedere ad Azure Toolkit for IntelliJ for IntelliJCredential

Per eseguire l'accesso, seguire questa procedura:

  1. Nella finestra di IntelliJ aprire File > Impostazioni > Plug-in.
  2. Cercare "Azure Toolkit for IntelliJ" nel marketplace. Installare e riavviare l'IDE.
  3. Trovare la nuova voce di menu Strumenti > per l'accesso ad Azure >
  4. L'account di accesso del dispositivo consente di accedere come account utente. Seguire le istruzioni per accedere al login.microsoftonline.com sito Web con il codice del dispositivo. IntelliJ richiede di selezionare le sottoscrizioni. Selezionare la sottoscrizione con le risorse a cui si vuole accedere.

In Windows è necessario anche il percorso del database KeePass per leggere le credenziali di IntelliJ. È possibile trovare il percorso nelle impostazioni di IntelliJ in File > Impostazioni > Aspetto e comportamento > System Impostazioni > password. Prendere nota della posizione del percorso KeePassDatabase.

Autenticare un account utente con IntelliJ IDEA

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando in IntelliJCredential una workstation in cui è installato IntelliJ IDEA e l'utente ha eseguito l'accesso con un account Azure.

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();

Credenziali di Visual Studio Code

La credenziale di Visual Studio Code abilita l'autenticazione negli ambienti di sviluppo in cui VS Code è installato con l'estensione dell'account Azure di VS Code. Usa le informazioni utente che hanno eseguito l'accesso nell'IDE di VS Code e le usa per autenticare l'applicazione in Microsoft Entra ID.

Accedere all'estensione dell'account azure di Visual Studio Code per VisualStudioCodeCredential

L'integrazione di Nn con l'estensione Account di Azure gestisce l'autenticazione di Visual Studio Code. Per usare questa forma di autenticazione, installare l'estensione Account Azure, quindi usare Visualizza riquadro comandi per eseguire il comando Azure: Sign In (Azure: Sign In).> Questo comando apre una finestra del browser e visualizza una pagina che consente di accedere ad Azure. Dopo aver completato il processo di accesso, è possibile chiudere il browser come indicato. L'esecuzione dell'applicazione (nel debugger o in qualsiasi punto del computer di sviluppo) usa le credenziali dell'accesso.

Autenticare un account utente con Visual Studio Code

L'esempio seguente illustra l'autenticazione SecretClient dalla libreria client azure-security-keyvault-secrets usando in VisualStudioCodeCredential una workstation in cui è installato Visual Studio Code e l'utente ha eseguito l'accesso con un account Azure.

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();

Passaggi successivi

Questo articolo ha illustrato l'autenticazione durante lo sviluppo usando le credenziali disponibili nel computer. Questa forma di autenticazione è uno dei diversi modi in cui è possibile eseguire l'autenticazione in Azure SDK per Java. Gli articoli seguenti descrivono altri modi:

Se si verificano problemi relativi all'autenticazione dell'ambiente di sviluppo, vedere Risolvere i problemi di autenticazione dell'ambiente di sviluppo.

Dopo aver eseguito l'autenticazione master, vedere Configurare la registrazione in Azure SDK per Java per informazioni sulle funzionalità di registrazione fornite dall'SDK.