Autenticar na API REST de gerenciamento direto do Azure Gerenciamento de API

Este guia descreve como criar o token de acesso (token SAS) necessário para fazer chamadas para o gerenciamento direto do Azure Gerenciamento de API API REST.

Para obter mais informações sobre autorização e outros pré-requisitos para acessar a API REST de gerenciamento direto, consulte Gerenciamento direto Gerenciamento de API API REST.

Importante

O acesso ao token SAS só pode ser aplicado para chamadas à API de gerenciamento direto, por exemplo: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. Não é possível usá-lo para chamadas à API para Resource Manager do Azure.

Criar manualmente um token SAS

  1. Navegue até sua instância de Gerenciamento de API do Azure no portal do Azure.

  2. Selecione API de Gerenciamento na seção Implantação + infraestrutura do menu à esquerda.

    Selecione API de Gerenciamento no portal do Azure

  3. Em Habilitar Gerenciamento de API API REST, selecione Sim.

    Importante

    Se Habilitar Gerenciamento de API API REST não estiver selecionada, as chamadas feitas à API REST para essa instância de serviço falharão.

    Habilitar a API de Gerenciamento de API no portal do Azure

  4. Especifique a data e a hora de expiração do token de acesso na caixa de texto Expiração. Esse valor deve estar no formato MM/DD/YYYY H:MM PM|AM.

    Gerar token de acesso para Gerenciamento de API API REST no portal do Azure

  5. Selecione a chave primária ou a chave secundária na lista suspensa Chave secreta. As chaves oferecem acesso equivalente; duas chaves são fornecidas para permitir estratégias de gerenciamento flexíveis.

  6. Selecione Gerar para criar o token de acesso.

  7. Copie o token de acesso integral e forneça-o no cabeçalho Authorization de cada solicitação feita para a API REST do Gerenciamento de API, como mostra o exemplo abaixo.

    Authorization: SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==
    

Criar programaticamente um token SAS

  1. Construa uma cadeia de caracteres para assinar no seguinte formato:

    {identifier} + "\n" + {expiry}

    em que:
    identifier– o valor do campo Identificador da guia API de Gerenciamento da instância de Gerenciamento de API do Azure (consulte a seção anterior para obter detalhes).
    expiry – data de expiração desejada do token SAS.

  2. Gere uma assinatura aplicando uma função hash HMAC-SHA512 à cadeia de caracteres para assinatura com a chave principal ou secundária.

  3. Base64 codifica a chave de assinatura retornada.

  4. Crie um token de acesso usando o seguinte formato.

    uid={identifier}&ex={expiry}&sn={Base64 encoded signature}

    Exemplo:

    uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==

  5. Use esses valores para criar um cabeçalho Authorization em cada solicitação feita para a API REST de Gerenciamento de API, como mostra o exemplo abaixo.

    Authorization: SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
    

O exemplo abaixo demonstra as etapas anteriores para geração de um token de acesso.

using System;   
using System.Text;   
using System.Globalization;   
using System.Security.Cryptography;   
  
public class Program   
{   
    public static void Main()   
    {   
        var id = "53d7e14aee681a0034030003";   
        var key = "pXeTVcmdbU9XxH6fPcPlq8Y9D9G3Cdo5Eh2nMSgKj/DWqeSFFXDdmpz5Trv+L2hQNM+nGa704Rf8Z22W9O1jdQ==";   
        var expiry = DateTime.UtcNow.AddDays(10);   
        using (var encoder = new HMACSHA512(Encoding.UTF8.GetBytes(key)))   
        {   
            var dataToSign = id + "\n" + expiry.ToString("O", CultureInfo.InvariantCulture);   
            var hash = encoder.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));   
            var signature = Convert.ToBase64String(hash);   
            var encodedToken = string.Format("SharedAccessSignature uid={0}&ex={1:o}&sn={2}", id, expiry, signature);   
            Console.WriteLine(encodedToken);   
        }   
    }   
}  
  

Observação

Ambos os formatos de token SAS estão corretos e aceitos:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
e
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Para obter o código de exemplo completo, consulte o exemplo de API REST do Gerenciamento de API .NET.

Próximas etapas