Краткое руководство. Развертывание приложения API RESTful в Azure Spring Apps
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
В этой статье описывается, как развернуть приложение API RESTful, защищенное идентификатором Microsoft Entra в Azure Spring Apps. Пример проекта — это упрощенная версия на основе простого веб-приложения Todo , который предоставляет только серверную службу и использует идентификатор Microsoft Entra для защиты API RESTful.
Эти API RESTful защищены путем применения управления доступом на основе ролей (RBAC). Анонимные пользователи не могут получить доступ к данным и не могут управлять доступом для разных пользователей. Анонимные пользователи имеют только следующие три разрешения:
- Чтение. С этим разрешением пользователь может считывать данные ToDo.
- Запись. С помощью этого разрешения пользователь может добавлять или обновлять данные ToDo.
- Удаление: с этим разрешением пользователь может удалить данные ToDo.
После успешного развертывания можно просматривать и тестировать API с помощью пользовательского интерфейса Swagger.
На следующей схеме показана архитектура системы:
В этой статье описаны следующие варианты создания ресурсов и их развертывания в Azure Spring Apps:
- Параметр подключаемого модуля портал Azure + Maven предоставляет более обычный способ создания ресурсов и развертывания приложений пошаговые инструкции. Этот вариант подходит для разработчиков Spring с помощью облачных служб Azure впервые.
- Вариант командной строки разработчика Azure — это более эффективный способ автоматического создания ресурсов и развертывания приложений с помощью простых команд. Azure Developer CLI использует шаблон для подготовки необходимых ресурсов Azure и развертывания кода приложения. Этот вариант подходит для разработчиков Spring, знакомых с облачными службами Azure.
В этой статье описаны следующие варианты создания ресурсов и их развертывания в Azure Spring Apps:
- Параметр подключаемого модуля портал Azure + Maven предоставляет более обычный способ создания ресурсов и развертывания приложений пошаговые инструкции. Этот вариант подходит для разработчиков Spring с помощью облачных служб Azure впервые.
- Параметр Azure CLI использует мощное средство командной строки для управления ресурсами Azure. Этот вариант подходит для разработчиков Spring, знакомых с облачными службами Azure.
1. Предварительные требования
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Одна из следующих ролей:
- Глобальный администратор или Администратор привилегированных ролей для предоставления согласия для приложений, запрашивающих любое разрешение для любого API.
- Администратор облачных приложений или администратор приложений для предоставления согласия для приложений, запрашивающих любое разрешение для любого API, кроме ролей приложения Microsoft Graph (разрешения приложения).
- Настраиваемая роль каталога, которая включает разрешение на предоставление приложениям разрешений для разрешений, необходимых приложению.
Дополнительные сведения см. в разделе Предоставление согласия администратора на уровне клиента приложению.
Если вы развертываете экземпляр плана Azure Spring Apps Enterprise впервые в целевой подписке, см. раздел "Требования" плана Enterprise в Azure Marketplace.
Git.
Пакет средств разработки Java (JDK) версии 17.
Клиент Microsoft Entra. Инструкции по созданию объекта см. в кратком руководстве по созданию нового клиента в идентификаторе Microsoft Entra.
Подписка Azure, если у вас нет подписки Azure, создайте бесплатную учетную запись Azure перед началом работы.
Одна из следующих ролей:
- Глобальный администратор или Администратор привилегированных ролей для предоставления согласия для приложений, запрашивающих любое разрешение для любого API.
- Администратор облачных приложений или администратор приложений для предоставления согласия для приложений, запрашивающих любое разрешение для любого API, кроме ролей приложения Microsoft Graph (разрешения приложения).
- Настраиваемая роль каталога, которая включает разрешение на предоставление приложениям разрешений для разрешений, необходимых приложению.
Дополнительные сведения см. в разделе Предоставление согласия администратора на уровне клиента приложению.
Git.
Пакет средств разработки Java (JDK) версии 17.
Клиент Microsoft Entra. Инструкции по созданию объекта см. в кратком руководстве по созданию нового клиента в идентификаторе Microsoft Entra.
2. Подготовка проекта Spring
Чтобы развернуть приложение API RESTful, сначала необходимо подготовить проект Spring для локального запуска.
Выполните следующие действия, чтобы клонировать и запустить приложение локально:
Используйте следующую команду, чтобы клонировать пример проекта из GitHub:
git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
Если вы хотите локально запустить приложение, выполните действия, описанные в разделах "Предоставление API RESTful" и обновление разделов конфигурации приложения, а затем выполните следующую команду, чтобы запустить пример приложения с Maven:
cd ASA-Samples-Restful-Application ./mvnw spring-boot:run
3. Подготовка облачной среды
Основными ресурсами, необходимыми для запуска этого примера приложения, являются экземпляр Azure Spring Apps и экземпляр База данных Azure для PostgreSQL. В следующих разделах описывается создание этих ресурсов.
3.1. Войдите на портал Azure
Перейдите к портал Azure и введите учетные данные для входа на портал. Панель мониторинга службы является представлением по умолчанию.
3.2. Создание экземпляра Azure Spring Apps
Чтобы создать экземпляр службы Azure Spring Apps, выполните следующие действия.
Выберите "Создать ресурс" в углу портал Azure.
Выберите Compute>Azure Spring Apps.
Заполните форму Основные данные , указав следующую информацию:
Параметр Предлагаемое значение Description Подписка Имя подписки. Подписка Azure, которую вы хотите использовать для сервера. Если у вас есть несколько подписок, выберите ту, через которую вы предпочитаете оплачивать этот ресурс. Группа ресурсов myresourcegroup Новое имя группы ресурсов или уже имеющееся из подписки. Имя myasa Уникальное имя, определяющее службу Azure Spring Apps. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы. Первым символом в имени службы должна быть буква, а последним — буква или цифра. План Функции корпоративного уровня План ценообразования, определяющий ресурс и затраты, связанные с экземпляром. Регион Регион, ближайший к вашим пользователям. Ближайшее к пользователям расположение. Избыточность между зонами не выбрано Параметр создания службы Azure Spring Apps в зоне доступности Azure. Эта функция в настоящее время не поддерживается во всех регионах. План IP-адресов программного обеспечения Оплата по мере использования План ценообразования, который позволяет платить по мере использования Azure Spring Apps. Terms Выбрано Флажок соглашения, связанный с предложением Marketplace. Установите этот флажок. Развертывание примера проекта не выбрано Параметр для использования встроенного примера приложения. Выберите "Рецензирование" и " Создать ", чтобы просмотреть выбранные варианты. Затем выберите "Создать ", чтобы подготовить экземпляр Azure Spring Apps.
На панели инструментов щелкните значок Уведомления (колокольчик), чтобы отслеживать процесс развертывания. После завершения развертывания можно выбрать "Закрепить на панели мониторинга", которая создает плитку для этой службы на панели мониторинга портал Azure в качестве ярлыка на странице обзора службы.
Выберите "Перейти к ресурсу", чтобы перейти на страницу обзора Azure Spring Apps.
3.3. Подготовка экземпляра PostgreSQL
Чтобы создать сервер База данных Azure для PostgreSQL, выполните следующие действия.
Перейдите к портал Azure и нажмите кнопку "Создать ресурс".
Выберите Базы данных>База данных Azure для PostgreSQL.
Выберите вариант развертывания Гибкий сервер.
Заполните вкладку "Основные сведения" следующими сведениями :
- Имя сервера: my-demo-pgsql
- Регион: восточная часть США
- Версия PostgreSQL: 14
- Тип рабочей нагрузки: разработка
- Включение высокой доступности: не выбрано
- Метод проверки подлинности: только проверка подлинности PostgreSQL
- Имя пользователя администратора: myadmin
- Пароль и подтверждение пароля: введите пароль.
Чтобы настроить вкладку "Сеть" , используйте следующие сведения:
- Метод подключения: общедоступный доступ (разрешенные IP-адреса)
- Разрешить общедоступный доступ из любой службы Azure в Azure на этот сервер: выбрано:
Выберите "Проверка и создание ", чтобы просмотреть выбранные элементы, и нажмите кнопку "Создать ", чтобы подготовить сервер. Эта операция может занять несколько минут.
Перейдите на сервер PostgreSQL в портал Azure. На странице обзора найдите значение имени сервера и запишите его для последующего использования. Необходимо настроить переменные среды для приложения в Azure Spring Apps.
Выберите базы данных из меню навигации, чтобы создать базу данных, например todo.
3.4. Подключение экземпляра приложения к экземпляру PostgreSQL
Чтобы подключить экземпляры службы, выполните следующие действия.
Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.
В меню навигации откройте приложения и нажмите кнопку "Создать приложение".
На странице "Создание приложения" введите имя приложения simple-todo-api и выберите артефакты Java в качестве типа развертывания.
Нажмите кнопку "Создать ", чтобы завершить создание приложения, а затем выберите приложение для просмотра сведений.
Перейдите к приложению, созданному в портал Azure. На странице "Обзор" выберите "Назначить конечную точку", чтобы предоставить общедоступную конечную точку для приложения. Сохраните URL-адрес для доступа к приложению после развертывания.
Выберите соединитель службы в области навигации, а затем нажмите кнопку "Создать ", чтобы создать подключение к службе.
Заполните вкладку "Основные сведения" следующими сведениями :
- Тип службы: гибкий сервер базы данных для PostgreSQL
- Имя подключения: заполняется автоматически созданное имя, которое также можно изменить.
- Подписка. Выберите нужную подписку.
- Гибкий сервер PostgreSQL: my-demo-pgsql
- База данных PostgreSQL: выберите созданную базу данных.
- Тип клиента: SpringBoot
Настройте вкладку "Далее: проверка подлинности " со следующими сведениями:
- Выберите тип проверки подлинности, который вы хотите использовать между вычислительной службой и целевой службой.: выберите строку подключения.
- Продолжить с...: выбор учетных данных базы данных
- Имя пользователя: myadmin
- Пароль. Введите пароль.
Выберите Далее: сеть. Используйте параметр по умолчанию Настройка правил брандмауэра для включения доступа к целевой службе.
Нажмите кнопку "Далее" и "Создать ", чтобы просмотреть выбранные элементы, а затем нажмите кнопку "Создать ", чтобы создать подключение.
3.5. Предоставление API RESTful
Чтобы предоставить API RESTful в идентификаторе Microsoft Entra, выполните следующие действия.
Войдите на портал Azure.
Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.
Найдите и выберите Microsoft Entra ID.
В разделе Управление выберите Регистрация приложений>Создать регистрацию.
Введите имя приложения в поле "Имя ", например Todo. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.
Для поддерживаемых типов учетных записей выберите учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) и личных учетных записей Майкрософт.
Выберите Зарегистрировать, чтобы создать приложение.
На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Вам потребуется настроить файл конфигурации YAML для этого проекта.
В разделе "Управление" выберите "Предоставить API", найдите URI идентификатора приложения в начале страницы и нажмите кнопку "Добавить".
На странице "Изменение идентификатора приложения" примите предлагаемый URI идентификатора приложения (
api://{client ID}
) или используйте понятное имя вместо идентификатора клиента, напримерapi://simple-todo
, а затем нажмите кнопку "Сохранить".В разделе "Управление" выберите "Предоставить область" API>"Добавить область", а затем введите следующие сведения:
- В поле "Имя области" введите ToDo.Read.
- Для того, кто может согласиться, выберите только администраторов.
- Для отображаемого имени согласия администратора введите данные ToDo.
- В разделе "Описание согласия администратора" введите "Разрешить пользователям, прошедшим проверку подлинности", считывать данные ToDo.
- Для состояния оставьте его включенным.
- Выберите Добавить область.
Повторите предыдущие шаги, чтобы добавить другие две области: ToDo.Write и ToDo.Delete.
3.6. Обновление конфигурации приложения
Чтобы обновить YAML-файл, чтобы использовать сведения о зарегистрированном приложении Microsoft Entra, выполните следующие действия, чтобы установить связь с приложением API RESTful:
Найдите файл src/main/resources/application.yml для
simple-todo-api
приложения. Обновите конфигурацию вspring.cloud.azure.active-directory
разделе, чтобы она соответствовала следующему примеру. Обязательно замените заполнители значениями, созданными ранее.spring: cloud: azure: active-directory: profile: tenant-id: <tenant> credential: client-id: <your-application-ID-of-ToDo> app-id-uri: <your-application-ID-URI-of-ToDo>
Примечание.
В маркерах версии 1.0 конфигурация требует идентификатор клиента API, а в маркерах версии 2.0 можно использовать идентификатор клиента или URI идентификатора приложения в запросе. Вы можете настроить оба способа правильного завершения проверки аудитории.
Допустимые значения
tenant-id
:common
,organizations
consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.Чтобы перестроить пример проекта, используйте следующую команду:
./mvnw clean package
4. Развертывание приложения в Azure Spring Apps
Теперь вы можете развернуть приложение в Azure Spring Apps.
Выполните следующие действия, чтобы развернуть с помощью подключаемого модуля Maven для Azure Spring Apps:
Перейдите к полному каталогу и выполните следующую команду, чтобы настроить приложение в Azure Spring Apps:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
В следующем списке описаны взаимодействия с командами:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
- Выберите подписку: выберите номер списка подписок созданного экземпляра Azure Spring Apps, который по умолчанию соответствует первой подписке в списке. Если вы используете номер по умолчанию, нажмите клавишу ВВОД напрямую.
- Используйте существующие Azure Spring Apps в Azure: нажмите y , чтобы использовать существующий экземпляр Azure Spring Apps.
- Выберите Azure Spring Apps для развертывания: выберите номер созданного экземпляра Azure Spring Apps. Если вы используете номер по умолчанию, нажмите клавишу ВВОД напрямую.
- Используйте существующее приложение в Azure Spring Apps <с именем> экземпляра: нажмите клавишу Y , чтобы использовать созданное приложение.
- Подтвердите сохранение всех указанных выше конфигураций: нажмите клавишу Y. Если нажать клавишу N, конфигурация не сохраняется в POM-файлах.
Чтобы развернуть приложение, используйте следующую команду:
./mvnw azure-spring-apps:deploy
В следующем списке описывается взаимодействие с командой:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
После выполнения команды можно увидеть в следующих сообщениях журнала, что развертывание выполнено успешно:
[INFO] Deployment Status: Running
[INFO] InstanceName:simple-todo-api-default-15-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:N/A
[INFO] Getting public url of app(simple-todo-api)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-api.azuremicroservices.io
5. Проверка приложения
Теперь вы можете получить доступ к API RESTful, чтобы узнать, работает ли он.
5.1. Запросите маркер доступа
API RESTful действуют как сервер ресурсов, защищенный идентификатором Microsoft Entra. Перед получением маркера доступа необходимо зарегистрировать другое приложение в идентификаторе Microsoft Entra и предоставить разрешения клиентскому приложению, которое называется ToDoWeb
.
Регистрация клиентского приложения
Чтобы зарегистрировать приложение в идентификаторе Microsoft Entra, которое используется для добавления разрешений для ToDo
приложения, выполните следующие действия.
Войдите на портал Azure.
Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.
Найдите и выберите Microsoft Entra ID.
В разделе Управление выберите Регистрация приложений>Создать регистрацию.
Введите имя приложения в поле "Имя ", например ToDoWeb. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.
Для поддерживаемых типов учетных записей используйте только учетные записи по умолчанию в этом каталоге организации.
Выберите Зарегистрировать, чтобы создать приложение.
На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Он необходим для получения маркера доступа.
Выберите Разрешения API>Добавить разрешение>Мои API.
ToDo
Выберите приложение, зарегистрированное ранее, и выберите разрешения ToDo.Read, ToDo.Write и ToDo.Delete. Выберите Добавить разрешения.Выберите "Предоставить согласие администратора" для имени> клиента, <чтобы предоставить согласие администратора для добавленных разрешений.
Добавление пользователя для доступа к API RESTful
Выполните следующие действия, чтобы создать пользователя-участника в клиенте Microsoft Entra. Затем пользователь может управлять данными ToDo
приложения с помощью API RESTful.
В разделе "Управление" выберите "Пользователи>" Создать пользователя.>
На странице "Создание нового пользователя" введите следующие сведения:
- Имя участника-пользователя: введите имя пользователя.
- Отображаемое имя: введите отображаемое имя пользователя.
- Пароль. Скопируйте автоматически созданный пароль, указанный в поле "Пароль".
Примечание.
Новые пользователи должны завершить проверку подлинности первого входа и обновить пароли, в противном случае при получении маркера доступа возникает
AADSTS50055: The password is expired
ошибка.Когда новый пользователь входит в систему, он получает запрос на обязательное действие. Они могут выбрать запрос позже , чтобы пропустить проверку.
Выберите Просмотр и создание , чтобы просмотреть выбранные элементы. Нажмите кнопку "Создать" , чтобы создать пользователя.
Обновление конфигурации OAuth2 для авторизации пользовательского интерфейса Swagger
Чтобы обновить конфигурацию OAuth2 для авторизации пользовательского интерфейса Swagger, выполните следующие действия. Затем вы можете авторизовать пользователей для получения маркеров доступа через ToDoWeb
приложение.
Откройте клиент Идентификатора Microsoft Entra в портал Azure и перейдите в зарегистрированное
ToDoWeb
приложение.В разделе "Управление" выберите "Проверка подлинности", выберите "Добавить платформу" и выберите одностраничные приложения.
Используйте формат
<your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html
в качестве URL-адреса перенаправления OAuth2 в поле URI перенаправления и нажмите кнопку "Настроить".
2. Подготовка проекта Spring
Чтобы развернуть приложение API RESTful, сначала необходимо подготовить проект Spring для локального запуска.
Выполните следующие действия, чтобы клонировать и запустить приложение локально:
Используйте следующую команду, чтобы клонировать пример проекта из GitHub:
git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
Если вы хотите локально запустить приложение, выполните действия, описанные в разделах "Предоставление API RESTful" и обновление разделов конфигурации приложения, а затем выполните следующую команду, чтобы запустить пример приложения с Maven:
cd ASA-Samples-Restful-Application ./mvnw spring-boot:run
3. Подготовка облачной среды
Основными ресурсами, необходимыми для запуска этого примера приложения, являются экземпляр Azure Spring Apps и экземпляр База данных Azure для PostgreSQL. В следующих разделах описывается создание этих ресурсов.
3.1. Войдите на портал Azure
Перейдите к портал Azure и введите учетные данные для входа на портал. Панель мониторинга службы является представлением по умолчанию.
3.2. Создание экземпляра Azure Spring Apps
Чтобы создать экземпляр службы, выполните следующие действия.
Выберите " Создать ресурс " в углу портала.
Выберите Compute>Azure Spring Apps.
Заполните форму Основные сведения. Используйте следующую таблицу в качестве руководства для завершения формы. Рекомендуемое значение плана — "Стандартный" и "Стандартный" (предварительная версия).
Параметр Предлагаемое значение Description Подписка Имя подписки. Подписка Azure, которую вы хотите использовать для сервера. Если у вас есть несколько подписок, выберите ту, через которую вы предпочитаете оплачивать этот ресурс. Группа ресурсов myresourcegroup Новое имя группы ресурсов или уже имеющееся из подписки. Имя myasa Уникальное имя, определяющее службу Azure Spring Apps. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы. Первым символом в имени службы должна быть буква, а последним — буква или цифра. План Стандартное потребление и выделенное (предварительная версия) План ценообразования определяет ресурсы и затраты, связанные с вашим экземпляром. Регион Регион, ближайший к вашим пользователям. Ближайшее к пользователям расположение. Среда приложений-контейнеров myenvironment Параметр выбора экземпляра среды "Приложения контейнеров" для совместного использования одной виртуальной сети с другими службами и ресурсами. Используйте следующую таблицу в качестве руководства по созданию среды приложений контейнеров:
Параметр Предлагаемое значение Description Имя среды myenvironment Уникальное имя, определяющее службу среды приложений контейнеров Azure. План Потребление План ценообразования определяет ресурсы и затраты, связанные с вашим экземпляром. Избыточность между зонами Выключено Параметр создания службы "Среда приложений контейнеров" в зоне доступности Azure. Выберите "Рецензирование" и " Создать ", чтобы просмотреть выбранные варианты. Затем выберите "Создать ", чтобы подготовить экземпляр Azure Spring Apps.
На панели инструментов щелкните значок Уведомления (колокольчик), чтобы отслеживать процесс развертывания. После завершения развертывания можно выбрать "Закрепить на панели мониторинга", которая создает плитку для этой службы на панели мониторинга портал Azure в качестве ярлыка на странице обзора службы.
Выберите "Перейти к ресурсу", чтобы открыть страницу обзора службы.
Внимание
Профиль рабочей нагрузки потребления имеет модель выставления счетов по мере использования без начальной стоимости. Плата за выделенный профиль рабочей нагрузки взимается на основе подготовленных ресурсов. Дополнительные сведения см. в разделе "Профили рабочей нагрузки" в службах контейнеров Azure и ценах на Azure Spring Apps.
3.3. Подготовка экземпляра PostgreSQL
Чтобы создать сервер База данных Azure для PostgreSQL, выполните следующие действия.
Перейдите к портал Azure и нажмите кнопку "Создать ресурс".
Выберите Базы данных>База данных Azure для PostgreSQL.
Выберите вариант развертывания Гибкий сервер.
Заполните вкладку "Основные сведения" следующими сведениями :
- Имя сервера: my-demo-pgsql
- Регион: восточная часть США
- Версия PostgreSQL: 14
- Тип рабочей нагрузки: разработка
- Включение высокой доступности: не выбрано
- Метод проверки подлинности: только проверка подлинности PostgreSQL
- Имя пользователя администратора: myadmin
- Пароль и подтверждение пароля: введите пароль.
Чтобы настроить вкладку "Сеть" , используйте следующие сведения:
- Метод подключения: общедоступный доступ (разрешенные IP-адреса)
- Разрешить общедоступный доступ из любой службы Azure в Azure на этот сервер: выбрано:
Выберите "Проверка и создание ", чтобы просмотреть выбранные элементы, и нажмите кнопку "Создать ", чтобы подготовить сервер. Эта операция может занять несколько минут.
Перейдите на сервер PostgreSQL в портал Azure. На странице обзора найдите значение имени сервера и запишите его для последующего использования. Необходимо настроить переменные среды для приложения в Azure Spring Apps.
Выберите базы данных из меню навигации, чтобы создать базу данных, например todo.
3.4. Подключение экземпляра приложения к экземпляру PostgreSQL
Чтобы подключить экземпляры службы, выполните следующие действия.
Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.
В меню навигации откройте приложения и нажмите кнопку "Создать приложение".
На странице "Создание приложения" введите имя приложения simple-todo-api и выберите артефакты Java в качестве типа развертывания.
Нажмите кнопку "Создать ", чтобы завершить создание приложения и выбрать приложение для просмотра сведений.
Перейдите к приложению, созданному в портал Azure. На странице "Обзор" выберите "Назначить конечную точку", чтобы предоставить общедоступную конечную точку для приложения. Сохраните URL-адрес для доступа к приложению после развертывания.
Перейдите к созданному приложению, разверните узел "Параметры " и выберите "Конфигурация " в меню навигации, а затем выберите переменные среды, чтобы задать переменные среды.
Добавьте следующие переменные среды для подключения PostgreSQL и нажмите кнопку "Сохранить ", чтобы завершить обновление конфигурации приложения. Обязательно замените заполнители собственными значениями, созданными ранее.
Переменная среды Значение SPRING_DATASOURCE_URL
jdbc:postgresql://<your-PostgreSQL-server-name>:5432/<your-PostgreSQL-database-name>
SPRING_DATASOURCE_USERNAME
<your-PostgreSQL-admin-user>
SPRING_DATASOURCE_PASSWORD
<your-PostgreSQL-admin-password>
3.5. Предоставление API RESTful
Чтобы предоставить API RESTful в идентификаторе Microsoft Entra, выполните следующие действия.
Войдите на портал Azure.
Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.
Найдите и выберите Microsoft Entra ID.
В разделе Управление выберите Регистрация приложений>Создать регистрацию.
Введите имя приложения в поле "Имя ", например Todo. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.
Для поддерживаемых типов учетных записей выберите учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) и личных учетных записей Майкрософт.
Выберите Зарегистрировать, чтобы создать приложение.
На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Вам потребуется настроить файл конфигурации YAML для этого проекта.
В разделе "Управление" выберите "Предоставить API", найдите URI идентификатора приложения в начале страницы и нажмите кнопку "Добавить".
На странице "Изменение идентификатора приложения" примите предлагаемый URI идентификатора приложения (
api://{client ID}
) или используйте понятное имя вместо идентификатора клиента, напримерapi://simple-todo
, а затем нажмите кнопку "Сохранить".В разделе "Управление" выберите "Предоставить область" API>"Добавить область", а затем введите следующие сведения:
- В поле "Имя области" введите ToDo.Read.
- Для того, кто может согласиться, выберите только администраторов.
- Для отображаемого имени согласия администратора введите данные ToDo.
- В разделе "Описание согласия администратора" введите "Разрешить пользователям, прошедшим проверку подлинности", считывать данные ToDo.
- Для состояния оставьте его включенным.
- Выберите Добавить область.
Повторите предыдущие шаги, чтобы добавить другие две области: ToDo.Write и ToDo.Delete.
3.6. Обновление конфигурации приложения
Чтобы обновить YAML-файл, чтобы использовать сведения о зарегистрированном приложении Microsoft Entra, выполните следующие действия, чтобы установить связь с приложением API RESTful:
Найдите файл src/main/resources/application.yml для
simple-todo-api
приложения. Обновите конфигурацию вspring.cloud.azure.active-directory
разделе, чтобы она соответствовала следующему примеру. Обязательно замените заполнители значениями, созданными ранее.spring: cloud: azure: active-directory: profile: tenant-id: <tenant> credential: client-id: <your-application-ID-of-ToDo> app-id-uri: <your-application-ID-URI-of-ToDo>
Примечание.
В маркерах версии 1.0 конфигурация требует идентификатор клиента API, а в маркерах версии 2.0 можно использовать идентификатор клиента или URI идентификатора приложения в запросе. Вы можете настроить оба способа правильного завершения проверки аудитории.
Допустимые значения
tenant-id
:common
,organizations
consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.Чтобы перестроить пример проекта, используйте следующую команду:
./mvnw clean package
4. Развертывание приложения в Azure Spring Apps
Теперь вы можете развернуть приложение в Azure Spring Apps.
Выполните следующие действия, чтобы развернуть с помощью подключаемого модуля Maven для Azure Spring Apps:
Перейдите к полному каталогу и выполните следующую команду, чтобы настроить приложение в Azure Spring Apps:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
В следующем списке описаны взаимодействия с командами:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
- Выберите подписку: выберите номер списка подписок созданного экземпляра Azure Spring Apps, который по умолчанию соответствует первой подписке в списке. Если вы используете номер по умолчанию, нажмите клавишу ВВОД напрямую.
- Используйте существующие Azure Spring Apps в Azure: нажмите y , чтобы использовать существующий экземпляр Azure Spring Apps.
- Выберите Azure Spring Apps для развертывания: выберите номер созданного экземпляра Azure Spring Apps. Если вы используете номер по умолчанию, нажмите клавишу ВВОД напрямую.
- Используйте существующее приложение в Azure Spring Apps <с именем> экземпляра: нажмите клавишу Y , чтобы использовать созданное приложение.
- Подтвердите сохранение всех указанных выше конфигураций: нажмите клавишу Y. Если нажать клавишу N, конфигурация не сохраняется в POM-файлах.
Чтобы развернуть приложение, используйте следующую команду:
./mvnw azure-spring-apps:deploy
В следующем списке описывается взаимодействие с командой:
- Вход OAuth2: необходимо авторизовать вход в Azure на основе протокола OAuth2.
После выполнения команды можно увидеть в следующих сообщениях журнала, что развертывание выполнено успешно:
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo--default-xxxxxxx-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:NONE
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://demo.<unique-identifier>.<region-name>.azurecontainerapps.io
5. Проверка приложения
Теперь вы можете получить доступ к API RESTful, чтобы узнать, работает ли он.
5.1. Запросите маркер доступа
API RESTful действуют как сервер ресурсов, защищенный идентификатором Microsoft Entra. Перед получением маркера доступа необходимо зарегистрировать другое приложение в идентификаторе Microsoft Entra и предоставить разрешения клиентскому приложению, которое называется ToDoWeb
.
Регистрация клиентского приложения
Чтобы зарегистрировать приложение в идентификаторе Microsoft Entra, которое используется для добавления разрешений для ToDo
приложения, выполните следующие действия.
Войдите на портал Azure.
Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.
Найдите и выберите Microsoft Entra ID.
В разделе Управление выберите Регистрация приложений>Создать регистрацию.
Введите имя приложения в поле "Имя ", например ToDoWeb. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.
Для поддерживаемых типов учетных записей используйте только учетные записи по умолчанию в этом каталоге организации.
Выберите Зарегистрировать, чтобы создать приложение.
На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Он необходим для получения маркера доступа.
Выберите Разрешения API>Добавить разрешение>Мои API.
ToDo
Выберите приложение, зарегистрированное ранее, и выберите разрешения ToDo.Read, ToDo.Write и ToDo.Delete. Выберите Добавить разрешения.Выберите "Предоставить согласие администратора" для имени> клиента, <чтобы предоставить согласие администратора для добавленных разрешений.
Добавление пользователя для доступа к API RESTful
Выполните следующие действия, чтобы создать пользователя-участника в клиенте Microsoft Entra. Затем пользователь может управлять данными ToDo
приложения с помощью API RESTful.
В разделе "Управление" выберите "Пользователи>" Создать пользователя.>
На странице "Создание нового пользователя" введите следующие сведения:
- Имя участника-пользователя: введите имя пользователя.
- Отображаемое имя: введите отображаемое имя пользователя.
- Пароль. Скопируйте автоматически созданный пароль, указанный в поле "Пароль".
Примечание.
Новые пользователи должны завершить проверку подлинности первого входа и обновить пароли, в противном случае при получении маркера доступа возникает
AADSTS50055: The password is expired
ошибка.Когда новый пользователь входит в систему, он получает запрос на обязательное действие. Они могут выбрать запрос позже , чтобы пропустить проверку.
Выберите Просмотр и создание , чтобы просмотреть выбранные элементы. Нажмите кнопку "Создать" , чтобы создать пользователя.
Обновление конфигурации OAuth2 для авторизации пользовательского интерфейса Swagger
Чтобы обновить конфигурацию OAuth2 для авторизации пользовательского интерфейса Swagger, выполните следующие действия. Затем вы можете авторизовать пользователей для получения маркеров доступа через ToDoWeb
приложение.
Откройте клиент Идентификатора Microsoft Entra в портал Azure и перейдите в зарегистрированное
ToDoWeb
приложение.В разделе "Управление" выберите "Проверка подлинности", выберите "Добавить платформу" и выберите одностраничные приложения.
Используйте формат
<your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html
в качестве URL-адреса перенаправления OAuth2 в поле URI перенаправления и нажмите кнопку "Настроить".
Получение маркера доступа
Выполните следующие действия, чтобы использовать метод потока кода авторизации OAuth 2.0 для получения маркера доступа с идентификатором Microsoft Entra ID, а затем получить доступ к API ToDo
RESTful приложения:
Откройте URL-адрес, предоставляемый приложением, а затем выберите "Авторизовать ", чтобы подготовить проверку подлинности OAuth2.
В окне "Доступные авторизации" введите идентификатор
ToDoWeb
клиента приложения в поле client_id, выберите все области для полей "Области", пропустить поле client_secret, а затем выберите "Авторизовать" для перенаправления на страницу входа Microsoft Entra.
Завершив вход с предыдущим пользователем, вы вернеесь в окно "Доступные авторизации".
5.2. Доступ к API RESTful
Чтобы получить доступ к API ToDo
RESTful приложения в пользовательском интерфейсе Swagger, выполните следующие действия.
Выберите API POST /api/simple-todo/lists , а затем нажмите кнопку "Попробовать". Введите следующий текст запроса и нажмите кнопку "Выполнить ", чтобы создать список toDo.
{ "name": "My List" }
После завершения выполнения отобразится следующий текст ответа:
{ "id": "<ID-of-the-ToDo-list>", "name": "My List", "description": null }
Выберите API POST /api/simple-todo/list/{listId}/items , а затем нажмите кнопку "Попробовать". В поле listId введите созданный ранее идентификатор списка ToDo, введите следующий текст запроса, а затем нажмите кнопку "Выполнить ", чтобы создать элемент ToDo.
{ "name": "My first ToDo item", "listId": "<ID-of-the-ToDo-list>", "state": "todo" }
Это действие возвращает следующий элемент ToDo:
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": null, "state": "todo", "dueDate": "2023-07-11T13:59:24.9033069+08:00", "completedDate": null }
Выберите API GET /api/simple-todo/lists , а затем выберите "Выполнить " для запроса списков ToDo. Это действие возвращает следующие списки ToDo:
[ { "id": "<ID-of-the-ToDo-list>", "name": "My List", "description": null } ]
Выберите API GET /api/simple-todo/list/{listId}/items , а затем нажмите кнопку "Попробовать". В поле listId введите созданный ранее идентификатор списка ToDo, а затем нажмите кнопку "Выполнить ", чтобы запросить элементы ToDo. Это действие возвращает следующий элемент ToDo:
[ { "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": null, "state": "todo", "dueDate": "2023-07-11T13:59:24.903307+08:00", "completedDate": null } ]
Выберите API PUT /api/simple-todo/lists/{listId}/items/{itemId}, а затем нажмите кнопку "Попробовать". В поле listId введите идентификатор списка ToDo. Для itemId введите идентификатор элемента ToDo, введите следующий текст запроса, а затем нажмите кнопку "Выполнить ", чтобы обновить элемент ToDo.
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": "Updated description.", "dueDate": "2023-07-11T13:59:24.903307+08:00", "state": "inprogress" }
Это действие возвращает следующий обновленный элемент ToDo:
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": "Updated description.", "state": "inprogress", "dueDate": "2023-07-11T05:59:24.903307Z", "completedDate": null }
Выберите API DELETE /api/simple-todo/lists/{listId}/items/{itemId}, а затем нажмите кнопку "Попробовать". В поле listId введите идентификатор списка ToDo. В поле itemId введите идентификатор элемента ToDo и выберите "Выполнить ", чтобы удалить элемент ToDo. Вы должны увидеть, что код ответа сервера —
204
это .
6. Очистка ресурсов
Вы можете удалить группу ресурсов Azure, которая содержит все связанные ресурсы.
Чтобы удалить всю группу ресурсов, включая только что созданную службу, выполните следующие действия.
Найдите группу ресурсов на портале Azure.
В меню навигации выберите группы ресурсов. Затем выберите имя группы ресурсов, например myresourcegroup.
На странице группы ресурсов щелкните Удалить. Введите имя группы ресурсов в текстовом поле, чтобы подтвердить удаление, например myresourcegroup. Затем нажмите кнопку Удалить.
Чтобы удалить всю группу ресурсов, включая только что созданную службу, выполните следующие действия.
Найдите группу ресурсов на портале Azure.
В меню навигации выберите группы ресурсов. Затем выберите имя группы ресурсов, например myresourcegroup.
На странице группы ресурсов щелкните Удалить. Введите имя группы ресурсов в текстовом поле, чтобы подтвердить удаление, например myresourcegroup. Затем нажмите кнопку Удалить.
7. Дальнейшие действия
Дополнительные сведения см. в следующих статьях:
- Примеры Azure Spring Apps.
- Spring в Azure
- Spring Cloud Azure