Пошаговое руководство с примером проекта

Представьте, что вы развернули свое приложение в службах приложений Azure и настроили APIM, а APIM предоставляет все функции, такие как маршрутизация к различным приложениям на основе пути контекста, реализация микросервисов, добавление OAuth, уровень кэширования, совместное использование ваших API через портал разработчика, и т. д. Следующий вопрос заключается в том, как вы защищаете от DDOS-атак, как вы обслуживаете быстрее и надежнее, как вы балансируете нагрузку, как вы эффективно направляете трафик на свои сервисы и т. д.

Azure Frontdoor — это ответ на все вышеперечисленные вопросы. Он обеспечивает разгрузку SSL, центральное место для организации трафика, CDN и т. д. В предыдущих статьях мы видели, как запускать API-интерфейсы Java, работающие в службах приложений, настраивать APIM и OAuth 2.0 и т. д. (ссылки можно найти в разделы ниже) В этом посте мы увидим, как настроить Azure FrontDoor для API Java, работающего в службах приложений и обслуживающего через APIM.

  • Необходимые условия
  • Пример проекта
  • Запуск API в службах приложений
  • Запуск API в службах приложений через APIM
  • Настройка OAuth 2.0 для API
  • Настройка передней дверцы Azure
  • Тестирование с помощью Postman
  • Сводка
  • Заключение

Предпосылки

  • Если вы новичок в Java REST API, перейдите по ссылке ниже, чтобы узнать, как разрабатывать и создавать Java REST API с помощью Spring Boot.

Как разрабатывать и создавать Java Rest API

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

Основы докера

Вам необходимо понимать концепции Docker, такие как создание образов, управление контейнерами и т. д. Ниже приведены некоторые ссылки, которые вы можете понять о Docker, если вы новичок.

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

Учетная запись Microsoft Azure

У вас должна быть учетная запись Microsoft Azure. Вы можете получить бесплатную учетную запись на один год. После входа в систему вы должны увидеть показанный ниже экран.

Вам необходимо создать подписку для своей учетной записи. Наиболее распространенной является подписка Pay As You Go.

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

Пример проекта

Вот ссылка Github на пример проекта, который вы можете просто клонировать и запустить на своем компьютере.

// clone the project
git clone https://github.com/bbachi/java-webservice-example.git

Как только вы клонируете проект и импортируете проект как существующий проект maven

Запустите проект как java-приложение, так как Spring Boot имеет встроенный контейнер tomcat.

Вы можете получить доступ к API по этому URL

http://localhost:8080/api/todo/tasks

Запуск API в службах приложений

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

Как запустить и развернуть Java REST API в службах приложений Azure

После того, как вы просмотрите вышеуказанную статью, вы должны увидеть этот экран и нажать кнопку «Перейти к ресурсу» и найти URL-адрес ниже.

Вы можете щелкнуть URL-адрес и выполнить запрос GET, как показано ниже, и вы получите результат, как показано ниже.

https://api-java-demo.azurewebsites.net/api/todo/tasks

Запуск API в службах приложений через APIM

Вот подробная статья о развертывании Java REST API в службах приложений и работе через API-шлюз.

Как добавить шлюз API для ваших API-интерфейсов Java, работающих в службах приложений

К тому времени, когда вы закончите статью выше, вы должны использовать API через Azure APIM, как показано ниже.

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

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

Настройка OAuth 2.0 для API

Настройка OAuth 2.0 для APIM включает создание регистраций приложений, настройку OAuth 2.0 и добавление их в APIM, а также добавление политик для проверки токена в APIM и т. д. Все эти вещи подробно описаны в статье ниже. Пожалуйста, взгляните на это как на предварительное условие.

Настройка аутентификации 2.0 в APIM для API-интерфейсов Java, работающих в службах приложений

Настройка передней дверцы Azure

Давайте создадим входную дверь Azure, щелкнув ссылку «Создать ресурс» на панели инструментов Azure.

Когда вы нажмете кнопку «Создать», вы будете перенаправлены на страницу ниже, где вам нужно указать группу ресурсов, в которую вы создаете этот ресурс входной двери.

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

