Stratégies d’authentification du service de mesure de la Place de marché

Le service de mesure de la Place de marché prend en charge deux stratégies d’authentification :

Cet article explique quand et comment utiliser les différentes stratégies d’authentification pour envoyer en toute sécurité des compteurs personnalisés à l’aide du service de contrôle de la Place de marché.

Utilisation du jeton de sécurité Microsoft Entra

Les types d’offres applicables sont les applications SaaS et Azure traitées avec le type de plan d’application managée.

Envoyez des compteurs personnalisés à l’aide d’un ID d’application Microsoft Entra prédéfini pour l’authentification.

Pour les offres SaaS, il s’agit de la seule option disponible. Il s’agit d’une étape obligatoire pour la publication d’une offre SaaS, comme décrit dans Inscrire une application SaaS.

Pour les applications Azure avec un plan d’application managée, vous devez envisager d’utiliser cette stratégie dans les cas suivants :

  • Vous disposez déjà d’un mécanisme de communication avec vos services principaux et souhaitez étendre ce mécanisme pour émettre des compteurs personnalisés à partir d’un service central.
  • Vous avez une logique de compteurs personnalisés complexe. Exécutez cette logique dans un emplacement central au lieu des ressources d’applications managées.

Lorsque vous inscrivez votre application, vous pouvez demander par programme un jeton de sécurité Microsoft Entra. Le serveur de publication doit utiliser ce jeton et effectuer une requête pour le résoudre.

Pour plus d’informations sur ces jetons, consultez Les jetons d’accès Microsoft Entra.

Obtenir un jeton basé sur l’application Microsoft Entra

Méthode HTTP

POST

URL de requête

https://login.microsoftonline.com/*{tenantId}*/oauth2/token

Paramètre URI

Nom du paramètre Obligatoire Description
tenantId True ID de locataire de l’application Microsoft Entra inscrite.

En-tête de requête

Nom de l’en-tête Obligatoire Description
Content-Type True Type de contenu associé à la requête. La valeur par défaut est application/x-www-form-urlencoded.

Corps de la demande

Nom de la propriété Obligatoire Description
Grant_type True Type d’autorisation. Utiliser client_credentials.
Client_id True Identificateur client/application associé à l’application Microsoft Entra.
client_secret True Secret associé à l’application Microsoft Entra.
Resource True Ressource cible pour laquelle le jeton est demandé. Utiliser 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Response

Nom Type Description
200 OK TokenResponse Demande réussie.

TokenResponse

Voici un exemple de token de réponse :

  {
      "token_type": "Bearer",
      "expires_in": "3600",
      "ext_expires_in": "0",
      "expires_on": "15251…",
      "not_before": "15251…",
      "resource": "20e940b3-4c77-4b0b-9a53-9e16a1b010a7",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
  }

Utilisation du jeton d’identités managées par Azure

Les types d’offres applicables sont des offres d’application Kubernetes et des applications Azure avec un type de plan d’application managé.

Cette approche permet à l’identité des ressources déployées de s’authentifier pour envoyer des événements d’utilisation de compteurs personnalisés. Vous pouvez incorporer le code qui émet l’utilisation dans les limites de votre déploiement.

Remarque

Le serveur de publication doit s’assurer que les ressources qui émettent l’utilisation sont verrouillées afin qu’il n’y ait pas de falsification.

Votre application managée peut contenir différents types de ressources, des machines virtuelles aux Azure Functions. Pour plus d’informations sur la façon de s’authentifier à l’aide d’identités managées pour différents services, consultez Comment utiliser des identités managées pour des ressources Azure).

Par exemple, utilisez les étapes suivantes pour vous authentifier à l’aide d’une machine virtuelle Windows,

  1. Assurez-vous que l’identité managée est configurée à l’aide de l’une des méthodes suivantes :

  2. Obtenez un jeton d’accès pour l’ID d’application de service de contrôle de la Place de marché (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) à l’aide de l’identité système, rdp sur la machine virtuelle, ouvrez la console PowerShell et exécutez la commande :

    # curl is an alias to Web-Invoke PowerShell command
    # Get system identity access tokenn
    $MetadataUrl = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F"
    $Token = curl -H @{"Metadata" = "true"} $MetadataUrl | Select-Object -Expand Content | ConvertFrom-Json
    $Headers = @{}
    $Headers.Add("Authorization","$($Token.token_type) "+ " " + "$($Token.access_token)")
    
  3. Obtenez l’ID d’application managée à partir de la propriété « ManagedBy » des groupes de ressources actuels (non nécessaire pour les offres d’application Kubernetes).

    # Get subscription and resource group
    $metadata = curl -H @{'Metadata'='true'} http://169.254.169.254/metadata/instance?api-version=2019-06-01 | select -ExpandProperty Content | ConvertFrom-Json 
    
    # Make sure the system identity has at least reader permission on the resource group
    $managementUrl = "https://management.azure.com/subscriptions/" + $metadata.compute.subscriptionId + "/resourceGroups/" + $metadata.compute.resourceGroupName + "?api-version=2019-10-01"
    $resourceGroupInfo = curl -Headers $Headers $managementUrl | select -ExpandProperty Content | ConvertFrom-Json
    $managedappId = $resourceGroupInfo.managedBy 
    
  4. Utilisez l’API du service de mesure de la Place de marché pour émettre l’utilisation.

Pour les offres d’application Kubernetes, procédez comme suit pour obtenir un jeton d’authentification à partir de l’application. Pour plus d’informations, consultez l’exemple de code.

  1. L’ID client MSI (Managed Service Identity) de l’application doit être utilisé pour générer un jeton d’authentification pour communiquer avec l’API contrôle de la Place de marché Microsoft. Pour plus d’informations, consultez l’exemple de code.

    # Audience for the token to be generated 
    resource = '20e940b3-4c77-4b0b-9a53-9e16a1b010a7'
    clientId = <identity client id>
    url = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&clientId={0}&resource={1}".format(clientId,resource)
    headers = {'Metadata': 'true'}
    # Need to import requests module 
    response = requests.get(url)
    response = requests.get(url, headers=headers)
    authToken = response.json()
    
  2. Utiliser l’API du service de contrôle de la Place de marché pour émettre l’utilisation

Étapes suivantes