Een niet-interactieve verificatie .NET HDInsight-toepassing maken

Voer uw Microsoft .NET Azure HDInsight-toepassing uit onder de eigen identiteit van de toepassing (niet-interactief) of onder de identiteit van de aangemelde gebruiker van de toepassing (interactief). In dit artikel leest u hoe u een .NET-toepassing voor niet-interactieve verificatie maakt om verbinding te maken met Azure en HDInsight te beheren. Zie Verbinding maken naar Azure HDInsight voor een voorbeeld van een interactieve toepassing.

Vanuit uw niet-interactieve .NET-toepassing hebt u het volgende nodig:

Vereisten

Een HDInsight-cluster. Zie de zelfstudie Aan de slag.

Een rol toewijzen aan de Microsoft Entra-toepassing

Wijs uw Microsoft Entra-toepassing een rol toe om deze machtigingen te verlenen om acties uit te voeren. U kunt het bereik instellen op het niveau van het abonnement, de resourcegroep of de resource. De machtigingen worden overgenomen tot lagere scopeniveaus. Als u bijvoorbeeld een toepassing toevoegt aan de rol Lezer voor een resourcegroep, betekent dit dat de toepassing de resourcegroep en alle resources erin kan lezen. In dit artikel stelt u het bereik in op het niveau van de resourcegroep. Zie Azure-rollen toewijzen voor het beheren van de toegang tot uw Azure-abonnementsresources voor meer informatie.

De rol Eigenaar toevoegen aan de Microsoft Entra-toepassing

  1. Meld u aan bij de Azure-portal.
  2. Navigeer naar de resourcegroep met het HDInsight-cluster waarop u de Hive-query verderop in dit artikel uitvoert. Als u een groot aantal resourcegroepen hebt, kunt u het filter gebruiken om de gewenste resourcegroep te vinden.
  3. Selecteer toegangsbeheer (IAM) in het menu van de resourcegroep.
  4. Selecteer het tabblad Roltoewijzingen om de huidige roltoewijzingen weer te geven.
  5. Selecteer + Toevoegen bovenaan de pagina.
  6. Volg de instructies om de rol Eigenaar toe te voegen aan uw Microsoft Entra-toepassing. Nadat u de rol hebt toegevoegd, wordt de toepassing vermeld onder de rol Eigenaar.

Een HDInsight-clienttoepassing ontwikkelen

  1. Maak een C#-consoletoepassing.

  2. Voeg de volgende NuGet-pakketten toe:

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Voer de volgende code uit:

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

Volgende stappen