Pour continuer ma quête de création par programme et l'application Azure (suite de https://stackoverflow.com/a/44753728/1332416), j'ai un core qui acquiert un subscriptionID
et un tenantId
comme suit , mais je suis à perte car comment pourrais-je créer une application et son service principal associé localement. C'est essentiellement où New-AzureRmADApplication
et New-AzureRmADServicePrincipal
seraient utilisés dans le cas de PowerShell. Cette question est partiellement résolue à https://stackoverflow.com/a/44631758/1332416, mais il semble que .NET Core puisse être la cause de certains problèmes ici car les types ne sont pas à trouver.Création d'une application Azure AD et d'un service principal à l'aide de .NET Core (API et HTTP)
Pour être plus concret, j'ai le code comme suit pour
string resource = "https://management.core.windows.net/";
string clientId = "1950a258-227b-4e31-a9cf-717495945fc2";
string userName = "<replace>";
string password = "<replace>";
string apiVersion = "2016-06-01";
using(var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string tokenEndpoint = "https://login.microsoftonline.com/common/oauth2/token";
var body = $"resource={resource}&client_id={clientId}&grant_type=password&username={userName}&password={password}";
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await client.PostAsync(tokenEndpoint, stringContent).ConfigureAwait(false);
var result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
JObject jobject = JObject.Parse(result);
var token = jobject["access_token"].Value<string>();
client.DefaultRequestHeaders.Add("Authorization", $"bearer {token}");
var subcriptions = await client.GetStringAsync($"https://management.azure.com/subscriptions?api-version={apiVersion}").ConfigureAwait(false);
var tenants = await client.GetStringAsync($"https://management.azure.com/tenants?api-version={apiVersion}").ConfigureAwait(false);
Console.WriteLine(subcriptions);
Console.WriteLine(tenants);
//We have the SubscriptionID, TenantId and the token to
//the subscription here. How to do New-AzureRmADApplication and New-AzureRmADServicePrincipal with the application ID here? Specifically I'm considering to use a certificate thumbrint if it matters.
//var subscription = "... from subscriptions...";
//var tenantId = "... from tenants...";
}
Microsoft semble recommander l'utilisation de la nouvelle API graphique, voir https://msdn.microsoft.com/fr-fr/library/azure/ad/graph/howto/azure-ad-graph-api-operations-overview pour exemple. Laissez-moi examiner un peu ... – Veksi
Oui :) Mais la fonctionnalité spécifique est encore seulement sur le point de terminaison bêta de MS Graph. Si vous êtes prêt à l'utiliser, vous pouvez l'utiliser en même temps. – juunas
Comme vous le savez probablement, il est déjà près de minuit. Je n'ai pratiquement aucune connaissance de ces API, donc je dois reporter l'expérimentation jusqu'à demain. Mais je pense que la bêta est la voie à suivre, je suis un peu inquiet de savoir comment cela se passe avec le code que j'ai déjà (à peine) fonctionné (voir le code) et .NET Core, donc expérimenter un peu et voir si je devrais mettre à jour la question (peut-être je devrais remplacer 'azure-graph-api' – Veksi