Dela via


Autentiseringsstrategier för mätningstjänster på Marketplace

Marketplace-avläsningstjänsten stöder två autentiseringsstrategier:

Den här artikeln beskriver när och hur du använder de olika autentiseringsstrategierna för att på ett säkert sätt skicka anpassade mätare med hjälp av Marketplace-avläsningstjänsten.

Använda Microsoft Entra-säkerhetstoken

Tillämpliga erbjudandetyper är transaktionsbara SaaS- och Azure-program med typen hanterad programplan.

Skicka anpassade mätare med hjälp av ett fördefinierat fast Microsoft Entra-program-ID för att autentisera.

För SaaS-erbjudanden är detta det enda tillgängliga alternativet. Det är ett obligatoriskt steg för att publicera alla SaaS-erbjudanden enligt beskrivningen i registrera ett SaaS-program.

För Azure-program med en hanterad programplan bör du överväga att använda den här strategin i följande fall:

  • Du har redan en mekanism för att kommunicera med dina serverdelstjänster och du vill utöka den här mekanismen för att generera anpassade mätare från en central tjänst.
  • Du har komplex logik för anpassade mätare. Kör den här logiken på en central plats i stället för de hanterade programresurserna.

När du registrerar ditt program kan du programmatiskt begära en Microsoft Entra-säkerhetstoken. Utgivaren förväntas använda den här token och göra en begäran för att lösa det.

Mer information om dessa token finns i Microsoft Entra-åtkomsttoken.

Hämta en token baserat på Microsoft Entra-appen

HTTP-metod

POST

Request URL

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

URI-parameter

Parameternamn Krävs Beskrivning
tenantId Sant Klientorganisations-ID för det registrerade Microsoft Entra-programmet.

Begärandehuvud

Rubriknamn Krävs Beskrivning
Content-Type Sant Innehållstyp som är associerad med begäran. Standardvärdet är application/x-www-form-urlencoded.

Begärandetext

Egenskapsnamn Krävs Beskrivning
Grant_type Sant Bevilja typ. Använd client_credentials.
Client_id Sant Klient-/app-ID som är associerad med Microsoft Entra-appen.
client_secret Sant Hemlighet som är associerad med Microsoft Entra-appen.
Resource Sant Målresurs som token begärs för. Använd 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Response

Namn Typ Beskrivning
200 OK TokenResponse Begäran lyckades.

TokenResponse

Exempel på svarstoken:

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

Använda token för Azure-hanterade identiteter

Tillämpliga erbjudandetyper är Kubernetes-apperbjudanden och Azure-program med typen hanterad programplan.

Med den här metoden kan den distribuerade resursidentiteten autentiseras för att skicka användningshändelser för anpassade mätare. Du kan bädda in koden som genererar användning inom gränserna för distributionen.

Kommentar

Publisher bör se till att de resurser som genererar användning är låsta, så att de inte manipuleras.

Ditt hanterade program kan innehålla olika typer av resurser, från virtuella datorer till Azure Functions. Mer information om hur du autentiserar med hanterade identiteter för olika tjänster finns i hur du använder hanterade identiteter för Azure-resurser).

Använd till exempel följande steg för att autentisera med en virtuell Windows-dator,

  1. Kontrollera att Hanterad identitet har konfigurerats med någon av metoderna:

  2. Hämta en åtkomsttoken för Program-ID för Marketplace-avläsningstjänst (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) med hjälp av systemidentiteten, RDP till den virtuella datorn, öppna PowerShell-konsolen och kör kommandot:

    # 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. Hämta det hanterade app-ID:t från de aktuella resursgruppernas "ManagedBy"-egenskap (behövs inte för Kubernetes-apperbjudanden).

    # 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. Använd API:et för Marketplace-avläsningstjänsten för att generera användning.

För Kubernetes-apperbjudanden använder du följande steg för att hämta en autentiseringstoken från appen. Mer information finns i exempelkod.

  1. Programmets MSI-klient-ID (Managed Service Identity) måste användas för att generera autentiseringstoken för att kommunicera med Microsoft Marketplace Metering API. Mer information finns i exempelkod.

    # 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. Använda API:et för Marketplace-avläsningstjänsten för att generera användning