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,
Asegúrese de que la identidad administrada está configurada mediante uno de los métodos:
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)")
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
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.
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()
Utilice la API de medición del servicio de Marketplace para emitir el uso