Existe-t-il un moyen d'acquérir un jeton basé sur Azure Active Directory pour une certaine ressource Azure (dans mon cas Time Series Insights) à l'aide de PowerShell? Pas pour un principe de service mais pour l'utilisateur actuel. Dans .NET (c #), il est désormais très facile d'utiliser Managed Service Identity :
using Microsoft.Azure.Services.AppAuthentication;
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string token = await azureServiceTokenProvider.GetAccessTokenAsync("https://api.timeseries.azure.com/");
Alors, est-ce quelque chose qui serait également faisable dans PowerShell? Tout exemple que j'ai vu jusqu'à présent utilise toujours les principes de service ou me donne simplement des jetons pour les API de gestion Azure pour l'utilisateur actuel.
Si votre script PowerShell s'exécute sur une machine qui est jointe au domaine Active Directory sur site, la machine est connectée au réseau de l'entreprise et l'utilisateur qui exécute le script est un utilisateur de domaine synchronisé avec Azure Active Directory, vous pouvez utiliser un remplacement d'ADAL AcquireTokenAsync qui utilise l'authentification Windows intégrée.
Cet exemple PowerShell acquiert un jeton pour que l'utilisateur actuel appelle Graph:
add-type -path "\Microsoft.IdentityModel.Clients.ActiveDirectory.3.13.4\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
$clientId = "1950a258-227b-4e31-a9cf-717495945fc2"
$resourceAppIdURI = "https://graph.windows.net"
$UserCredential = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential" -ArgumentList "[email protected]"
$authority = "https://login.windows.net/TENANT.onmicrosoft.com"
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority,$false
$authResult = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions]::AcquireTokenAsync($authContext,$resourceAppIdURI,$clientId,$UserCredential).result
Dans l'exemple, l'ID client est le GUID PowerShell bien connu et la ressource est AAD Graph. Si vous devez appeler une autre API (c'est-à-dire Time Series Insights), vous devrez enregistrer une nouvelle application (une application native) qui représente le script (vous devez spécifier le GUID de cette nouvelle application dans le script, variable $ clientId) et donnez-lui des autorisations déléguées pour appeler l'API. Assurez-vous également de spécifier le nom de votre locataire dans la variable $ autorité et le GUID ou l'URI de l'API dans la variable $ resourceAppIdURI.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots