Autenticare le soluzioni del servizio Batch con Active DirectoryAuthenticate Batch service solutions with Active Directory

Azure Batch supporta l'autenticazione con Azure Active Directory, ovvero Azure AD.Azure Batch supports authentication with Azure Active Directory (Azure AD). Azure AD è il servizio Microsoft di gestione di identità e directory basato sul cloud e multi-tenant.Azure AD is Microsoft’s multi-tenant cloud based directory and identity management service. Azure stesso usa Azure AD per l'autenticazione i propri clienti, gli amministratori del servizio e gli utenti dell'organizzazione.Azure itself uses Azure AD to authenticate its customers, service administrators, and organizational users.

Quando si usa l'autenticazione di Azure AD con Azure Batch, è possibile eseguire l'autenticazione in uno dei due modi:When using Azure AD authentication with Azure Batch, you can authenticate in one of two ways:

  • Usando l'autenticazione integrata per autenticare un utente che interagisce con l'applicazione.By using integrated authentication to authenticate a user that is interacting with the application. Un'applicazione che usa l'autenticazione integrata raccoglie le credenziali dell'utente e le usa per autenticare l'accesso alle risorse di Batch.An application using integrated authentication gathers a user's credentials and uses those credentials to authenticate access to Batch resources.
  • Usando un'entità servizio per autenticare un'applicazione automatica.By using a service principal to authenticate an unattended application. L'entità servizio definisce i criteri e le autorizzazioni per un'applicazione al fine di rappresentare l'applicazione al momento dell'accesso alle risorse in fase di runtime.A service principal defines the policy and permissions for an application in order to represent the application when accessing resources at runtime.

Per altre informazioni su Azure AD, vedere Documentazione di Azure Active Directory.To learn more about Azure AD, see the Azure Active Directory Documentation.

Endpoint per l'autenticazioneEndpoints for authentication

Per autenticare le applicazioni Batch con Azure AD, è necessario includere endpoint noti nel codice.To authenticate Batch applications with Azure AD, you need to include some well-known endpoints in your code.

Endpoint di Azure ADAzure AD endpoint

L'endpoint dell'autorità di base di Azure AD è:The base Azure AD authority endpoint is:

https://login.microsoftonline.com/

Per eseguire l'autenticazione con Azure AD, usare l'endpoint con l'ID tenant, ovvero l'ID directory.To authenticate with Azure AD, you use this endpoint together with the tenant ID (directory ID). L'ID tenant identifica il tenant di Azure AD da usare per l'autenticazione.The tenant ID identifies the Azure AD tenant to use for authentication. Per recuperare l'ID tenant, attenersi alla procedura descritta in Ottenere l'ID tenant per Azure Active Directory:To retrieve the tenant ID, follow the steps outlined in Get the tenant ID for your Azure Active Directory:

https://login.microsoftonline.com/<tenant-id>

Nota

L'endpoint specifico per il tenant è obbligatorio quando si esegue l'autenticazione tramite un'entità servizio.The tenant-specific endpoint is required when you authenticate using a service principal.

L'endpoint specifico del tenant è facoltativo quando si esegue l'autenticazione usando l'autenticazione integrata, ma è consigliabile usarlo.The tenant-specific endpoint is optional when you authenticate using integrated authentication, but recommended. Tuttavia, è anche possibile usare l'endpoint di Azure AD comune.However, you can also use the Azure AD common endpoint. L'endpoint comune consente di usare un'interfaccia di raccolta di credenziali generiche quando non è disponibile un tenant specifico.The common endpoint provides a generic credential gathering interface when a specific tenant is not provided. L'endpoint comune è https://login.microsoftonline.com/common.The common endpoint is https://login.microsoftonline.com/common.

Per altre informazioni sugli endpoint di Azure AD, vedere Scenari di autenticazione per Azure AD.For more information about Azure AD endpoints, see Authentication Scenarios for Azure AD.

Endpoint di risorse BatchBatch resource endpoint

Usare l'endpoint delle risorse di Azure Batch per acquisire un token per autenticare le richieste al servizio Batch:Use the Azure Batch resource endpoint to acquire a token for authenticating requests to the Batch service:

