Udostępnij za pośrednictwem


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,

  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 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)")
    
  3. 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 
    
  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 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()
    
  2. Użyj interfejsu API usługi mierzenia użytkowania Marketplace , aby emitować użycie.