Strategie di autenticazione del servizio di analisi del Marketplace

Il servizio di analisi del Marketplace supporta due strategie di autenticazione:

Questo articolo illustra quando e come usare le diverse strategie di autenticazione per inviare in modo sicuro contatori personalizzati usando il servizio di misurazione del Marketplace.

Uso del token di sicurezza di Microsoft Entra

I tipi di offerta applicabili sono SaaS transazionabili e app Azure licazioni con tipo di piano di applicazione gestito.

Inviare contatori personalizzati usando un ID applicazione Microsoft Entra predefinito per l'autenticazione.

Per le offerte SaaS, questa è l'unica opzione disponibile. È un passaggio obbligatorio per la pubblicazione di qualsiasi offerta SaaS, come descritto in Registrare un'applicazione SaaS.

Per le applicazioni Azure con piano dell'applicazione gestita è consigliabile usare questa strategia nei casi seguenti:

  • Si dispone già di un meccanismo per comunicare con i servizi back-end e si desidera estendere questo meccanismo per generare contatori personalizzati da un servizio centrale.
  • La logica dei contatori personalizzati è complessa. Eseguire questa logica in una posizione centrale, invece delle risorse dell'applicazione gestita.

Quando si registra l'applicazione, è possibile richiedere a livello di codice un token di sicurezza Microsoft Entra. Si presuppone che il server di pubblicazione usi questo token ed esegua una richiesta per risolverlo.

Per altre informazioni su questi token, vedere Token di accesso di Microsoft Entra.

Ottenere un token basato sull'app Microsoft Entra

Metodo HTTP

POST

Request URL (URL richiesta)

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

Parametro URI

Nome parametro Obbligatorio Descrizione
tenantId Vero ID tenant dell'applicazione Microsoft Entra registrata.

Intestazione della richiesta

Nome dell'intestazione Obbligatorio Descrizione
Content-Type Vero Tipo di contenuto associato alla richiesta. Il valore predefinito è application/x-www-form-urlencoded.

Testo della richiesta

Nome proprietà Obbligatorio Descrizione
Grant_type Vero Tipo di concessione. Usare client_credentials.
Client_id Vero Identificatore client/app associato all'app Microsoft Entra.
client_secret Vero Segreto associato all'app Microsoft Entra.
Resource Vero Risorsa di destinazione per cui è richiesto il token. Usare 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Response

Nome Tipo Descrizione
200 OK TokenResponse La richiesta ha avuto esito positivo.

TokenResponse

Token di risposta di esempio:

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

Uso del token delle identità gestite di Azure

I tipi di offerta applicabili sono offerte di app Kubernetes e applicazioni Azure con tipo di piano di applicazione gestito.

L'uso di questo approccio consente all'identità delle risorse distribuite di eseguire l'autenticazione per inviare eventi di utilizzo dei contatori personalizzati. È possibile incorporare il codice che genera i dati sull'utilizzo entro i limiti della distribuzione.

Nota

Il server di pubblicazione deve assicurarsi che le risorse che emettono l'utilizzo siano bloccate, quindi non verranno manomesse.

L'applicazione gestita può contenere diversi tipi di risorse, dalle macchine virtuali alle funzioni di Azure. Per altre informazioni su come eseguire l'autenticazione usando identità gestite per diversi servizi, vedere Come usare le identità gestite per le risorse di Azure.

Ad esempio, usare la procedura seguente per eseguire l'autenticazione usando una macchina virtuale Windows,

  1. Verificare che l'identità gestita sia configurata utilizzando uno dei metodi seguenti:

  2. Ottenere un token di accesso per l'ID applicazione del servizio di misurazione del Marketplace (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) usando l'identità di sistema, RDP alla macchina virtuale, aprire la console di PowerShell ed eseguire il comando:

    # 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. Ottenere l'ID app gestita dalla proprietà 'ManagedBy' dei gruppi di risorse correnti (non necessaria per le offerte dell'app 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. Usare l'API del servizio di analisi Marketplace per generare dati sull'utilizzo.

Per le offerte di app Kubernetes, seguire questa procedura per ottenere un token di autenticazione dall'app. Per altre informazioni, vedere codice di esempio.

  1. L'ID client dell'identità del servizio gestito dell'applicazione deve essere usato per generare il token di autenticazione per comunicare con l'API di misurazione di Microsoft Marketplace. Per altre informazioni, vedere codice di esempio.

    # 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. Usare l'API del servizio di misurazione del Marketplace per generare l'utilizzo

Passaggi successivi