https://batch.core.windows.net/

Registrare l'applicazione con un tenantRegister your application with a tenant

Il primo passaggio nell'uso di Azure AD per eseguire l'autenticazione consiste nella registrazione dell'applicazione nel tenant di Azure AD.The first step in using Azure AD to authenticate is registering your application in an Azure AD tenant. La registrazione dell'applicazione consente di chiamare l'Active Directory Authentication Library, ovvero ADAL, di Azure dal codice.Registering your application enables you to call the Azure Active Directory Authentication Library (ADAL) from your code. ADAL offre un'API per eseguire l'autenticazione con Azure AD dall'applicazione.The ADAL provides an API for authenticating with Azure AD from your application. La registrazione dell'applicazione è necessaria se si prevede di usare l'autenticazione integrata o un'entità servizio.Registering your application is required whether you plan to use integrated authentication or a service principal.

Quando si registra l'applicazione, si danno informazioni sull'applicazione ad Azure AD.When you register your application, you supply information about your application to Azure AD. Azure AD fornisce quindi un ID applicazione che viene usato per associare l'applicazione ad Azure AD in fase di esecuzione.Azure AD then provides an application ID that you use to associate your application with Azure AD at runtime. Per altre informazioni sull'ID applicazione, vedere Oggetti applicazione e oggetti entità servizio in Azure Active Directory.To learn more about the application ID, see Application and service principal objects in Azure Active Directory.

Per registrare l'applicazione Batch, seguire la procedura descritta nella sezione Aggiunta di un'applicazione dell'articolo Integrazione di applicazioni con Azure Active Directory.To register your Batch application, follow the steps in the Adding an Application section in Integrating applications with Azure Active Directory. Se si registra l'applicazione come applicazione nativa, è possibile specificare qualsiasi URI valido per l'URI di reindirizzamento.If you register your application as a Native Application, you can specify any valid URI for the Redirect URI. Non è necessario che sia un endpoint reale.It does not need to be a real endpoint.

Al termine della registrazione dell'applicazione, verrà visualizzata l'ID applicazione:After you've registered your application, you'll see the application ID:

Registrare l'applicazione Batch in Azure AD

Per altre informazioni sulla registrazione di un'applicazione con Azure AD, vedere Scenari di autenticazione per Azure AD.For more information about registering an application with Azure AD, see Authentication Scenarios for Azure AD.

Ottenere l'ID tenant per Active DirectoryGet the tenant ID for your Active Directory

L'ID tenant identifica il tenant di Azure AD che offre servizi di autenticazione all'applicazione.The tenant ID identifies the Azure AD tenant that provides authentication services to your application. Per ottenere l'ID tenant, seguire questa procedura:To get the tenant ID, follow these steps:

  1. Nel portale di Azure selezionare Active Directory.In the Azure portal, select your Active Directory.
  2. Fare clic su Proprietà.Click Properties.
  3. Copiare il valore GUID indicato per l'ID directory.Copy the GUID value provided for the directory ID. Questo valore viene chiamato anche ID tenant.This value is also called the tenant ID.

Copiare l'ID directory

Usare l'autenticazione integrataUse integrated authentication

Per eseguire l'autenticazione con l'autenticazione integrata, è necessario concedere le autorizzazioni per l'applicazione per connettersi all'API del servizio Batch.To authenticate with integrated authentication, you need to grant your application permissions to connect to the Batch service API. Questo passaggio consente all'applicazione di autenticare le chiamate all'API del servizio Batch con Azure AD.This step enables your application to authenticate calls to the Batch service API with Azure AD.

