Strategie uwierzytelniania usługi pomiarów 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 transakcyjne aplikacje SaaS i aplikacje Azure z typem planu zarządzanych aplikacji.
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 przy publikowaniu dowolnej oferty SaaS, jak opisano w , rejestracja 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 skomplikowaną logikę niestandardowych liczników. 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 poprosi o jego rozwiązanie.
Aby uzyskać więcej informacji na temat tych tokenów, zobacz Microsoft Entra access tokens.
Uzyskiwanie tokenu na podstawie aplikacji Microsoft Entra
Metoda HTTP
POST
Żądanie adresu URL
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
parametru identyfikatora URI
nazwa parametru | wymagane | opis |
---|---|---|
tenantId |
Prawda | Identyfikator dzierżawcy zarejestrowanej aplikacji Microsoft Entra. |
nagłówek żądania
nazwa nagłówka | wymagane | opis |
---|---|---|
Content-Type |
Prawdziwy | Typ zawartości skojarzony z żądaniem. Wartość domyślna to application/x-www-form-urlencoded . |
Treść żądania
nazwa właściwości | wymagane | opis |
---|---|---|
Grant_type |
Prawdziwy | Typ udzielenia. Użyj client_credentials . |
Client_id |
Prawda | Identyfikator klienta/aplikacji skojarzony z aplikacją Microsoft Entra. |
client_secret |
Prawda | Tajemnica skojarzona z aplikacją Microsoft Entra. |
Resource |
Prawda | Zasób docelowy, dla którego żądano tokenu. Użyj 00001111-aaaa-2222-bbbb-3333cccc4444 . |
odpowiedź
nazwa | typu | 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": "00001111-aaaa-2222-bbbb-3333cccc4444",
"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 tego podejścia umożliwia tożsamości wdrożonych zasobów do uwierzytelniania w celu wysyłania zdarzeń dotyczących użycia niestandardowych mierników. Możesz osadzić kod monitorujący użycie w granicach twojego wdrożenia.
Notatka
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 meteringowej w witrynie Marketplace (
00001111-aaaa-2222-bbbb-3333cccc4444
) przy użyciu tożsamości systemowej, połącz się przez RDP z maszyną wirtualną, 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 zarządzanej aplikacji z właściwości 'ManagedBy' bieżącej grupy 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 zarządzanej usługi aplikacji (MSI) musi być używany do generowania tokenu uwierzytelniania, aby komunikować się z Microsoft Marketplace Metering API. Aby uzyskać więcej informacji, zobacz przykładowy kod.
# 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()
Użyj interfejsu API usługi mierzenia użytkowania Marketplace , aby emitować użycie.