1

J'essaie de faire des tests très rapides sur Azure Active Directory, et j'ai besoin d'un outil qui me permettra de m'authentifier rapidement auprès d'AAD, et de faire des appels à l'API AAD Graph.Comment puis-je m'authentifier auprès d'AAD et appeler l'API Graph en tant qu'application Native Client avec PowerShell?

J'ai déjà enregistré une application Native Client dans mon répertoire, et je l'ai configuré pour avoir les permissions appropriées pour appeler l'API AAD Graph.

Je veux jeter un oeil à mon Token AAD, et la sortie de l'API graphique après mon appel. Comment puis-je utiliser PowerShell pour y parvenir rapidement?

Répondre

2

>> See here for instructions on how to create a similar script for emulating a Daemon Client Application using the Client Credential Flow.

PowerShell vous permet de charger des assemblages .NET à droite dans votre ligne de commande. Cela signifie que vous pouvez charger ADAL (Azure Active Directory Authentication Libraries) et l'utiliser pour vraiment simplifier l'expérience d'authentification. Une fois que vous avez acquis un jeton d'ADAL, vous pouvez simplement utiliser l'applet de commande Invoke-RestMethod pour effectuer des appels à l'API AAD Graph.

Vous devez d'abord télécharger et enregistrer les dlls .NET pour ADAL. Le lien de téléchargement peut être trouvé on Nuget.

Remarque: Nous utilisons spécifiquement ADAL v2 ici.

Vous pouvez extraire le contenu du .nupkg avec un extracteur de fichiers comme 7z, WinZip, etc ...

extraire le contenu de \lib\net45\ et les copier dans votre répertoire de travail. J'ai mis les fichiers dans leur propre dossier "ADAL", pour le garder séparé.

alors vous devriez être en mesure de créer un nouveau script PowerShell qui suit:

# Load ADAL 
Add-Type -Path ".\ADAL\Microsoft.IdentityModel.Clients.ActiveDirectory.dll" 

# Output Token and Response from AAD Graph API 
$accessToken = ".\Token.txt" 
$output = ".\Output.json" 

# Application and Tenant Configuration 
$clientId = "<AppIDGUID>" 
$tenantId = "<TenantID>" 
$resourceId = "https://graph.windows.net" 
$redirectUri = New-Object system.uri("<ReplyURL>") 
$login = "https://login.microsoftonline.com" 

# Get an Access Token with ADAL 
$authContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ("{0}/{1}" -f $login,$tenantId) 
$authenticationResult = $authContext.AcquireToken($resourceId, $clientID, $redirectUri) 
($token = $authenticationResult.AccessToken) | Out-File $accessToken 

# Call the AAD Graph API 
$headers = @{ 
    "Authorization" = ("Bearer {0}" -f $token); 
    "Content-Type" = "application/json"; 
} 

Invoke-RestMethod -Method Get -Uri ("{0}/{1}/users?api-version=1.6" -f $resourceId, $tenantId) -Headers $headers -OutFile $output 

Note: Vous devez mettre à jour l'ID App, ID locataire et Répondre URL dans ce script. J'ai également préconfiguré l'appel de l'API AAD Graph pour renvoyer les utilisateurs dans mon locataire, mais vous pouvez changer cet appel REST pour ce que vous voulez.

Après avoir exécuté avec succès le script, vous devriez obtenir 2 nouveaux fichiers dans votre répertoire de travail: Un fichier texte qui contient votre jeton d'accès encodée JSON, qui peuvent être base64 décodés sur des sites comme this, et un fichier JSON avec le réponse de l'API AAD Graph. Faites-moi savoir si cela aide!