Udostępnij za pośrednictwem


Tworzenie aplikacji usługi HDInsight uwierzytelniania nieinterakcyjnego .NET

Uruchom aplikację Microsoft .NET Azure HDInsight w ramach własnej tożsamości aplikacji (nieinterakcyjnej) lub pod tożsamością zalogowanego użytkownika aplikacji (interaktywnej). W tym artykule pokazano, jak utworzyć nieinterakcyjną aplikację .NET uwierzytelniania w celu nawiązania połączenia z platformą Azure i zarządzania usługą HDInsight. Aby zapoznać się z przykładem aplikacji interaktywnej, zobacz Połączenie do usługi Azure HDInsight.

Z poziomu aplikacji nieinterakcyjnej platformy .NET potrzebne są następujące elementy:

Wymagania wstępne

Klaster usługi HDInsight. Zapoznaj się z samouczkiem wprowadzającym.

Przypisywanie roli do aplikacji Microsoft Entra

Przypisz aplikację Microsoft Entra rolę, aby przyznać jej uprawnienia do wykonywania akcji. Zakres można ustawić na poziomie subskrypcji, grupy zasobów lub zasobu. Uprawnienia są dziedziczone do niższych poziomów zakresu. Na przykład dodanie aplikacji do roli Czytelnik dla grupy zasobów oznacza, że aplikacja może odczytać grupę zasobów i wszystkie zasoby w niej. W tym artykule ustawisz zakres na poziomie grupy zasobów. Aby uzyskać więcej informacji, zobacz Przypisywanie ról platformy Azure do zarządzania dostępem do zasobów subskrypcji platformy Azure.

Aby dodać rolę Właściciel do aplikacji Microsoft Entra

  1. Zaloguj się w witrynie Azure Portal.
  2. Przejdź do grupy zasobów, w której znajduje się klaster usługi HDInsight, na którym uruchomisz zapytanie hive w dalszej części tego artykułu. Jeśli masz dużą liczbę grup zasobów, możesz użyć filtru, aby znaleźć odpowiednią grupę.
  3. W menu grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
  4. Wybierz kartę Przypisania ról, aby wyświetlić bieżące przypisania ról.
  5. W górnej części strony wybierz pozycję + Dodaj.
  6. Postępuj zgodnie z instrukcjami, aby dodać rolę Właściciel do aplikacji Firmy Microsoft Entra. Po pomyślnym dodaniu roli aplikacja zostanie wyświetlona w obszarze Rola właściciela.

Tworzenie aplikacji klienckiej usługi HDInsight

  1. Utwórz aplikację konsolową języka C#.

  2. Dodaj następujące pakiety NuGet :

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Uruchom następujący 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);
            }
        }
    }
    

Następne kroki