Authentifizierungsstrategien für den Marketplace-Metering-Dienst
Der Marketplace-Metering-Dienst 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
Anwendbare Angebotstypen sind transaktionsfähige SaaS- und Azure-Anwendungen mit verwaltetem Anwendungsplantyp.
Ü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. Es ist ein obligatorischer Schritt zum Veröffentlichen eines SaaS-Angebots, wie in Registrieren einer SaaS-Anwendungbeschrieben.
Für Azure-Anwendungen mit verwaltetem Anwendungsplan sollten Sie diese Strategie in den folgenden Fällen in Betracht ziehen:
- Sie verfügen bereits über einen Mechanismus für die Kommunikation mit Ihren Back-End-Diensten, und Sie möchten diesen Mechanismus erweitern, um benutzerdefinierte Meter von einem zentralen Dienst auszugeben.
- Sie haben komplexe Logik für benutzerdefinierte Zähler. Führen Sie diese Logik an einem zentralen Speicherort 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 Anfrage zur Auflösung sendet.
Weitere Informationen zu diesen Token finden Sie unter Microsoft Entra-Zugriffstoken.
Ein Token basierend auf der Microsoft Entra-App erhalten.
HTTP-Methode
POST
Anforderungs-URL
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
URI-Parameter
Parametername | Erforderlich | Beschreibung |
---|---|---|
tenantId |
Stimmt | Mandanten-ID der registrierten Microsoft Entra-Anwendung. |
Anforderungsheader
Kopfzeilenname | Erforderlich | Beschreibung |
---|---|---|
Content-Type |
Stimmt | Inhaltstyp, der der Anforderung zugeordnet ist. Der Standardwert ist application/x-www-form-urlencoded . |
Anforderungstext
Eigenschaftsname | Erforderlich | Beschreibung |
---|---|---|
Grant_type |
Stimmt | Fördertyp. Verwenden Sie client_credentials . |
Client_id |
Stimmt | Client-/App-ID, die der Microsoft Entra-App zugeordnet ist. |
client_secret |
Stimmt | Geheimer Schlüssel, der der Microsoft Entra-App zugeordnet ist. |
Resource |
Stimmt | Zielressource, für die das Token angefordert wird. Verwenden Sie 00001111-aaaa-2222-bbbb-3333cccc4444 . |
Antwort
Name | Typ | Beschreibung |
---|---|---|
200 OK |
TokenResponse |
Anforderung erfolgreich. |
TokenResponse
Beispielantworttoken:
{
"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…"
}
Verwenden des Von Azure verwalteten Identitätstokens
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.
Anmerkung
Der Herausgeber sollte sicherstellen, dass die Ressourcen, die den Gebrauch anzeigen, gesichert sind, damit sie nicht manipuliert werden.
Ihre verwaltete Anwendung kann unterschiedliche Arten von Ressourcen enthalten, von virtuellen Computern zu Azure Functions. Weitere Informationen zum Authentifizieren mithilfe von verwalteten Identitäten für verschiedene Dienste finden Sie unter verwenden verwaltete Identitäten für Azure-Ressourcen).
Führen Sie beispielsweise die folgenden Schritte aus, um sich mit einer Windows-VM zu authentifizieren,
Stellen Sie sicher, dass verwaltete Identität mithilfe einer der Methoden konfiguriert ist:
Rufen Sie ein Zugriffstoken für die Marketplace-Meteringdienstanwendungs-ID (
00001111-aaaa-2222-bbbb-3333cccc4444
) ab, indem Sie die Systemidentität verwenden und RDP zur VM herstellen. Öffnen Sie dann die PowerShell-Konsole und führen Sie den 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)")
Rufen Sie die ID der verwalteten App aus der Eigenschaft „ManagedBy“ der aktuellen Ressourcengruppe 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
Verwenden Sie die Marketplace-Metering-Dienst-API für die Ausgabe 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 unter Beispielcode.
Die MSI-Client-ID (Managed Service ID, verwaltete Dienstidentität) der Anwendung muss verwendet werden, um Authentifizierungstoken für die Kommunikation mit der Microsoft Marketplace-Metering-API zu generieren. Weitere Informationen finden Sie unter Beispielcode.
# 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()
Verwenden Sie die Marketplace-Metering-Dienst-API für die Ausgabe der Nutzung.