Dopo aver registrato l'applicazione, seguire questi passaggi nel portale di Azure per concedere l'accesso al servizio Batch:Once you've registered your application, follow these steps in the Azure portal to grant it access to the Batch service:

  1. Nel riquadro di spostamento a sinistra del portale di Azure scegliere Altri servizi e fare clic su Registrazioni per l'app.In the left-hand navigation pane of the Azure portal, choose More Services, click App Registrations.
  2. Cercare il nome dell'applicazione nell'elenco di registrazioni di app:Search for the name of your application in the list of app registrations:

    Cercare il nome dell'applicazione

  3. Aprire il pannello Impostazioni per l'applicazione.Open the Settings blade for your application. Nella sezione Accesso all'API selezionare Autorizzazioni necessarie.In the API Access section, select Required permissions.

  4. Nel pannello Autorizzazioni necessarie fare clic sul pulsante Aggiungi.In the Required permissions blade, click the Add button.
  5. Nel passaggio 1 cercare l'API Batch.In step 1, search for the Batch API. Cercare ognuna di queste stringhe fino a trovare l'API:Search for each of these strings until you find the API:
    1. MicrosoftAzureBatch.MicrosoftAzureBatch.
    2. Microsoft Azure Batch.Microsoft Azure Batch. I tenant di Azure AD più recenti potrebbero usare questo nome.Newer Azure AD tenants may use this name.
    3. ddbf3205-c6bd-46ae-8127-60eb93363864 è l'ID dell'API Batch.ddbf3205-c6bd-46ae-8127-60eb93363864 is the ID for the Batch API.
  6. Dopo aver trovato l'API Batch, selezionarla e fare clic sul pulsante Seleziona.Once you find the Batch API, select it and click the Select button.
  7. Nel passaggio 2 selezionare la casella di controllo accanto ad Access Azure Batch Service (Accedi al servizio Azure Batch) e fare clic sul pulsante Seleziona.In step 2, select the check box next to Access Azure Batch Service and click the Select button.
  8. Fare clic sul pulsante Fine.Click the Done button.

Il pannello Autorizzazioni necessarie mostra ora che l'applicazione Azure AD concede l'accesso alle API sia di ADAL che del servizio Batch.The Required Permissions blade now shows that your Azure AD application has access to both ADAL and the Batch service API. Le autorizzazioni vengono automaticamente concesse ad ADAL quando si registra per la prima volta l'app in Azure AD.Permissions are granted to ADAL automatically when you first register your app with Azure AD.

Concedere le autorizzazioni delle API

Usare un’entità servizioUse a service principal

Per autenticare un'applicazione in esecuzione automatica, usare un'entità servizio.To authenticate an application that runs unattended, you use a service principal. Dopo aver registrato l'applicazione, seguire questi passaggi nel portale di Azure per configurare un'entità servizio:After you've registered your application, follow these steps in the Azure portal to configure a service principal:

  1. Richiedere una chiave privata per l'applicazione.Request a secret key for your application.
  2. Assegnare un ruolo con controllo degli accessi in base al ruolo all'applicazione.Assign an RBAC role to your application.

Richiedere una chiave privata per l'applicazioneRequest a secret key for your application

Quando l'applicazione autentica con un'entità servizio, invia l'ID dell'applicazione e una chiave privata ad Azure AD.When your application authenticates with a service principal, it sends both the application ID and a secret key to Azure AD. Sarà necessario creare e copiare la chiave privata da usare dal codice.You'll need to create and copy the secret key to use from your code.

Seguire questa procedura nel portale di Azure:Follow these steps in the Azure portal:

  1. Nel riquadro di spostamento a sinistra del portale di Azure scegliere Altri servizi e fare clic su Registrazioni per l'app.In the left-hand navigation pane of the Azure portal, choose More Services, click App Registrations.
  2. Cercare il nome dell'applicazione nell'elenco di registrazioni dell'app.Search for the name of your application in the list of app registrations.
  3. Visualizzare il pannello Impostazioni.Display the Settings blade. Nella sezione Accesso all'API selezionare Chiavi.In the API Access section, select Keys.
  4. Per creare una chiave, immettere una descrizione per la chiave.To create a key, enter a description for the key. Quindi selezionare la durata della chiave di uno o due anni.Then select a duration for the key of either one or two years.
  5. Fare clic sul pulsante Salva per creare e visualizzare la chiave.Click the Save button to create and display the key. Copiare il valore della chiave in una posizione sicura, poiché non sarà possibile accedervi nuovamente dopo aver chiuso il pannello.Copy the key value to a safe place, as you won't be able to access it again after you leave the blade.

    Creare una chiave privata

