Упражнение. Создание подписок в службе управления API Azure

Завершено

Используйте пользовательский интерфейс службы управления API Azure на портале Azure, чтобы создавать подписки и получать ключи подписки для использования в клиентских приложениях.

Предположим, что ваша метеорологическая компания решила предоставлять метеорологические данные клиентам, которые оплачивают подписку. Важным требованием является предоставление доступа только клиентам, которым предоставлен ключ. Как ведущий разработчик вы должны создать шлюз API. Шлюз будет использоваться для публикации RESTful Weather API, который предоставляет конечную точку OpenAPI. Затем вы защитите конечную точку и выделите ключ клиента.

В этом уроке рассматриваются следующие задачи:

  • Публикация RESTful Weather API с данными о погоде.
  • Развертывание шлюза управления API.
  • Предоставление Weather API через конечную точку шлюза.
  • Ограничение доступа на основе ключа подписки.

Внимание

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

Развертывание веб-API Weather

Вы разработали приложение .NET Core, которое возвращает информацию о погоде. Это приложение включает пакет Swashbuckle, который создает документацию OpenAPI.

Чтобы сэкономить время, мы выполним скрипт для размещения API в Azure. Скрипт выполняет следующие задачи.

  • создает план службы приложений Azure с ценовой категорией "Бесплатный";
  • создает веб-API в службе приложений Azure, настроенный для развертывания из локального репозитория GIT;
  • настраивает учетные данные развертывания на уровне учетной записи для приложения;
  • настраивает локальный репозиторий GIT;
  • развертывает веб-API в экземпляре службы приложений.
  1. Войдите на портал Azure.

  2. На панели задач Azure щелкните значок Cloud Shell, чтобы открыть Azure Cloud Shell.

    Снимок экрана: значок Cloud Shell на панели задач.

  3. Выполните в Azure Cloud Shell приведенную ниже команду git clone, чтобы клонировать репозиторий, содержащий исходный код приложения, и скрипт установки из GitHub.

    git clone https://github.com/MicrosoftDocs/mslearn-control-authentication-with-apim.git
    
  4. Перейдите в папку локального репозитория, выполнив приведенную ниже команду cd.

    cd mslearn-control-authentication-with-apim
    
  5. Как ясно из имени файла, setup.sh — это скрипт для создания API. Будет создано общедоступное веб-приложение, которое предоставляет интерфейс OpenAPI.

    bash setup.sh
    

    Этот скрипт состоит из 7 частей, а его выполнение занимает около минуты. Обратите внимание, что во время развертывания в удаленной службе приложений автоматически устанавливаются все зависимости, необходимые для выполнения приложения.

    Выполнение скрипта завершается выводом двух URL-адресов: URL-адреса Swagger и примера URL-адреса. Эти URL-адреса можно использовать для тестирования развертывания приложения.

  6. Чтобы проверить, правильно ли развернуто приложение, скопируйте URL-адрес Swagger в выходных данных Azure Cloud Shell и вставьте его в адресную строку в браузере. В браузере должен открыться пользовательский интерфейс Swagger нашего приложения с объявлением следующих конечных точек RESTful:

    • api/weather/{latitude}/{longitude}, который возвращает метеорологические данные за текущий день на указанной широте и долготе (двойные значения).
    • api/weather/{date}/{latitude}/{longitude}, который возвращает метеорологические данные за указанный день (значение даты) на указанной широте и долготе (двойные значения).

    Представление Swagger.

  7. Наконец, скопируйте и сохраните пример URL-адреса из выходных данных Azure Cloud Shell. Это расположение является URL-адресом в формате JSON для Swagger. Он понадобится вам позже в этом упражнении.

Развертывание шлюза API

