Delen via


Verificatiestrategieën voor Marketplace-meterservice

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-toepassingen 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 een SaaS-toepassing registreren.

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-toegangstokensvoor 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.

aanvraaginhoud

eigenschapsnaam Vereist Beschrijving
Grant_type Waar Toekenningstype. Gebruik client_credentials.
Client_id Waar Client/app-ID 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 00001111-aaaa-2222-bbbb-3333cccc4444.

antwoord

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": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "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 aanpak kan de identiteit van de ingezette resources worden geverifieerd om zich te authenticeren voor het verzenden van gebruiksgegevens van aangepaste meters. 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 hoe u beheerde identiteiten gebruikt voor Azure-resources) voor meer informatie over het verifiëren met behulp van beheerde identiteiten voor verschillende services.

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 (00001111-aaaa-2222-bbbb-3333cccc4444) 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 API voor de Marketplace-meterservice om het gebruik te registreren.

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

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

    # 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. Gebruik de Marketplace-meetservice-API om gebruiksgegevens te versturen