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


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

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

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

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

Примечание.

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

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

  • преобразование API для удаления заголовков ответа;
  • Замена исходных URL-адресов в тексте ответа API на URL-адреса шлюза службы "Управление API"
  • защита 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. Чтобы настроить политику заголовков Set, сделайте следующее:

    1. В поле Name (Имя) введите X-Powered-By.
    2. Оставьте значение пустым. Если значение отображается в раскрывающемся списке, удалите его.
    3. В поле Action (Действие) выберите delete (Удалить).
    4. Выберите Сохранить.
  5. Повторите предыдущие два шага, чтобы добавить политику заголовков Set, которая удаляет заголовок X-AspNet-Version :

  6. После настройки два элемента политики заголовка набора отображаются в разделе "Исходящая обработка ".

    Снимок экрана: политики исходящего трафика наборов заголовков на портале.

Замена исходных 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, а затем выберите Отправить.

    Как видно, заголовки X-AspNet-Version и X-Powered-By были удалены:

    Снимок экрана: заголовки с полосатыми ответами на портале.

Проверка замены 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)