Поделиться через


Проверка подлинности в REST API azure Управление API для прямого управления

В этом руководстве описывается, как создать маркер доступа (маркер SAS), необходимый для вызовов прямого управления Azure Управление API REST API.

Дополнительные сведения об авторизации и других предварительных требованиях для доступа к REST API прямого управления см. в статье Прямое управление Управление API REST API.

Важно!

Доступ к маркеру SAS можно применять только для вызовов API прямого управления, например https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01: . Его нельзя использовать для вызовов API к Azure Resource Manager.

Создание маркера SAS вручную

  1. Перейдите к экземпляру Управления API Azure на портале Azure.

  2. Выберите API управления в разделе Развертывание и инфраструктура меню слева.

    Выберите API управления в портал Azure

  3. В разделе Включить УПРАВЛЕНИЕ API REST API выберите Да.

    Важно!

    Если параметр Включить Управление API REST API не выбран, вызовы REST API для этого экземпляра службы завершатся ошибкой.

    Включение API Управление API в портал Azure

  4. В поле Окончание срока действия задайте дату и время окончания срока действия маркера доступа. Значение должно быть указано в формате MM/DD/YYYY H:MM PM|AM.

    Создание маркера доступа для УПРАВЛЕНИЕ API REST API в портал Azure

  5. Выберите первичный или вторичный ключ в раскрывающемся списке Секретный ключ . Ключи предоставляют соответствующий доступ. Наличие двух ключей позволяет использовать гибкие стратегии управления ключами.

  6. Выберите Создать , чтобы создать маркер доступа.

  7. Скопируйте маркер полного доступа и указывайте его в заголовке Authorization каждого запроса к API REST управления API, как показано в следующем примере.

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

Программное создание маркера SAS

  1. Создайте строку для входа в следующем формате:

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

    где:
    identifier— значение поля Идентификатор на вкладке API управления экземпляра Управление API Azure (дополнительные сведения см. в предыдущем разделе).
    expiry — требуемая дата истечения срока действия маркера SAS.

  2. Создайте подпись путем применения функции хэша HMAC-SHA512 к строке для входа с использованием первичного или вторичного ключа.

  3. Закодируйте возвращенный ключ подписи в формате Base64.

  4. Создайте маркер доступа в следующем формате.

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

    Пример

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

  5. Используйте эти значения для создания заголовка Authorization в каждом запросе к API REST управления API, как показано в следующем примере.

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

В следующем примере демонстрируются предыдущие действия по созданию маркера доступа.

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);   
        }   
    }   
}  
  

Примечание

Оба формата маркеров SAS являются правильными и допустимыми:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
и
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Полный пример кода см. в Управление API примере REST API для .NET.

Дальнейшие действия