Strategie uwierzytelniania usługi pomiaru w witrynie Marketplace
Usługa pomiaru użytkowania witryny Marketplace obsługuje dwie strategie uwierzytelniania:
W tym artykule wyjaśniono, kiedy i jak używać różnych strategii uwierzytelniania do bezpiecznego przesyłania niestandardowych mierników przy użyciu usługi pomiaru użytkowania witryny Marketplace.
Korzystanie z tokenu zabezpieczającego firmy Microsoft Entra
Odpowiednie typy ofert to transakcje SaaS i aplikacja systemu Azure z typem planu aplikacji zarządzanej.
Przesyłanie mierników niestandardowych przy użyciu wstępnie zdefiniowanego stałego identyfikatora aplikacji Entra firmy Microsoft w celu uwierzytelnienia.
W przypadku ofert SaaS jest to jedyna dostępna opcja. Jest to obowiązkowy krok publikowania dowolnej oferty SaaS zgodnie z opisem w artykule Rejestrowanie aplikacji SaaS.
W przypadku aplikacji platformy Azure z planem aplikacji zarządzanych należy rozważyć użycie tej strategii w następujących przypadkach:
- Masz już mechanizm komunikowania się z usługami zaplecza i chcesz rozszerzyć ten mechanizm w celu emitowania niestandardowych mierników z centralnej usługi.
- Masz złożoną logikę mierników niestandardowych. Uruchom tę logikę w centralnej lokalizacji zamiast zasobów aplikacji zarządzanych.
Podczas rejestrowania aplikacji możesz programowo zażądać tokenu zabezpieczającego firmy Microsoft Entra. Oczekuje się, że wydawca użyje tego tokenu i zażąda go, aby go rozwiązać.
Aby uzyskać więcej informacji na temat tych tokenów, zobacz Microsoft Entra access tokens (Tokeny dostępu firmy Microsoft Entra).
Uzyskiwanie tokenu na podstawie aplikacji Microsoft Entra
Metoda HTTP
POST
Adres URL żądania
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
Parametr identyfikatora URI
Nazwa parametru | Wymagane | Opis |
---|---|---|
tenantId |
Prawda | Identyfikator dzierżawy zarejestrowanej aplikacji firmy Microsoft Entra. |
Nagłówek żądania
Nazwa nagłówka | Wymagane | Opis |
---|---|---|
Content-Type |
Prawda | Typ zawartości skojarzony z żądaniem. Domyślna wartość to application/x-www-form-urlencoded . |
Treść żądania
Nazwa właściwości | Wymagane | Opis |
---|---|---|
Grant_type |
Prawda | Typ udzielenia. Użyj witryny client_credentials . |
Client_id |
Prawda | Identyfikator klienta/aplikacji skojarzony z aplikacją Microsoft Entra. |
client_secret |
Prawda | Wpis tajny skojarzony z aplikacją Microsoft Entra. |
Resource |
Prawda | Zasób docelowy, dla którego żądano tokenu. Użyj witryny 20e940b3-4c77-4b0b-9a53-9e16a1b010a7 . |
Response
Nazwa/nazwisko | Typ | Opis |
---|---|---|
200 OK |
TokenResponse |
Żądanie powiodło się. |
TokenResponse
Przykładowy token odpowiedzi:
{
"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…"
}
Korzystanie z tokenu tożsamości zarządzanych platformy Azure
Odpowiednie typy ofert to oferty aplikacji Kubernetes i aplikacje platformy Azure z typem planu aplikacji zarządzanych.
Użycie tej metody umożliwia tożsamości wdrożonych zasobów uwierzytelnianie w celu wysyłania zdarzeń użycia mierników niestandardowych. Możesz osadzić kod emitujący użycie w granicach wdrożenia.
Uwaga
Program Publisher powinien upewnić się, że zasoby emitujące użycie są zablokowane, więc nie zostaną naruszone.
Aplikacja zarządzana może zawierać różne typy zasobów, od maszyn wirtualnych do usługi Azure Functions. Aby uzyskać więcej informacji na temat uwierzytelniania przy użyciu tożsamości zarządzanych dla różnych usług, zobacz jak używać tożsamości zarządzanych dla zasobów platformy Azure).
Na przykład wykonaj następujące kroki, aby uwierzytelnić się przy użyciu maszyny wirtualnej z systemem Windows,
Upewnij się, że tożsamość zarządzana jest skonfigurowana przy użyciu jednej z metod:
Uzyskaj token dostępu dla identyfikatora aplikacji usługi pomiaru pomiaru w witrynie Marketplace (
20e940b3-4c77-4b0b-9a53-9e16a1b010a7
) przy użyciu tożsamości systemowej, protokołu RDP na maszynie wirtualnej, otwórz konsolę programu PowerShell i uruchom polecenie:# 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)")
Pobierz identyfikator aplikacji zarządzanej z bieżącej właściwości "ManagedBy" grup zasobów (nie jest to wymagane w przypadku ofert aplikacji 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
Użyj interfejsu API usługi pomiaru użytkowania witryny Marketplace, aby emitować użycie.
W przypadku ofert aplikacji Kubernetes wykonaj następujące kroki, aby uzyskać token uwierzytelniania z aplikacji. Aby uzyskać więcej informacji, zobacz przykładowy kod.
Identyfikator klienta tożsamości usługi zarządzanej (MSI) aplikacji musi być używany do generowania tokenu uwierzytelniania w celu komunikowania się z interfejsem API pomiaru użytkowania witryny Microsoft Marketplace. Aby uzyskać więcej informacji, zobacz przykładowy kod.
# 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()
Używanie interfejsu API usługi pomiaru użytkowania witryny Marketplace do emitowania użycia