Compartir vía


Estrategias de autenticación del servicio de medición de Marketplace

El servicio de medición de Marketplace admite dos estrategias de autenticación:

En este artículo se explica cuándo y cómo usar las distintas estrategias de autenticación para enviar de forma segura medidores personalizados mediante el servicio de medición de Marketplace.

Uso del token de seguridad de Microsoft Entra

Los tipos de oferta aplicables son SaaS transaccionables y aplicaciones de Azure con tipo de plan de aplicación administrada.

Envíe medidores personalizados utilizando un ID de aplicación fijo predefinido de Microsoft Entra para autenticarse.

En el caso de las ofertas de SaaS, esta es la única opción disponible. Es un paso obligatorio para publicar cualquier oferta de SaaS como se describe en registrar una aplicación SaaS.

En el caso de las aplicaciones de Azure con plan de aplicaciones administradas, debe considerar el uso de esta estrategia en los casos siguientes:

  • Ya tiene un mecanismo para comunicarse con los servicios de back-end y desea ampliar este mecanismo para emitir medidores personalizados desde un servicio central.
  • Tiene lógica compleja de medidores personalizados. Ejecute esta lógica en una ubicación central, en lugar de los recursos de la aplicación administrada.

Al registrar la aplicación, puede solicitar mediante programación un token de seguridad de Microsoft Entra. Se espera que el publicador use este token y realice una solicitud para resolverlo.

Para más información sobre estos tokens, vea Tokens de acceso de Microsoft Entra.

Obtención de un token basado en la aplicación Microsoft Entra

Método HTTP

POST

URL de solicitud

https://login.microsoftonline.com/*{tenantId}*/oauth2/token

Parámetro de URI

Nombre del parámetro Obligatorio Descripción
tenantId Verdadero Id. de inquilino de la aplicación de Microsoft Entra registrada.

Encabezado de solicitud

nombre de encabezado Obligatorio Descripción
Content-Type Verdadero Tipo de contenido asociado a la solicitud. El valor predeterminado es application/x-www-form-urlencoded.

Cuerpo de la solicitud

Nombre de la propiedad Obligatorio Descripción
Grant_type Verdadero Tipo de concesión. Utilice client_credentials.
Client_id Verdadero Identificador de cliente o aplicación asociado a la aplicación Microsoft Entra.
client_secret Verdadero Secreto asociado a la aplicación Microsoft Entra.
Resource Verdadero Recurso de destino para el que se solicita el token. Utilice 20e940b3-4c77-4b0b-9a53-9e16a1b010a7.

Respuesta

Nombre Tipo Descripción
200 OK TokenResponse Solicitud exitosa.

TokenResponse

Token de respuesta de ejemplo:

  {
      "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…"
  }

Uso del token de identidades administradas por Azure

Los tipos de oferta aplicables son ofertas de aplicaciones de Kubernetes y aplicaciones de Azure con tipo de plan de aplicación administrada.

El uso de este enfoque permite que la identidad de los recursos implementados se autentique para enviar eventos de uso de medidores personalizados. Puede insertar el código que emite el uso en los límites de la implementación.

Nota

El editor debe asegurarse de que los recursos que generan uso estén bloqueados, para que no se manipulen.

La aplicación administrada puede contener un tipo diferente de recursos, desde Máquinas virtuales a Azure Functions. Para más información sobre cómo autenticarse mediante identidades administradas para distintos servicios, consulte cómo usar identidades administradas para recursos de Azure).

Por ejemplo, siga estos pasos para autenticarse mediante una máquina virtual Windows,

  1. Asegúrese de que la identidad administrada está configurada mediante uno de los métodos:

  2. Obtenga un token de acceso para el identificador de aplicación del servicio de medición de Marketplace (00001111-aaaa-2222-bbbb-3333cccc4444) mediante la identidad del sistema, RDP a la máquina virtual, abra la consola de PowerShell y ejecute el comando:

    # 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. Obtenga el id. de aplicación administrada de la propiedad "ManagedBy" de los grupos de recursos actuales (no es necesario para las ofertas de aplicaciones de 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. Utilice la API de servicio de medición de Marketplace para registrar el uso.

En el caso de las ofertas de aplicaciones de Kubernetes, siga los pasos para obtener un token de autenticación de la aplicación. Para obtener más información, consulte código de ejemplo.

  1. El identificador de cliente de Managed Service Identity (MSI) de la aplicación debe usarse para generar el token de autenticación para comunicarse con la API de medición de Microsoft Marketplace. Para obtener más información, consulte código de ejemplo.

    # 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. Utilice la API de medición del servicio de Marketplace para emitir el uso