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:
- De tenant-id van uw Azure-abonnement (ook wel een map-id genoemd). Zie Tenant-id ophalen.
- De client-id van de Microsoft Entra-toepassing. Zie Een Microsoft Entra-toepassing maken en een toepassings-id ophalen.
- De geheime sleutel van de Microsoft Entra-toepassing. Zie Toepassingsverificatiesleutel ophalen.
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
- Meld u aan bij de Azure-portal.
- 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.
- Selecteer toegangsbeheer (IAM) in het menu van de resourcegroep.
- Selecteer het tabblad Roltoewijzingen om de huidige roltoewijzingen weer te geven.
- Selecteer + Toevoegen bovenaan de pagina.
- 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
Maak een C#-consoletoepassing.
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
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); } } }