Freigeben über


Authentifizierungsstrategien für den Marketplace-Messungsdienst

Der Marketplace-Messungsdienst unterstützt zwei Authentifizierungsstrategien:

In diesem Artikel wird erläutert, wann und wie Sie die verschiedenen Authentifizierungsstrategien verwenden, um benutzerdefinierte Meter mithilfe des Marketplace-Metering-Diensts sicher zu übermitteln.

Verwenden des Microsoft Entra-Sicherheitstokens

Die anwendbaren Angebotstypen sind transaktionsfähige SaaS und Azure-Anwendungen mit dem Plantyp für verwaltete Anwendungen.

Übermitteln Sie benutzerdefinierte Meter mithilfe einer vordefinierten festen Microsoft Entra-Anwendungs-ID zur Authentifizierung.

Für SaaS-Angebote ist dies die einzige verfügbare Option. Dieser Schritt ist zum Veröffentlichen von SaaS-Angeboten obligatorisch, wie es unter Registrieren einer SaaS-Anwendung beschrieben ist.

Für Azure-Anwendungen mit einem Plan für verwaltete Anwendungen sollte die Verwendung dieser Strategie in folgenden Fällen in Betracht gezogen werden:

  • Sie verfügen bereits über einen Mechanismus zum Kommunizieren mit Ihren Back-End-Diensten und möchten diesen Mechanismus erweitern, um benutzerdefinierte Verbrauchseinheiten von einem zentralen Dienst auszugeben.
  • Sie verfügen über eine komplexe Logik für benutzerdefinierte Verbrauchseinheiten. Führen Sie diese Logik an einem zentralen Ort anstelle der verwalteten Anwendungsressourcen aus.

Wenn Sie Ihre Anwendung registrieren, können Sie programmgesteuert ein Microsoft Entra-Sicherheitstoken anfordern. Es wird erwartet, dass der Herausgeber dieses Token verwendet und eine Anforderung zu dessen Auflösung stellt.

Weitere Informationen zu diesen Token finden Sie unter Microsoft Entra-Zugriffstoken.

Abrufen eines Tokens basierend auf der Microsoft Entra-App

HTTP-Methode

POST

Anforderungs-URL

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

URI-Parameter

Parametername Erforderlich Beschreibung
tenantId True Mandanten-ID der registrierten Microsoft Entra-Anwendung.

Anforderungsheader

Headername Erforderlich Beschreibung
Content-Type True Der Anforderung zugeordneter Inhaltstyp. Der Standardwert ist application/x-www-form-urlencoded.

Anforderungstext

Eigenschaftenname Erforderlich Beschreibung
Grant_type True Gewährungstyp. Verwenden Sie client_credentials.
Client_id True Client-/App-ID, die der Microsoft Entra-App zugeordnet ist.
client_secret True Geheimer Schlüssel, der der Microsoft Entra-App zugeordnet ist.
Resource True Zielressource, für die das Token angefordert wird. Verwenden Sie 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Antwort

Name Art Beschreibung
200 OK TokenResponse Anforderung erfolgreich.

TokenResponse

Beispiel für Antworttoken:

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

Verwenden des Tokens für von Azure verwaltete Identitäten

Anwendbare Angebotstypen sind Kubernetes-App-Angebote und Azure-Anwendungen mit verwaltetem Anwendungsplantyp.

Mit diesem Ansatz kann die bereitgestellte Ressourcenidentität authentifiziert werden, um benutzerdefinierte Verwendungsereignisse für Zähler zu senden. Sie können den Code, der die Nutzung ausgibt, innerhalb der Grenzen Ihrer Bereitstellung einbetten.

Hinweis

Der Herausgeber sollte sicherstellen, dass die Ressourcen, die Nutzungsdaten ausgeben, gesperrt sind, damit er nicht manipuliert wird.

Die verwaltete Anwendung kann unterschiedliche Arten von Ressourcen enthalten, von Virtual Machines bis Azure Functions. Weitere Informationen zum Authentifizieren mit verwalteten Identitäten für verschiedene Dienste finden Sie unter Verwenden von verwalteten Identitäten für Azure-Ressourcen.

Führen Sie beispielsweise die folgenden Schritte aus, um sich mit einer Windows-VM zu authentifizieren,

  1. Stellen Sie sicher, dass die verwaltete Identität anhand einer der folgenden Methoden konfiguriert ist:

  2. Rufen Sie ein Zugriffstoken für die Marketplace-Meteringdienstanwendungs-ID (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) mithilfe der Systemidentität, RDP für den virtuellen Computer ab, öffnen Sie die PowerShell-Konsole, und führen Sie den folgenden Befehl aus:

    # 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. Rufen Sie die verwaltete App-ID aus der aktuellen Eigenschaft der Ressourcengruppen "ManagedBy" ab (für Kubernetes-App-Angebote nicht erforderlich).

    # 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. Verwenden Sie die Marketplace-Messungsdienst-API zum Ausgeben der Nutzung.

Führen Sie für Kubernetes-App-Angebote die folgenden Schritte aus, um ein Authentifizierungstoken aus der App abzurufen. Weitere Informationen finden Sie im Beispielcode.

  1. Die CLIENT-ID der verwalteten Dienstidentität (Managed Service Identity, MSI) der Anwendung muss verwendet werden, um Authentifizierungstoken für die Kommunikation mit der Microsoft Marketplace-Metering-API zu generieren. Weitere Informationen finden Sie im Beispielcode.

    # 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. Verwenden der Marketplace-Meteringdienst-API zum Ausgeben der Nutzung