Руководство. Преобразование и защита API

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

В этом руководстве описана настройка распространенных политик для преобразования API. Вам может потребоваться преобразовать API, чтобы он не раскрывал частные сведения серверной части. Преобразование API может помочь скрыть сведения о стеке технологий, которые выполняются в серверной части, или скрыть исходные URL-адреса, которые отображаются в тексте HTTP-ответа API.

В этом руководстве также объясняется, как добавить защиту в API серверной части, настроив политику ограничения частоты запросов, чтобы разработчики не злоупотребляли API. Дополнительные параметры политики см. в статье Политики Управления API.

Примечание.

По умолчанию служба "Управление API" настраивает глобальную политику forward-request. Политика forward-request необходима для того, чтобы шлюз выполнил запрос к внутренней службе.

В этом руководстве описано следующее:

  • преобразование API для удаления заголовков ответа;
  • Замена исходных URL-адресов в тексте ответа API на URL-адреса шлюза службы "Управление API"
  • защита API путем добавления политик ограничения скорости (регулирования);
  • проверка преобразований.

Политики на портале

Необходимые компоненты

Перейдите к экземпляру службы управления API.

  1. На портале Azure найдите и выберите службы Управление API.

    Выбор

  2. На странице Службы Управления API выберите экземпляр Управления API.

    Выбор экземпляра службы

преобразование API для удаления заголовков ответа;

В этом разделе показано, как скрыть заголовки HTTP, которые вы не хотите показывать пользователям. Например, можно удалить следующие заголовки в HTTP-ответе:

  • X-Powered-By,
  • X-AspNet-Version.

Проверка исходного ответа

Чтобы увидеть исходный ответ, сделайте следующее.

  1. В своем экземпляре службы управления API выберите API.
  2. В списке API выберите Demo Conference API.
  3. Выберите вкладку Тест в верхней части экрана.
  4. Выберите операцию GetSpeakers, а затем выберите Отправить.

Исходный ответ API должен выглядеть так:

Исходный ответ API

Как видите, ответ включает заголовки X-AspNet-Version и X-Powered-By.

Настройка политики преобразования

В этом примере показано, как использовать редактор политик на основе форм, который помогает настроить множество политик без необходимости изменять инструкции XML политики напрямую.

  1. Выберите Demo Conference API>Конструктор>Все операции.

  2. В разделе Outbound processing (Обработка исходящих данных) выберите + Add policy (Добавить политику).

    Переход к политике исходящих запросов

  3. В окне Add outbound policy (Добавление политики исходящего трафика) выберите Set headers (Задать заголовки).

    Политика

  4. Чтобы настроить политику задания заголовков:

    1. В поле Name (Имя) введите X-Powered-By. В поле Action (Действие) выберите delete (Удалить).
    2. Выберите + Add header (Добавить заголовок).
    3. В поле Name (Имя) введите X-AspNet-Version. В поле Action (Действие) выберите delete (Удалить).

    Установка заголовка HTTP

  5. Выберите Сохранить. Два элемента политики set-header отображаются в разделе Outbound processing (Обработка исходящих данных).

Замена исходных URL-адресов в тексте ответа API на URL-адреса шлюза службы "Управление API"

В этом разделе показано, как заменить исходные URL-адреса, присутствующие в тексте HTTP-ответа от API, на URL-адреса шлюз службы "Управление API". Возможно, вы захотите скрыть исходные URL-адреса серверной части от пользователей.

Проверка исходного ответа

Чтобы увидеть исходный ответ, сделайте следующее.

  1. Выберите Demo Conference API>Тест.

  2. Выберите операцию GetSpeakers, а затем выберите Отправить.

    Как видите, ответ включает исходные URL-адреса серверной части:

    Исходные URL-адреса в ответе

Настройка политики преобразования

В этом примере используется редактор кода политики для добавления XML-фрагмента политики непосредственно в ее определение.

  1. Выберите Demo Conference API>Конструктор>Все операции.

  2. В разделе Outbound processing (Обработка исходящих запросов) выберите значок редактора кода (/</>).

    Перейдите к редактору кода исходящей политики

  3. Поместите курсор на элемент <outbound> на пустой строке. Затем выберите Show snippets (Показать фрагменты) в правом верхнем углу экрана.

    Выбор фрагментов кода

  4. В окне справа в разделе Политики преобразования выберите Mask URLs in content (Маскировка URL-адресов в содержимом).

    Элемент <redirect-content-urls /> будет вставлен в позицию, обозначенную курсором.

    Маскировка URL-адресов в содержимом

  5. Выберите Сохранить.

защита API путем добавления политик ограничения скорости (регулирования);

В этом разделе показано, как добавить защиту в API серверной части, настроив ограничения частоты запросов, чтобы разработчики не злоупотребляли API. В этом примере установлено ограничение в 15 вызовов за 15 секунд для каждого идентификатора подписки. Через 15 секунд разработчик может снова повторять вызов API.

  1. Выберите Demo Conference API>Конструктор>Все операции.

  2. В разделе Inbound processing (Обработка исходящих запросов) выберите значок редактора кода (</>).

    Переход к политике входящего трафика

  3. Поместите курсор на элемент <inbound> на пустой строке. Затем выберите Show snippets (Показать фрагменты) в правом верхнем углу экрана.

    Настройка политики входящего трафика

  4. На панели справа в разделе Access restriction policies (Политики ограничения доступа) выберите Limit call rate per key (Ограничить частоту вызовов для одного ключа).

    Элемент <rate-limit-by-key /> будет вставлен в позицию, обозначенную курсором.

    Выбор ограничения частоты звонков на ключ

  5. Замените код <rate-limit-by-key /> в элементе <inbound> следующим фрагментом: Затем выберите Сохранить.

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

проверка преобразований.

Если на этом этапе взглянуть на код в редакторе, ваши политики будут выглядеть так:

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

Оставшаяся часть этого раздела посвящена проверке преобразований политики, которые вы задали ранее.

Проверка очистки заголовков в ответе

  1. Выберите Demo Conference API>Тест.

  2. Выберите операцию GetSpeakers, а затем выберите Отправить.

    Здесь вы увидите, что заголовки удалены из ответа:

    Очищенный заголовок ответа

Проверка замены URL-адреса

  1. Выберите Demo Conference API>Тест.

  2. Выберите операцию GetSpeakers, а затем выберите Отправить.

    Как видите, URL-адреса заменяются.

    Замененные URL-адреса

Проверка предела скорости (регулирования)

  1. Выберите Demo Conference API>Тест.

  2. Щелкните операцию GetSpeakers. Нажмите Отправить три раза подряд.

    После третьего запроса вы получите ответ 429 — слишком много запросов.

    Слишком много запросов

  3. Подождите не менее 15 секунд, а затем выберите Отправить снова. Теперь вы должны получить ответ 200 — ОК.

Следующие шаги

Из этого руководства вы узнали, как:

  • преобразование API для удаления заголовков ответа;
  • Замена исходных URL-адресов в тексте ответа API на URL-адреса шлюза службы "Управление API"
  • защита API путем добавления политик ограничения скорости (регулирования);
  • проверка преобразований.

Перейдите к следующему руководству:

Monitor your API (Мониторинг API)