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
Navegue para a instância do Azure Gestão de API no portal do Azure.
Selecione API de Gestão na secção Implementação + infraestrutura do menu à esquerda.
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.
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
.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.
Selecione Gerar para criar o token de acesso.
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
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.Gere uma assinatura ao aplicar uma função hash HMAC-SHA512 à cadeia de carateres a assinar com a chave primária ou secundária.
Codificar base64 a chave de assinatura devolvida.
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==
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.