Partager via


Stratégies d'authentification du service de mesure de la place de marché

Le service de mesure de Marketplace 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 des applications SaaS et Azure transactionnelles avec un type de plan d’application managé.

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 publier n’importe quelle 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 pour communiquer avec vos services back-end et vous 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’application managée.

Lorsque vous inscrivez votre application, vous pouvez demander par programme un jeton de sécurité Microsoft Entra. L’éditeur est censé utiliser ce jeton et faire une demande pour le résoudre.

Pour plus d’informations sur ces jetons, consultez 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 d’URI

nom du paramètre obligatoire Description
tenantId Vrai ID de locataire de l’application Microsoft Entra inscrite.

En-tête de requête

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

Corps de la requête

nom de la propriété obligatoire Description
Grant_type Vrai Type d’octroi. Utilisez client_credentials.
Client_id Vrai Identificateur client/application associé à l’application Microsoft Entra.
client_secret Vrai Secret associé à l’application Microsoft Entra.
Resource Vrai Ressource cible pour laquelle le jeton est demandé. Utilisez 00001111-aaaa-2222-bbbb-3333cccc4444.

Réponse

Name Type Description
200 OK TokenResponse Demande réussie.

TokenResponse

Exemple de jeton de réponse :

  {
      "token_type": "Bearer",
      "expires_in": "3600",
      "ext_expires_in": "0",
      "expires_on": "15251…",
      "not_before": "15251…",
      "resource": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
  }

Utilisation du jeton d’identités managées 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.

Note

L'éditeur doit s’assurer que les ressources liées à l’utilisation sont verrouillées, afin qu'elles ne puissent pas être falsifiées.

Votre application managée peut contenir différents types de ressources, de machines virtuelles à Azure Functions. Pour plus d’informations sur l’authentification à l’aide d’identités managées pour différents services, consultez comment utiliser des identités managées pour les ressources Azure).

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

  1. Vérifiez 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 du service de mesure de la Place de marché (00001111-aaaa-2222-bbbb-3333cccc4444) à l’aide de l’identité système, RDP vers 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 de service de mesure du marketplace 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 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 de métrage de la Place de marché Microsoft. Pour plus d’informations, consultez exemple de code.

    # Audience for the token to be generated 
    resource = '00001111-aaaa-2222-bbbb-3333cccc4444'
    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. Utilisez l'API de service de mesure de la Place de marché pour émettre l’utilisation