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,
Stellen Sie sicher, dass die verwaltete Identität anhand einer der folgenden Methoden konfiguriert ist:
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)")
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
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.
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()
Verwenden der Marketplace-Meteringdienst-API zum Ausgeben der Nutzung