На следующем шаге в этом упражнении будет создан шлюз API на портале Azure. Этот шлюз будет использоваться в следующем упражнении для публикации API.

  1. Войдите на портал Azure.

  2. В меню ресурсов Azure или на домашней странице в службах Azure выберите "Создать ресурс". Откроется панель Создание ресурса.

  3. В меню ресурсов выберите "Интеграция" и в результатах выберите Управление API. Откроется панель Установка шлюза службы "Управление API".

  4. На вкладке Основные сведения введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Сведения о проекте
    Отток подписок Выберите свою подписку.
    Группа ресурсов Выберите новую или существующую группу ресурсов. Группа ресурсов — это логический контейнер, содержащий связанные ресурсы для решения Azure.
    Сведения об экземпляре
    Область/регион Выберите доступный регион.
    Имя ресурса Введите apim-WeatherData<random number>; случайное число гарантирует, что имя будет глобально уникальным. Запишите имя этого ресурса; оно будет использоваться как имя шлюза API и понадобится вам позже в этом упражнении.
    имя рабочей области. Введите Weather-Company.
    Адрес электронной почты администратора Адрес электронной почты для получения всех системных уведомлений.
    Ценовая категория
    Ценовая категория В раскрывающемся списке выберите Consumption.
  5. Выберите Проверка и создание, а после завершения проверки нажмите Создать.

    Примечание.

    Уровень потребления обеспечивает быстрое развертывание для тестирования и имеет модель ценообразования на оплату за использование. Общий интерфейс управления API похож на другие ценовые категории.

Вы можете просмотреть ход развертывания, а также создаваемые ресурсы.

Импорт API

После завершения развертывания импортируйте API Погоды в шлюз Управления API с помощью следующей процедуры.

  1. Выберите Перейти к ресурсу. Откроется панель обзора службы Управление API для вашего ресурса.

  2. В левой панели меню в разделе Интерфейсы API выберите Интерфейсы API. Появится панель API для вашей службы "Управление API" с выбором шаблонов для создания и отображения API.

  3. В разделе Создание из определения выберите OpenAPI. Откроется диалоговое окно Создание из спецификации OpenAPI.

  4. В поле Спецификация OpenAPI вставьте URL-адрес JSON Swagger, сохраненный ранее в упражнении. По нажатию клавиши Ввод или при выборе другой области диалогового окна другие поля будут заполнены за вас. Эти данные импортированы из спецификации OpenAPI, созданной Swagger.

  5. Примите значения по умолчанию для всех остальных параметров и выберите Создать.

     Снимок экрана: диалоговое окно с выделенным url-адресом swagger.json.

На вкладке "Конструирование" API данных о погоде отображаются все операции, которые состоят из двух операций GET.

Добавление ключа подписки для доступа к Weather API

Последним шагом является добавление ключа подписки для API данных о погоде.

  1. В левой области меню в разделе Интерфейсы API выберите Подписки. Откроется панель Подписки для вашей службы "Управление API".

  2. В верхней строке меню выберите Добавить подписку. Откроется панель Создать подписку.

    Снимок экрана: добавление новой подписки.

  3. Введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Имя. weather-data-subscription
    Показать имя Weather Data Subscription
    Разрешить трассировку Флажок отсутствует
    Область В раскрывающемся списке выберите API.
    API В раскрывающемся списке выберите Данные о погоде.
  4. Нажмите кнопку создания. Панель Подписки содержит две подписки: встроенную подписку с доступом ко всем данным и подписку на данные о погоде.

  5. В конце строки Подписка на данные о погоде выделите многоточие и в контекстном меню выберите Показать или скрыть ключи. Отображаются значения первичного и вторичного ключей.

  6. Скопируйте в буфер обмена первичный ключ из подписки на метеорологические сведения и сохраните его в Блокноте или подобном приложении. Этот ключ понадобится на следующем шаге.

Тестирование ключа подписки

API защищен ключом. Теперь протестируем API без ключа и с ключом, чтобы продемонстрировать безопасность доступа.

  1. Выполните запрос без передачи ключа подписки. В Azure Cloud Shell выполните следующую команду cURL. Замените заполнитель [Имя шлюза] именем ресурса для шлюза API (apim-WeatherDataNNNN), созданного в предыдущей задаче.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1
    

    Эта команда не имеет ключа подписки и должна возвращать ошибку 401 "Отказано в доступе", аналогичную следующей:

    { "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
    
  2. Теперь выполните следующую команду. Замените заполнитель шлюза именем ресурса для шлюза API (apim-WeatherDataNNNN). Кроме того, замените заполнитель первичного ключа первичным ключом, скопированным на шаге show/hide.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1 \
      -H 'Ocp-Apim-Subscription-Key: [Primary Key]'
    

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

    {"mainOutlook":{"temperature":32,"humidity":34},"wind":{"speed":11,"direction":239.0},"date":"2019-05-16T00:00:00+00:00","latitude":53.0,"longitude":-1.0}