Нажмите значок «плюс» на вкладке «Внешний интерфейс», а затем дайте имя для ваших API, как показано ниже. Я дал demo-apis, а затем нажмите кнопку добавления ниже.

Вы можете увидеть его на вкладке после добавления, как показано ниже, и вкладка Backend pools будет включена для настройки вашего APIM. Щелкните значок плюса для внутренних пулов.

После указания имени пула вам необходимо добавить серверную часть, нажав кнопку «Добавить серверную часть», как показано ниже.

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

Теперь мы добавили внутренний пул и пришло время добавить правила маршрутизации.

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

Ваше развертывание создается, когда вы нажимаете кнопку Review+Create.

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

Когда вы нажимаете на Front Door Designer с левой стороны, вы видите эту страницу конструктора, где вы можете добавлять или редактировать существующие конфигурации.

Если вы возьмете приведенный выше URL-адрес и сразу же нажмете на него в браузере, вы можете увидеть эту страницу, потому что передней дверце Azure требуется некоторое время для настройки всех ресурсов.

https://demo-apis.azurefd.net/api/todo/tasks

Вы можете увидеть, что ваш API работает через некоторое время, так как он настроен с помощью OAuth 2.0, вы видите сообщение «Неавторизованное».

Тестирование с почтальоном

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

Вы даже получите тот же результат без токена в почтальоне.

Теперь нам нужно сначала получить токен от почтальона, чтобы передать его в качестве токена носителя авторизации вместе с запросом.

Вам необходимо ввести все данные, выбрав учетные данные клиента в качестве типа гранта.

Имя токена

Вы можете указать любое имя, чтобы сохранить токен локально на почтальоне, чтобы мы могли использовать его, выбрав имя.

URL-адрес аутентификации и URL-адрес токена доступа

Вы должны получить эти конечные точки из конечных точек регистрации приложений, как показано ниже.

Идентификатор клиента и секрет клиента

Как я упоминал ранее, мы должны взять идентификатор клиента и секрет из конфигурации.

Сфера

Вы должны ввести приведенное ниже значение в качестве области действия. Не забудьте заменить Files.Read на .default.

api://2e9f2367-633a-4890-8659-e1586702c5dd/.default

Нажмите на токен запроса, и вы получите токен, как показано ниже.

Теперь вы можете использовать этот токен для отправки запроса API. Он автоматически добавляется в заголовки запроса, как показано ниже.

Если вы сейчас попадете в API с этим токеном, вы все равно получите код 401, как показано ниже.

Это потому, что нам нужно убедиться, что нам нужно добавить ниже как для клиентских, так и для серверных приложений в разделе «Регистрации приложений».

"accessTokenAcceptedVersion": 2

Убедитесь, что при декодировании токена с помощью любого декодера JWT значение aud должно совпадать со значением, которое мы вводим в политике jwt на шлюзе API, а версия — 2.

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

Резюме

  • При развертывании веб-приложений или API-интерфейсов в службах приложений вы можете предоставлять их непосредственно из конечной точки служб приложений или обслуживать их через Azure APIM.
  • Первое, что нам нужно сделать, это зарегистрировать два приложения, которые отражают серверную часть и клиент.
  • Это клиентское приложение представляет собой любое клиентское приложение, которое обращается к API.
  • Убедитесь, что вы сохранили секрет клиента где-нибудь, чтобы он больше не отображался. Вам нужно создать еще один секрет клиента, если вы его потеряете.
  • На этом этапе управление API не проверяет токен доступа. Вы должны добавить политику в APIM
  • При тестировании с почтальоном вы должны выбрать учетные данные клиента в качестве типа гранта.
  • Убедитесь, что вы добавили 2 к accessTokenAcceptedVersion в файле манифеста клиентского и серверного приложений.
  • Azure Frontdoor обеспечивает разгрузку SSL, центральное место для организации трафика, CDN и т. д.

Вывод

Мы увидели, как настроить переднюю дверцу Azure для ваших API-интерфейсов Java, работающих в службах приложений. В будущих сообщениях мы увидим расширенные случаи, когда вы можете сбалансировать нагрузку на различные серверные части и т. д.