Delen via


Verificatiestrategieën voor service voor Marketplace-meting

Marketplace-meterservice ondersteunt twee verificatiestrategieën:

In dit artikel wordt uitgelegd wanneer en hoe u de verschillende verificatiestrategieën gebruikt om aangepaste meters veilig te verzenden met behulp van de Marketplace-meterservice.

Het Microsoft Entra-beveiligingstoken gebruiken

Toepasselijke aanbiedingstypen zijn transactable SaaS en Azure-toepassing s met het type beheerde toepassingsplan.

Verzend aangepaste meters met behulp van een vooraf gedefinieerde vaste Microsoft Entra-toepassings-id om te verifiëren.

Voor SaaS-aanbiedingen is dit de enige beschikbare optie. Het is een verplichte stap voor het publiceren van een SaaS-aanbieding, zoals beschreven in het registreren van een SaaS-toepassing.

Voor Azure-toepassingen met een beheerd toepassingsplan moet u overwegen deze strategie in de volgende gevallen te gebruiken:

  • U hebt al een mechanisme om te communiceren met uw back-endservices en u wilt dit mechanisme uitbreiden om aangepaste meters van een centrale service te verzenden.
  • U hebt complexe logica voor aangepaste meters. Voer deze logica uit op een centrale locatie in plaats van de beheerde toepassingsbronnen.

Wanneer u uw toepassing registreert, kunt u programmatisch een Microsoft Entra-beveiligingstoken aanvragen. De uitgever zal dit token naar verwachting gebruiken en een aanvraag indienen om dit op te lossen.

Zie Microsoft Entra-toegangstokens voor meer informatie over deze tokens.

Een token ophalen op basis van de Microsoft Entra-app

HTTP-methode

POST

Aanvraag-URL

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

URI-parameter

Parameternaam Vereist Beschrijving
tenantId Waar Tenant-id van de geregistreerde Microsoft Entra-toepassing.

Aanvraagheader

Koptekstnaam Vereist Beschrijving
Content-Type Waar Inhoudstype dat is gekoppeld aan de aanvraag. De standaardwaarde is application/x-www-form-urlencoded.

Aanvraagbody

Eigenschapsnaam Vereist Beschrijving
Grant_type Waar Toekenningstype. Gebruik client_credentials.
Client_id Waar Client-/app-id die is gekoppeld aan de Microsoft Entra-app.
client_secret Waar Geheim dat is gekoppeld aan de Microsoft Entra-app.
Resource Waar Doelresource waarvoor het token wordt aangevraagd. Gebruik 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Respons

Naam Type Beschrijving
200 OK TokenResponse Aanvraag is voltooid.

TokenResponse

Voorbeeld van antwoordtoken:

  {
      "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…"
  }

Het token voor door Azure beheerde identiteiten gebruiken

Toepasselijke aanbiedingstypen zijn Kubernetes-app-aanbiedingen en Azure-toepassingen met het type beheerde toepassingsplan.

Met deze methode kan de geïmplementeerde resources-identiteit worden geverifieerd om gebruiksevenementen van aangepaste meters te verzenden. U kunt de code insluiten die het gebruik verzendt binnen de grenzen van uw implementatie.

Notitie

Publisher moet ervoor zorgen dat de resources die het gebruik verzenden, zijn vergrendeld, zodat er niet mee wordt geknoeid.

Uw beheerde toepassing kan verschillende typen resources bevatten, van virtuele machines tot Azure Functions. Zie voor meer informatie over het verifiëren met beheerde identiteiten voor verschillende services hoe u beheerde identiteiten gebruikt voor Azure-resources).

Gebruik bijvoorbeeld de volgende stappen om te verifiëren met behulp van een Windows-VM,

  1. Zorg ervoor dat Managed Identity is geconfigureerd met een van de methoden:

  2. Haal een toegangstoken op voor de toepassings-id van de Marketplace-meterservice (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) met behulp van de systeemidentiteit, RDP naar de VM, open de PowerShell-console en voer de opdracht uit:

    # 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. Haal de beheerde app-id op uit de eigenschap ManagedBy van de huidige resourcegroepen (niet nodig voor Kubernetes-app-aanbiedingen).

    # 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. Gebruik de Marketplace-serviceservice-API om gebruik te verzenden.

Voor Aanbiedingen voor Kubernetes-apps gebruikt u de stappen om een verificatietoken van de app op te halen. Zie voorbeeldcode voor meer informatie.

  1. De client-id van De Managed Service Identity (MSI) van de toepassing moet worden gebruikt om een verificatietoken te genereren om te communiceren met de Microsoft Marketplace-meter-API. Zie voorbeeldcode voor meer informatie.

    # 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. De Api voor de Marketplace-meterservice gebruiken om gebruik te verzenden