Estratégias de autenticação do serviço de medição do Marketplace
O serviço de medição do Marketplace suporta duas estratégias de autenticação:
Este artigo explica quando e como usar as diferentes estratégias de autenticação para enviar medidores personalizados com segurança usando o serviço de medição do Marketplace.
Usando o token de segurança do Microsoft Entra
Os tipos de oferta aplicáveis são SaaS transacionáveis e Aplicativos do Azure com tipo de plano de aplicativo gerenciado.
Envie medidores personalizados usando uma ID de aplicativo Microsoft Entra fixa predefinida para autenticar.
Para ofertas de SaaS, esta é a única opção disponível. É uma etapa obrigatória para publicar qualquer oferta de SaaS, conforme descrito em registrar um aplicativo SaaS.
Para aplicativos do Azure com plano de aplicativo gerenciado, você deve considerar o uso dessa estratégia nos seguintes casos:
- Você já tem um mecanismo para se comunicar com seus serviços de back-end e deseja estender esse mecanismo para emitir medidores personalizados de um serviço central.
- Você tem uma lógica complexa de medidores personalizados. Execute essa lógica em um local central, em vez dos recursos do aplicativo gerenciado.
Ao registrar seu aplicativo, você pode solicitar programaticamente um token de segurança do Microsoft Entra. Espera-se que o editor use esse token e faça uma solicitação para resolvê-lo.
Para obter mais informações sobre esses tokens, consulte Microsoft Entra access tokens.
Obter um token baseado no aplicativo Microsoft Entra
Método HTTP
POST
URL de solicitação
https://login.microsoftonline.com/*{tenantId}*/oauth2/token
parâmetro URI
Nome do parâmetro | Necessário | Descrição |
---|---|---|
tenantId |
Verdadeiro | ID do inquilino da aplicação Microsoft Entra registada. |
Cabeçalho da solicitação
Nome do cabeçalho | Necessário | Descrição |
---|---|---|
Content-Type |
Verdadeiro | Tipo de conteúdo associado à solicitação. O valor padrão é application/x-www-form-urlencoded . |
Corpo da solicitação
Nome do imóvel | Necessário | Descrição |
---|---|---|
Grant_type |
Verdadeiro | Tipo de subvenção. Utilize client_credentials . |
Client_id |
Verdadeiro | Identificador de cliente/aplicativo associado ao aplicativo Microsoft Entra. |
client_secret |
Verdadeiro | Segredo associado ao aplicativo Microsoft Entra. |
Resource |
Verdadeiro | Recurso de destino para o qual o token é solicitado. Utilize 00001111-aaaa-2222-bbbb-3333cccc4444 . |
resposta
Nome | Tipo | Descrição |
---|---|---|
200 OK |
TokenResponse |
Pedido foi bem-sucedido. |
RespostaDeToken
Exemplo de token de resposta
{
"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…"
}
Usando o token de identidades gerenciadas pelo Azure
Os tipos de oferta aplicáveis são ofertas de aplicativos Kubernetes e aplicativos do Azure com tipo de plano de aplicativo gerenciado.
O uso dessa abordagem permite que a identidade de recursos implantados se autentique para enviar eventos de uso de medidores personalizados. Você pode incorporar o código que regista o uso dentro do âmbito da sua implementação.
Observação
O editor deve garantir que os recursos que emitem o uso estejam bloqueados, para que ele não seja adulterado.
Seu aplicativo gerenciado pode conter diferentes tipos de recursos, de Máquinas Virtuais a Funções do Azure. Para obter mais informações sobre como autenticar usando identidades gerenciadas para diferentes serviços, consulte como usar identidades gerenciadas para recursos do Azure).
Por exemplo, use as seguintes etapas para autenticar usando uma VM do Windows,
Verifique se a Identidade Gerenciada está configurada usando um dos métodos:
Obtenha um token de acesso para a ID do aplicativo de serviço de medição do Marketplace (
00001111-aaaa-2222-bbbb-3333cccc4444
) usando a identidade do sistema, RDP para a VM, abra o console do PowerShell e execute o 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)")
Obtenha o ID da aplicação gerida da propriedade 'ManagedBy' dos grupos de recursos atuais (não é necessário para propostas de aplicações do 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
Use a API de medição do serviço do Marketplace para emitir a utilização.
Para ofertas do aplicativo Kubernetes, siga as etapas para obter um token de autenticação do aplicativo. Para obter mais informações, consulte código de exemplo.
A ID do Cliente de Identidade de Serviço Gerenciado (MSI) do aplicativo precisa ser usada para gerar token de autenticação para se comunicar com a API de Medição do Microsoft Marketplace. Para obter mais informações, consulte código de exemplo.
# 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()
Use a API de medição do serviço Marketplace para emitir uso