Creare un'applicazione HDInsight .NET di autenticazione non interattivaCreate a non-interactive authentication .NET HDInsight application

È possibile eseguire l'applicazione Microsoft .NET di Azure HDInsight con l'identità specifica dell'applicazione (non interattiva) o con l'identità dell'utente che ha eseguito l'accesso all'applicazione (interattiva).You can run your Microsoft .NET Azure HDInsight application either under the application's own identity (non-interactive) or under the identity of the signed-in user of the application (interactive). Questo articolo descrive come creare un'applicazione .NET di autenticazione non interattiva per connettersi ad Azure e gestire HDInsight.This article shows you how to create a non-interactive authentication .NET application to connect to Azure and manage HDInsight. Per un esempio di applicazione interattiva, vedere Connettersi ad Azure HDInsight.For a sample of an interactive application, see Connect to Azure HDInsight.

Dall'applicazione .NET non interattiva, è necessario disporre degli elementi seguenti:From your non-interactive .NET application, you need:

PrerequisitiPrerequisites

Assegnare un ruolo all'applicazione Azure ADAssign a role to the Azure AD application

Assegnare un ruolo all'applicazione Azure AD per concedere le autorizzazioni per l'esecuzione di azioni.Assign your Azure AD application a role, to grant it permissions to perform actions. È possibile impostare l'ambito al livello della sottoscrizione, del gruppo di risorse o della risorsa.You can set the scope at the level of the subscription, resource group, or resource. Le autorizzazioni vengono ereditate ai livelli inferiori dell'ambito.The permissions are inherited to lower levels of scope. Se ad esempio si aggiunge un'applicazione al ruolo Lettore per un gruppo di risorse, l'applicazione può leggere il gruppo di risorse e le risorse in esso contenute. In questa esercitazione si imposta l'ambito a livello di gruppo di risorse.(For example, adding an application to the Reader role for a resource group means that the application can read the resource group and any resources in it.) In this tutorial, you set the scope at the resource group level. Per altre informazioni, vedere Usare l'assegnazione dei ruoli per gestire l'accesso alle risorse della sottoscrizione di Azure.For more information, see Use role assignments to manage access to your Azure subscription resources.

Per aggiungere il ruolo Proprietario all'applicazione Azure ADTo add the Owner role to the Azure AD application

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Nel menu a sinistra selezionare Gruppo di risorse.In the left menu, select Resource Group.
  3. Selezionare il gruppo di risorse contenente il cluster HDInsight in cui verrà eseguita la query Hive più avanti in questa esercitazione.Select the resource group that has the HDInsight cluster on which you will run your Hive query later in this tutorial. Se c'è un numero elevato di gruppi di risorse, è possibile usare il filtro per trovare il gruppo desiderato.If you have a large number of resource groups, you can use the filter to find the one you want.
  4. Nel menu relativo al gruppo di risorse selezionare Controllo di accesso (IAM).On the resource group menu, select Access control (IAM).
  5. In Utenti selezionare Aggiungi.Under Users, select Add.
  6. Seguire le istruzioni per aggiungere il ruolo Proprietario all'applicazione Azure AD.Follow the instructions to add the Owner role to your Azure AD application. Dopo avere aggiunto il ruolo, l'applicazione viene elencata in Utenti, con il ruolo Proprietario.After you successfully add the role, the application is listed under Users, with the Owner role.

Sviluppare un'applicazione client HDInsightDevelop an HDInsight client application

  1. Creare un'applicazione console C#.Create a C# console application.
  2. Aggiungere i pacchetti NuGet seguenti:Add the following NuGet packages:

     Install-Package Microsoft.Azure.Common.Authentication -Pre
     Install-Package Microsoft.Azure.Management.HDInsight -Pre
     Install-Package Microsoft.Azure.Management.Resources -Pre
    
  3. Eseguire il codice seguente:Run the following code:

    using System;
    using System.Security;
    using Microsoft.Azure;
    using Microsoft.Azure.Common.Authentication;
    using Microsoft.Azure.Common.Authentication.Factories;
    using Microsoft.Azure.Common.Authentication.Models;
    using Microsoft.Azure.Management.Resources;
    using Microsoft.Azure.Management.HDInsight;
    
    namespace CreateHDICluster
    {
        internal class Program
        {
            private static HDInsightManagementClient _hdiManagementClient;
    
            private static Guid SubscriptionId = new Guid("<Enter your Azure subscription ID>");
            private static string tenantID = "<Enter your tenant ID (also called directory ID)>";
            private static string applicationID = "<Enter your application ID>";
            private static string secretKey = "<Enter the application secret key>";
    
            private static void Main(string[] args)
            {
                var key = new SecureString();
                foreach (char c in secretKey) { key.AppendChar(c); }
    
                var tokenCreds = GetTokenCloudCredentials(tenantID, applicationID, key);
                var subCloudCredentials = GetSubscriptionCloudCredentials(tokenCreds, SubscriptionId);
    
                var resourceManagementClient = new ResourceManagementClient(subCloudCredentials);
                resourceManagementClient.Providers.Register("Microsoft.HDInsight");
    
                _hdiManagementClient = new HDInsightManagementClient(subCloudCredentials);
    
                var results = _hdiManagementClient.Clusters.List();
                foreach (var name in results.Clusters)
                {
                    Console.WriteLine("Cluster Name: " + name.Name);
                    Console.WriteLine("\t Cluster type: " + name.Properties.ClusterDefinition.ClusterType);
                    Console.WriteLine("\t Cluster location: " + name.Location);
                    Console.WriteLine("\t Cluster version: " + name.Properties.ClusterVersion);
                }
                Console.WriteLine("Press Enter to continue");
                Console.ReadLine();
            }
    
            /// Get the access token for a service principal and provided key.          
            public static TokenCloudCredentials GetTokenCloudCredentials(string tenantId, string clientId, SecureString secretKey)
            {
                var authFactory = new AuthenticationFactory();
                var account = new AzureAccount { Type = AzureAccount.AccountType.ServicePrincipal, Id = clientId };
                var env = AzureEnvironment.PublicEnvironments[EnvironmentName.AzureCloud];
                var accessToken =
                    authFactory.Authenticate(account, env, tenantId, secretKey, ShowDialog.Never).AccessToken;
    
                return new TokenCloudCredentials(accessToken);
            }
    
            public static SubscriptionCloudCredentials GetSubscriptionCloudCredentials(SubscriptionCloudCredentials creds, Guid subId)
            {
                return new TokenCloudCredentials(subId.ToString(), ((TokenCloudCredentials)creds).Token);
            }
        }
    }
    

Passaggi successiviNext steps