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:
- ID penyewa langganan Azure Anda (juga disebut ID direktori). Lihat Dapatkan ID penyewa.
- ID klien aplikasi Microsoft Entra. Lihat Membuat aplikasi Microsoft Entra dan Mendapatkan ID aplikasi.
- Kunci rahasia aplikasi Microsoft Entra. Lihat Dapatkan kunci autentikasi aplikasi.
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
- Masuk ke portal Azure.
- 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.
- Pada menu grup sumber daya, pilih Kontrol akses (IAM).
- Pilih tab Penetapan peran untuk melihat daftar penetapan peran.
- Di bagian atas halaman, pilih + Tambahkan.
- 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
Buat aplikasi konsol C#.
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
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); } } }