Assegnare un ruolo con controllo degli accessi in base al ruolo all'applicazioneAssign an RBAC role to your application

Per eseguire l'autenticazione con un'entità servizio, è necessario assegnare il ruolo con controllo degli accessi in base al ruolo all'applicazione.To authenticate with a service principal, you need to assign an RBAC role to your application. A tale scopo, seguire questa procedura:Follow these steps:

  1. Nel portale di Azure passare all'account Batch usato dall'applicazione.In the Azure portal, navigate to the Batch account used by your application.
  2. Nel pannello Impostazioni per l'account Batch selezionare Controllo di accesso (IAM).In the Settings blade for the Batch account, select Access Control (IAM).
  3. Fare clic su Add .Click the Add button.
  4. Dall'elenco a discesa Ruolo scegliere il ruolo Collaboratore o Lettore per l'applicazione.From the Role drop-down, choose either the Contributor or Reader role for your application. Per altre informazioni sui ruoli, vedere Introduzione al controllo degli accessi in base al ruolo nel portale di Azure.For more information on these roles, see Get started with Role-Based Access Control in the Azure portal.
  5. Nel campo Seleziona immettere il nome dell'applicazione.In the Select field, enter the name of your application. Selezionare l'applicazione dall'elenco e fare clic su Salva.Select your application from the list, and click Save.

L'applicazione dovrebbe ora essere visualizzata nelle impostazioni di controllo di accesso con un ruolo con controllo degli accessi in base al ruolo assegnato.Your application should now appear in your access control settings with an RBAC role assigned.

Assegnare un ruolo con controllo degli accessi in base al ruolo all'applicazione

Ottenere l'ID tenant per Azure Active DirectoryGet the tenant ID for your Azure Active Directory

L'ID tenant identifica il tenant di Azure AD che offre servizi di autenticazione all'applicazione.The tenant ID identifies the Azure AD tenant that provides authentication services to your application. Per ottenere l'ID tenant, seguire questa procedura:To get the tenant ID, follow these steps:

  1. Nel portale di Azure selezionare Active Directory.In the Azure portal, select your Active Directory.
  2. Fare clic su Proprietà.Click Properties.
  3. Copiare il valore GUID indicato per l'ID directory.Copy the GUID value provided for the directory ID. Questo valore viene chiamato anche ID tenant.This value is also called the tenant ID.

Copiare l'ID directory

Esempi di codiceCode examples

Gli esempi di codice in questa sezione illustrano come eseguire l'autenticazione con Azure AD mediante l'autenticazione integrata e con un'entità servizio.The code examples in this section show how to authenticate with Azure AD using integrated authentication and with a service principal. Questi esempi di codice usano .NET, ma i concetti sono simili per le altre lingue.These code examples use .NET, but the concepts are similar for other languages.

Nota

Un token di autenticazione di Azure AD scade dopo un'ora.An Azure AD authentication token expires after one hour. Quando si usa un oggetto BatchClient di lunga durata, è consigliabile recuperare un token da ADAL a ogni richiesta per assicurarsi di avere sempre un token valido.When using a long-lived BatchClient object, we recommend that you retrieve a token from ADAL on every request to ensure you always have a valid token.

A tale scopo, in .NET scrivere un metodo che recuperi il token da Azure AD e passi tale metodo a un oggetto BatchTokenCredentials come delegato.To achieve this in .NET, write a method that retrieves the token from Azure AD and pass that method to a BatchTokenCredentials object as a delegate. Il metodo delegato verrà chiamato a ogni richiesta al servizio Batch per garantire che venga fornito un token valido.The delegate method is called on every request to the Batch service to ensure that a valid token is provided. Per impostazione predefinita, ADAL memorizza i token nella cache, quindi un nuovo token viene recuperato da Azure AD solo quando necessario.By default ADAL caches tokens, so a new token is retrieved from Azure AD only when necessary. Per altre informazioni sui token in Azure AD, vedere Scenari di autenticazione per Azure AD.For more information about tokens in Azure AD, see Authentication Scenarios for Azure AD.

