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,
Kontrollera att Hanterad identitet har konfigurerats med någon av metoderna:
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)")
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
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.
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()
Använda API:et för Marketplace-avläsningstjänsten för att generera användning