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,

  1. Upewnij się, że tożsamość zarządzana jest skonfigurowana przy użyciu jednej z metod:

  2. 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)")
    
  3. 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 
    
  4. 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.

  1. 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()
    
  2. Używanie interfejsu API usługi pomiaru użytkowania witryny Marketplace do emitowania użycia

Następne kroki