Esempio di codice: uso dell'autenticazione integrata di Azure AD con .NET di BatchCode example: Using Azure AD integrated authentication with Batch .NET

Per eseguire l'autenticazione con l'autenticazione integrata di Batch .NET, fare riferimento al pacchetto Azure Batch .NET e al pacchetto ADAL.To authenticate with integrated authentication from Batch .NET, reference the Azure Batch .NET package and the ADAL package.

Includere le istruzioni using seguenti nel codice:Include the following using statements in your code:

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Auth;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

Fare riferimento all'endpoint di Azure AD nel codice, che include l'ID tenant.Reference the Azure AD endpoint in your code, including the tenant ID. Per recuperare l'ID tenant, attenersi alla procedura descritta in Ottenere l'ID tenant per Azure Active Directory:To retrieve the tenant ID, follow the steps outlined in Get the tenant ID for your Azure Active Directory:

private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";

Riferimento all'endpoint delle risorse per il servizio Batch:Reference the Batch service resource endpoint:

private const string BatchResourceUri = "https://batch.core.windows.net/";

Riferimento all'account Batch:Reference your Batch account:

private const string BatchAccountUrl = "https://myaccount.mylocation.batch.azure.com";

Specificare l'ID dell'applicazione (ID client).Specify the application ID (client ID) for your application. L'ID dell'applicazione è disponibile nella registrazione dell'app nel portale di Azure:The application ID is available from your app registration in the Azure portal:

private const string ClientId = "<application-id>";

Copiare anche l'URI di reindirizzamento specificato durante il processo di registrazione.Also copy the redirect URI that you specified during the registration process. L'URI di reindirizzamento specificato nel codice deve corrispondere a quello specificato quando è stata registrata l'applicazione:The redirect URI specified in your code must match the redirect URI that you provided when you registered the application:

private const string RedirectUri = "http://mybatchdatasample";

Scrivere un metodo di callback per acquisire il token di autenticazione da Azure AD.Write a callback method to acquire the authentication token from Azure AD. Il metodo di callback GetAuthenticationTokenAsync illustrato qui chiama ADAL per eseguire l'autenticazione a un utente che interagisce con l'applicazione.The GetAuthenticationTokenAsync callback method shown here calls ADAL to authenticate a user who is interacting with the application. Il metodo AcquireTokenAsync indicato da ADAL richiede all'utente le credenziali e l'applicazione procede dopo che sono state specificate, a meno che queste credenziali non siano già state memorizzate nella cache:The AcquireTokenAsync method provided by ADAL prompts the user for their credentials, and the application proceeds once the user provides them (unless it has already cached credentials):

public static async Task<string> GetAuthenticationTokenAsync()
{
    var authContext = new AuthenticationContext(AuthorityUri);

    // Acquire the authentication token from Azure AD.
    var authResult = await authContext.AcquireTokenAsync(BatchResourceUri, 
                                                        ClientId, 
                                                        new Uri(RedirectUri), 
                                                        new PlatformParameters(PromptBehavior.Auto));

    return authResult.AccessToken;
}

Costruire un oggetto BatchTokenCredentials che accetta il delegato come parametro.Construct a BatchTokenCredentials object that takes the delegate as a parameter. Usare tali credenziali per aprire un oggetto BatchClient.Use those credentials to open a BatchClient object. È possibile usare l'oggetto BatchClient per operazioni successive sul servizio Batch:You can use that BatchClient object for subsequent operations against the Batch service:

