Eseguire l'autenticazione con le librerie di Azure per JavaAuthenticate with the Azure libraries for Java

Connettersi ai servizi con le stringhe di connessioneConnect to services with connection strings

La maggior parte delle librerie di servizi di Azure usa una stringa di connessione o una chiave di protezione per l'autenticazione.Most Azure service libraries use a connection string or secure key for authentication. Il database SQL include, ad esempio, le informazioni specificate per nome utente e password nella stringa di connessione JDBC:For example, SQL Database includes username and password information in the JDBC connection string:

String url = "jdbc:sqlserver://myazuredb.database.windows.net:1433;" + 
        "database=testjavadb;" + 
        "user=myazdbuser;" +
        "password=myazdbpass;" +
        "encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";
        Connection conn = DriverManager.getConnection(url);

Archiviazione di Azure usa una chiave di archiviazione per autorizzare l'applicazione:Azure Storage uses a storage key to authorize the application:

final String storageConnection = "DefaultEndpointsProtocol=https;"
        + "AccountName=" + storageName 
        + ";AccountKey=" + storageKey
        + ";EndpointSuffix=core.windows.net";

Le stringhe di connessione dei servizi vengono usate per eseguire l'autenticazione ad altri servizi di Azure, ad esempio Azure Cosmos DB, Cache Redis e Bus di servizio.Service connection strings are used to authenticate to other Azure services like Azure Cosmos DB, Redis Cache, and Service Bus. Per ottenere le stringhe di connessione, è possibile usare il portale di Azure o l'interfaccia della riga di comando.You can get the connection strings using the Azure portal or the CLI. È anche possibile usare le librerie di gestione di Azure per Java per eseguire query nelle risorse per creare stringhe di connessione nel codice.You can also use the Azure management libraries for Java to query resources to build connection strings in your code.

Questo codice, ad esempio, usa le librerie di gestione per creare una stringa di connessione dell'account di archiviazione:For example, this code uses the management libraries to create a storage account connection string:

// create a new storage account
StorageAccount storage = azure.storageAccounts().getByResourceGroup("myResourceGroup","myStorageAccount");

// create a storage container to hold the file
List<StorageAccountKey> keys = storage.getKeys();
final String storageConnection = "DefaultEndpointsProtocol=https;"
        + "AccountName=" + storage.name()
        + ";AccountKey=" + keys.get(0).value()
        + ";EndpointSuffix=core.windows.net";

Altre librerie richiedono che l'applicazione venga eseguita con un'entità servizio che autorizza l'esecuzione dell'applicazione con le credenziali concesse.Other libraries require your application to run with a service principal authorizing the application to run with granted credentials. Questa configurazione è simile alla procedura di autenticazione basata su oggetti per le librerie di gestione illustrata di seguito.This configuration is similar to the object-based authentication steps for the management library listed below.

Eseguire l'autenticazione con le librerie di gestione di Azure per JavaAuthenticate with the Azure management libraries for Java

Sono disponibili due opzioni per autenticare l'applicazione con Azure quando si usano le librerie di gestione Java per creare e gestire le risorse.Two options are available to authenticate your application with Azure when using the Java management libraries to create and manage resources.

Eseguire l'autenticazione con un oggetto ApplicationTokenCredentialsAuthenticate with an ApplicationTokenCredentials object

Creare un'istanza di ApplicationTokenCredentials per fornire le credenziali dell'entità servizio all'oggetto Azure di primo livello dal codice.Create an instance of ApplicationTokenCredentials to supply the service principal credentials to the top-level Azure object from inside your code.

import com.microsoft.azure.credentials.ApplicationTokenCredentials;
import com.microsoft.azure.AzureEnvironment;

// ...

ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(client, 
        tenant,
        key, 
        AzureEnvironment.AZURE);
        
Azure azure = Azure
        .configure()
        .withLogLevel(LogLevel.NONE)
        .authenticate(credentials)
        .withDefaultSubscription();

client, tenant e key sono gli stessi valori dell'entità servizio usati con l'autenticazione basata su file.The client, tenant and key are the same service principal values used with file-based authentication. Il valore AzureEnvironment.AZURE crea le credenziali per il cloud pubblico di Azure.The AzureEnvironment.AZURE value creates credentials against the Azure public cloud. Sostituirlo con un valore diverso se è necessario accedere a un altro cloud (ad esempio, AzureEnvironment.AZURE_GERMANY).Change this to a different value if you need to access another cloud (for example, AzureEnvironment.AZURE_GERMANY).

Leggere i valori dell'entità servizio dalle variabili di ambiente o da un archivio di gestione segreto, ad esempio Key Vault.Read the service principal values from environment variables or a secret management store like Key Vault. Non impostare questi valori come stringhe in testo non crittografato nel codice per evitare l'esposizione accidentale delle credenziali nella cronologia del controllo della versione.Avoid setting these values as cleartext strings in your code to prevent accidentally exposing credentials in your version control history.

Autenticazione basata su file (anteprima)File based authentication (Preview)

Il modo più semplice per eseguire l'autenticazione consiste nel creare un file delle proprietà contenente le credenziali per un'entità servizio di Azure usando il formato seguente:The simplest way to authenticate is to create a properties file that contains credentials for an Azure service principal using the following format:

# sample management library properties file
subscription=########-####-####-####-############
client=########-####-####-####-############
key=XXXXXXXXXXXXXXXX
tenant=########-####-####-####-############
managementURI=https\://management.core.windows.net/
baseURL=https\://management.azure.com/
authURL=https\://login.windows.net/
graphURL=https\://graph.windows.net/
  • subscription: usare il valore id da az account show nell'interfaccia della riga di comando di Azure 2.0.subscription: use the id value from az account show in the Azure CLI 2.0.
  • client: usare il valore appId dell'output di un'entità servizio creata per eseguire l'applicazione.client: use the appId value from the output taken from a service principal created to run the application. Se non è disponibile un'entità servizio per l'app, crearne una con l'interfaccia della riga di comando di Azure 2.0.If you don't have a service principal for your app, create one with the Azure CLI 2.0.
  • key: usare il valore password dell'output dell'interfaccia della riga di comando di creazione dell'entità serviziokey: use the password value from the service principal create CLI output
  • tenant: usare il valore tenant dell'output dell'interfaccia della riga di comando di creazione dell'entità serviziotenant: use the tenant value from the service principal create CLI output

Salvare questo file nel sistema in una posizione sicura e leggibile dal codice.Save this file in a secure location on your system where your code can read it. Impostare una variabile di ambiente con il percorso completo del file nella shell:Set an environment variable with the full path to the file in your shell:

export AZURE_AUTH_LOCATION=/Users/raisa/azureauth.properties

Creare l'oggetto Azure del punto di ingresso per iniziare a usare le librerie.Create the entry point Azure object to start working with the libraries. Leggere la posizione del file delle proprietà tramite la variabile di ambiente.Read the location of the properties file through the environment variable.

// pull in the location of the authenticaiton properties file from the environment 
final File credFile = new File(System.getenv("AZURE_AUTH_LOCATION"));

Azure azure = Azure
        .configure()
        .withLogLevel(LogLevel.NONE)
        .authenticate(credFile)
        .withDefaultSubscription();