Acquérir le jeton d'accès aux ressources Azure Active Directory auprès de PowerShell pour l'utilisateur actuel?

silencieux

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.

andresm53

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.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    Comment exécuter un fichier python avec des droits d'administrateur dans pycharm

  2. 2

    comment obtenir un objet de requête dans les tests unitaires de django?

  3. 3

    mongo kafka connect source

  4. 4

    Vérifier la longueur du nombre à partir du message, puis utiliser la valeur dans l'instruction

  5. 5

    comment convertir une chaîne en un tuple dateutil jour de la semaine sans utiliser eval

  6. 6

    Comment ajouter un texte dans un texte Python/Tkinter

  7. 7

    Aide de variable de débogage pprint jinja2

  8. 8

    Dans les modèles Hugo, comment vérifier la longueur du tableau de fichiers JSON?

  9. 9

    Impression de la longueur du chemin le plus court dans le labyrinthe

  10. 10

    Exécuter la requête externe pour chaque date obtenue à partir de la requête interne

  11. 11

    Recherche de dicton Jinja2 à l'aide d'une clé variable

  12. 12

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  13. 13

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  14. 14

    définir une propriété pour chaque nœud dans neo4j

  15. 15

    Pourquoi cette requête Java échoue-t-elle? renvoyer 0 quand il y a des résultats

  16. 16

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  17. 17

    Laravel 8: Attempt to read property "id" on null

  18. 18

    Comment obtenir tous les champs d'un objet (y compris sa superclasse), à l'aide de l'API Mirrors de Dart?

  19. 19

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  20. 20

    Microsoft.WebApplication.targets

  21. 21

    obtenir le nombre de marqueur affiché sur la carte

chaudétiquette

Archive