public static async Task PerformBatchOperations()
{
    Func<Task<string>> tokenProvider = () => GetAuthenticationTokenAsync();

    using (var client = await BatchClient.OpenAsync(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
    {
        await client.JobOperations.ListJobs().ToListAsync();
    }
}

Esempio di codice: uso di un'entità servizio Azure AD con Batch .NETCode example: Using an Azure AD service principal with Batch .NET

Per eseguire l'autenticazione con un'entità servizio di Batch .NET, fare riferimento al pacchetto Azure Batch .NET e al pacchetto ADAL.To authenticate with a service principal from Batch .NET, reference the Azure Batch .NET package and the ADAL package.

Includere le istruzioni using seguenti nel codice:Include the following using statements in your code:

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Auth;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

Fare riferimento all'endpoint di Azure AD nel codice, che include l'ID tenant.Reference the Azure AD endpoint in your code, including the tenant ID. Quando si usa un'entità servizio, è necessario indicare un endpoint specifico del tenant.When using a service principal, you must provide a tenant-specific endpoint. Per recuperare l'ID tenant, attenersi alla procedura descritta in Ottenere l'ID tenant per Azure Active Directory:To retrieve the tenant ID, follow the steps outlined in Get the tenant ID for your Azure Active Directory:

private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";

Riferimento all'endpoint delle risorse per il servizio Batch:Reference the Batch service resource endpoint:

private const string BatchResourceUri = "https://batch.core.windows.net/";

Riferimento all'account Batch:Reference your Batch account:

private const string BatchAccountUrl = "https://myaccount.mylocation.batch.azure.com";

Specificare l'ID dell'applicazione (ID client).Specify the application ID (client ID) for your application. L'ID dell'applicazione è disponibile nella registrazione dell'app nel portale di Azure:The application ID is available from your app registration in the Azure portal:

private const string ClientId = "<application-id>";

Specificare la chiave privata copiata dal portale di Azure:Specify the secret key that you copied from the Azure portal:

private const string ClientKey = "<secret-key>";

Scrivere un metodo di callback per acquisire il token di autenticazione da Azure AD.Write a callback method to acquire the authentication token from Azure AD. Il metodo di callback GetAuthenticationTokenAsync illustrato di seguito chiama ADAL per l'autenticazione automatica:The GetAuthenticationTokenAsync callback method shown here calls ADAL for unattended authentication:

public static async Task<string> GetAuthenticationTokenAsync()
{
    AuthenticationContext authContext = new AuthenticationContext(AuthorityUri);
    AuthenticationResult authResult = await authContext.AcquireTokenAsync(BatchResourceUri, new ClientCredential(ClientId, ClientKey));

    return authResult.AccessToken;
}

Costruire un oggetto BatchTokenCredentials che accetta il delegato come parametro.Construct a BatchTokenCredentials object that takes the delegate as a parameter. Usare tali credenziali per aprire un oggetto BatchClient.Use those credentials to open a BatchClient object. È quindi possibile usare l'oggetto BatchClient per operazioni successive sul servizio Batch:You can then use that BatchClient object for subsequent operations against the Batch service:

public static async Task PerformBatchOperations()
{
    Func<Task<string>> tokenProvider = () => GetAuthenticationTokenAsync();

    using (var client = await BatchClient.OpenAsync(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
    {
        await client.JobOperations.ListJobs().ToListAsync();
    }
}

Passaggi successiviNext steps

Per altre informazioni su Azure AD, vedere Documentazione di Azure Active Directory.To learn more about Azure AD, see the Azure Active Directory Documentation. Esempi dettagliati dell'uso di ADAL sono disponibili nella libreria degli esempi di codice per Azure.In-depth examples showing how to use ADAL are available in the Azure Code Samples library.

Per altre informazioni sull'entità servizio, vedere Oggetti applicazione e oggetti entità servizio in Azure Active Directory.To learn more about service principals, see Application and service principal objects in Azure Active Directory. Per creare un'entità servizio tramite il portale di Azure, vedere Usare il portale per creare un'applicazione Azure Active Directory e un'entità servizio che possano accedere alle risorse.To create a service principal using the Azure portal, see Use portal to create Active Directory application and service principal that can access resources. È anche possibile creare un'entità servizio con PowerShell o con l'interfaccia della riga di comando di Azure.You can also create a service principal with PowerShell or Azure CLI.

Per eseguire l'autenticazione di applicazioni di gestione batch con Azure AD, vedere Authenticate Batch Management solutions with Active Directory (Autenticare le soluzioni di gestione batch con Active Directoy).To authenticate Batch Management applications using Azure AD, see Authenticate Batch Management solutions with Active Directory.