Partilhar via


Autenticar na API REST de gestão direta do Azure Gestão de API

Este guia descreve como criar o token de acesso (token de SAS) necessário para efetuar chamadas para a API REST de gestão direta do Azure Gestão de API.

Para obter mais informações sobre autorização e outros pré-requisitos para aceder à API REST de gestão direta, veja Gestão direta Gestão de API API REST.

Importante

O acesso ao token de SAS só pode ser aplicado para chamadas à API de gestão direta, 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 pode utilizá-lo para chamadas à API para o Azure Resource Manager.

Criar manualmente um token de SAS

  1. Navegue para a instância do Azure Gestão de API no portal do Azure.

  2. Selecione API de Gestão na secção Implementação + infraestrutura do menu à esquerda.

    Selecione API de Gestão no portal do Azure

  3. Em Ativar Gestão de API API REST, selecione Sim.

    Importante

    Se a opção Ativar Gestão de API API REST não estiver selecionada, as chamadas efetuadas à API REST para essa instância de serviço falharão.

    Ativar Gestão de API API no portal do Azure

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

    Gerar o token de acesso para Gestão de API API REST no portal do Azure

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

  6. Selecione Gerar para criar o token de acesso.

  7. Copie o token de acesso total e forneça-o Authorization no cabeçalho de cada pedido para a API REST Gestão de API, conforme mostrado no exemplo seguinte.

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

Criar programaticamente um token de SAS

  1. Construa uma cadeia de carateres para iniciar sessão no seguinte formato:

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

    em que:
    identifier- o valor do campo Identificador no separador API de Gestão da instância do Azure Gestão de API (veja a secção anterior para obter detalhes).
    expiry - a data de expiração pretendida do token de SAS.

  2. Gere uma assinatura ao aplicar uma função hash HMAC-SHA512 à cadeia de carateres a assinar com a chave primária ou secundária.

  3. Codificar base64 a chave de assinatura devolvida.

  4. Crie um token de acesso com 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. Utilize estes valores para criar um Authorization cabeçalho em cada pedido à API REST Gestão de API, conforme mostrado no exemplo seguinte.

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

O exemplo seguinte demonstra os passos anteriores para gerar o 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);   
        }   
    }   
}  
  

Nota

Ambos os formatos de token de SAS estão corretos e aceites:
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, veja o Exemplo de API REST do Gestão de API .NET.

Passos seguintes