Bagikan melalui


Buat aplikasi autentikasi non-interaktif .NET Microsoft Azure HDInsight

Jalankan aplikasi Microsoft .NET Microsoft Azure HDInsight Anda baik di bawah identitas aplikasi sendiri (non-interaktif) atau di bawah identitas pengguna masuk aplikasi (interaktif). Artikel ini memperlihatkan kepada Anda cara membuat aplikasi .NET autentikasi non-interaktif untuk menyambungkan ke Azure dan mengelola Microsoft Azure HDInsight. Untuk sampel aplikasi interaktif, lihat Sambungkan ke Microsoft Azure HDInsight.

Dari aplikasi non-interaktif .NET Anda, Anda perlu:

Prasyarat

Kluster Microsoft Azure HDInsight. Lihat memulai tutorial.

Menetapkan peran ke aplikasi Microsoft Entra

Tetapkan peran aplikasi Microsoft Entra Anda, untuk memberinya izin untuk melakukan tindakan. Anda dapat menetapkan cakupan di tingkat langganan, grup sumber daya, atau sumber daya. Izin diturunkan ke tingkat cakupan yang lebih rendah. Misalnya, menambahkan aplikasi ke peran Pembaca untuk grup sumber daya berarti bahwa aplikasi dapat membaca grup sumber daya dan sumber daya apa pun di dalamnya. Dalam artikel ini, Anda menetapkan cakupan di tingkat grup sumber daya. Untuk informasi selengkapnya, lihat Tetapkan peran Azure untuk mengelola akses ke sumber daya langganan Azure Anda.

Untuk menambahkan peran Pemilik ke aplikasi Microsoft Entra

  1. Masuk ke portal Azure.
  2. Arahkan ke grup sumber daya yang memiliki kluster Microsoft Azure HDInsight tempat Anda menjalankan kueri Apache Hive Anda nanti di artikel ini. Jika Anda memiliki sejumlah besar grup sumber daya, Anda bisa menggunakan filter untuk menemukan grup yang Anda inginkan.
  3. Pada menu grup sumber daya, pilih Kontrol akses (IAM).
  4. Pilih tab Penetapan peran untuk melihat daftar penetapan peran.
  5. Di bagian atas halaman, pilih + Tambahkan.
  6. Ikuti instruksi untuk menambahkan peran Pemilik ke aplikasi Microsoft Entra Anda. Setelah Anda berhasil menambahkan peran, aplikasi tercantum di bawah peran Pemilik.

Kembangkan aplikasi klien Microsoft Azure HDInsight

  1. Buat aplikasi konsol C#.

  2. Tambahkan paket NuGet berikut:

    • Install-Package Microsoft.Azure.Common.Authentication -Pre
    • Install-Package Microsoft.Azure.Management.HDInsight -Pre
    • Install-Package Microsoft.Azure.Management.Resources -Pre
  3. Jalankan kode berikut:

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

Langkah berikutnya