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 aplicaciones comercializables SaaS y de Azure con el tipo de plan de aplicación administrada.

Envíe medidores personalizados mediante un identificador de aplicación fijo de Microsoft Entra predefinido 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 tal y como se describe en Registro de una aplicación SaaS.

En el caso de las aplicaciones de Azure con un plan de aplicación administrado, debe considerar la posibilidad de usar esta estrategia en los casos siguientes:

  • Ya tiene un mecanismo para comunicarse con los servicios back-end y desea extender este mecanismo para emitir medidores personalizados desde un servicio central.
  • Dispone de lógica de medidores personalizados compleja. Ejecute esta lógica en una ubicación central, en lugar de en 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 anunciante use este token y realice una solicitud para resolverlo.

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

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

Método de HTTP

POST

Request URL (URL de la solicitud)

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

Parámetro de URI

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

Encabezado de solicitud

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

Cuerpo de la solicitud

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

Respuesta

Nombre Tipo Descripción
200 OK TokenResponse La solicitud se realizó correctamente.

TokenResponse

Ejemplo de token de respuesta:

  {
      "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 dentro de los límites de la implementación.

Nota:

El anunciante debe asegurarse de que los recursos que emiten el uso están bloqueados, para que no se puedan modificar.

La aplicación administrada puede contener diferentes tipos de recursos, desde Virtual Machines hasta Azure Functions. Para más información sobre cómo autenticarse con identidades administradas en diferentes servicios, consulte ¿Cómo se usan las 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 estos métodos:

  2. Obtenga un token de acceso para el identificador de aplicación del servicio de medición de Marketplace (20e940b3-4c77-4b0b-9a53-9e16a1b010a7) 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 identificador 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 del servicio de medición de Marketplace para emitir 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 = '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. Uso de la API del servicio de medición de Marketplace para emitir uso

Pasos siguientes