Freigeben über


Erstellen einer nicht interaktiven Authentifizierungsanwendung .NET HDInsight

Führen Sie Ihre Microsoft .NET Azure HDInsight-Anwendung entweder unter der eigenen Identität (nicht interaktiv) oder unter der Identität des angemeldeten Benutzers der Anwendung (interaktiv) aus. In diesem Artikel erfahren Sie, wie Sie eine nicht interaktive .NET-Authentifizierungsanwendung erstellen, um eine Verbindung mit Azure herzustellen und HDInsight zu verwalten. Ein Beispiel für eine interaktive Anwendung finden Sie unter Herstellen einer Verbindung mit Azure HDInsight.

Von Ihrer nicht interaktiven .NET-Anwendung benötigen Sie Folgendes:

Voraussetzungen

Einen HDInsight-Cluster Sehen Sie sich das Lernprogramm "Erste Schritte" an.

Zuweisen einer Rolle zur Microsoft Entra-Anwendung

Weisen Sie Ihrer Microsoft Entra-Anwendung eine Rolle zu, um ihr Berechtigungen zum Ausführen von Aktionen zu erteilen. Sie können den Umfang auf Abonnement-, Ressourcengruppen- oder Ressourcenebene festlegen. Die Berechtigungen werden auf die unteren Ebenen des Gültigkeitsbereichs vererbt. Beispielsweise bedeutet das Hinzufügen einer Anwendung zur Rolle "Leser" für eine Ressourcengruppe, dass die Anwendung die Ressourcengruppe und alle darin enthaltenen Ressourcen lesen kann. In diesem Artikel legen Sie den Bereich auf Ressourcengruppenebene fest. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen zum Verwalten des Zugriffs auf Ihre Azure-Abonnementressourcen.

So fügen Sie der Microsoft Entra-Anwendung die Rolle "Besitzer" hinzu

  1. Melden Sie sich beim Azure-Portal an.
  2. Navigieren Sie zu der Ressourcengruppe mit dem HDInsight-Cluster, auf dem Sie Ihre Hive-Abfrage weiter unten in diesem Artikel ausführen. Wenn Sie über eine große Anzahl von Ressourcengruppen verfügen, können Sie den Filter verwenden, um das gewünschte zu finden.
  3. Wählen Sie im Ressourcengruppenmenü Zugriffssteuerung (IAM) aus.
  4. Wählen Sie die Registerkarte "Rollenzuweisungen " aus, um die aktuellen Rollenzuweisungen anzuzeigen.
  5. Wählen Sie oben auf der Seite +Hinzufügen aus.
  6. Folgen Sie den Anweisungen zum Hinzufügen der Rolle "Besitzer" zu Ihrer Microsoft Entra-Anwendung. Nachdem Sie die Rolle erfolgreich hinzugefügt haben, wird die Anwendung unter der Rolle "Besitzer" aufgeführt.

Entwickeln einer HDInsight-Clientanwendung

  1. Erstellen Sie eine C#-Konsolenanwendung.

  2. Fügen Sie die folgenden NuGet-Pakete hinzu:

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Führen Sie den folgenden Code aus:

    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ächste Schritte