Dela via


Skapa ett .NET HDInsight-program för icke-interaktiv autentisering

Kör ditt Microsoft .NET Azure HDInsight-program antingen under programmets egen identitet (icke-interaktiv) eller under identiteten för den inloggade användaren av programmet (interaktiv). Den här artikeln visar hur du skapar ett .NET-program för icke-interaktiv autentisering för att ansluta till Azure och hantera HDInsight. Ett exempel på ett interaktivt program finns i Anslut till Azure HDInsight.

Från ditt icke-interaktiva .NET-program behöver du:

Förutsättningar

Ett HDInsight-kluster. Se självstudien komma igång.

Tilldela en roll till Microsoft Entra-programmet

Tilldela ditt Microsoft Entra-program en roll för att ge den behörighet att utföra åtgärder. Du kan ange omfånget på prenumerationsnivå, resursgrupp eller resursnivå. Behörigheterna ärvs till lägre omfångsnivåer. Om du till exempel lägger till ett program i rollen Läsare för en resursgrupp innebär det att programmet kan läsa resursgruppen och alla resurser i den. I den här artikeln anger du omfånget på resursgruppsnivå. Mer information finns i Tilldela Azure-roller för att hantera åtkomst till dina Azure-prenumerationsresurser.

Så här lägger du till rollen Ägare i Microsoft Entra-programmet

  1. Logga in på Azure-portalen.
  2. Gå till den resursgrupp som har HDInsight-klustret där du ska köra Hive-frågan senare i den här artikeln. Om du har ett stort antal resursgrupper kan du använda filtret för att hitta den du vill ha.
  3. Välj Åtkomstkontroll (IAM) på resursgruppsmenyn.
  4. Välj fliken Rolltilldelningar för att se de aktuella rolltilldelningarna.
  5. Längst upp på sidan väljer du + Lägg till.
  6. Följ anvisningarna för att lägga till rollen Ägare i ditt Microsoft Entra-program. När du har lagt till rollen visas programmet under rollen Ägare.

Utveckla ett HDInsight-klientprogram

  1. Skapa ett C#-konsolprogram

  2. Lägg till följande NuGet-paket :

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Kör följande kod:

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

Nästa steg