Il est parfois nécessaire d'utiliser l'API REST d'Azure ARM directement plutôt que via Powershell ou la CLI, notamment quand des fonctionnalités de l'API n'y sont pas encore implémentées.

Voici comment récuper un token d'accès sans passer par le portail.

Présentation

Afin de récupèrer un token d'accès, il faut:

  • Se connecter à Azure
  • Sélectionner la souscription cible
  • Extraire le token du cache

Connection à Azure

La première étape consiste à demander à l'utilisateur de se connecter à Azure via l'interface de connexion OAuth:

# Login To Azure
$rmAccount = Add-AzureRmAccount -SubscriptionId $subscriptionId

Sélection de la souscription

Si vous possédez plusieurs souscriptions, il faut choisir celle qui vous intéresse afin de pouvoir en récuperer un jeton d'accès:

# Set Subscription ID
$subscriptionId = "YOUR_SUBSCRIPTION-ID"

# Select Azure Subscription
$tenantId = (Get-AzureRmSubscription -SubscriptionId $subscriptionId).TenantId

Récupération du jeton

Une fois la connexion établie, il ne reste qu'à extraire les tokens depuis le cache:

# Extract token from Cache
$cachedTokens = $tokenCache.ReadItems() `
        | where { $_.TenantId -eq $tenantId } `
        | sort-object -property ExpiresOn -descending
$accessToken = $cachedTokens[0].Accesstoken

Utilisation du jeton

Maintenant que nous avons récupéré le jeton depuis le cache de connexion, il vous est possible de l'utiliser dans des requêtes aux API REST d'Azure RM.

La connexion à l'API REST se fait via la commande Invoke-RestMethod en lui spécifiant le jeton dans le Header Authorization:

Invoke-RestMethod `
    -Method GET `
    -Uri ("https://management.azure.com/subscriptions/" + $subscriptionId +
          "/resources/" +
          "?api-version=2018-02-01") `
    -Headers @{ Authorization = ("Bearer " + $accessToken)
                "Content-Type" = "application/json" }

 

Il est vrai que la plupart des endpoints de l'API REST d'Azure RM sont intégrées à la CLI mais ce n'est pas toujours le cas et nous avons vu comment profiter des nouvelles features sans attendre leur intégration aux outils.


Je vous donne rendez-vous dans un prochain article pour voir un exemple plus concret de l'utilisation de ces API REST.

Comments


Comments are closed