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


Краткое руководство. Развертывание приложения 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.

Снимок экрана: пользовательский интерфейс Swagger, в котором показан документ API.

На следующей схеме показана архитектура системы:

Схема, демонстрирующая архитектуру веб-приложения Spring.

В этой статье описаны следующие варианты создания ресурсов и их развертывания в 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. Предварительные требования

2. Подготовка проекта Spring

Чтобы развернуть приложение API RESTful, сначала необходимо подготовить проект Spring для локального запуска.

Выполните следующие действия, чтобы клонировать и запустить приложение локально:

  1. Используйте следующую команду, чтобы клонировать пример проекта из GitHub:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Если вы хотите локально запустить приложение, выполните действия, описанные в разделах "Предоставление 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, выполните следующие действия.

  1. Выберите "Создать ресурс" в углу портал Azure.

  2. Выберите Compute>Azure Spring Apps.

  3. Заполните форму Основные данные , указав следующую информацию:

    Параметр Предлагаемое значение Description
    Подписка Имя подписки. Подписка Azure, которую вы хотите использовать для сервера. Если у вас есть несколько подписок, выберите ту, через которую вы предпочитаете оплачивать этот ресурс.
    Группа ресурсов myresourcegroup Новое имя группы ресурсов или уже имеющееся из подписки.
    Имя myasa Уникальное имя, определяющее службу Azure Spring Apps. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы. Первым символом в имени службы должна быть буква, а последним — буква или цифра.
    План Функции корпоративного уровня План ценообразования, определяющий ресурс и затраты, связанные с экземпляром.
    Регион Регион, ближайший к вашим пользователям. Ближайшее к пользователям расположение.
    Избыточность между зонами не выбрано Параметр создания службы Azure Spring Apps в зоне доступности Azure. Эта функция в настоящее время не поддерживается во всех регионах.
    План IP-адресов программного обеспечения Оплата по мере использования План ценообразования, который позволяет платить по мере использования Azure Spring Apps.
    Terms Выбрано Флажок соглашения, связанный с предложением Marketplace. Установите этот флажок.
    Развертывание примера проекта не выбрано Параметр для использования встроенного примера приложения.
  4. Выберите "Рецензирование" и " Создать ", чтобы просмотреть выбранные варианты. Затем выберите "Создать ", чтобы подготовить экземпляр Azure Spring Apps.

  5. На панели инструментов щелкните значок Уведомления (колокольчик), чтобы отслеживать процесс развертывания. После завершения развертывания можно выбрать "Закрепить на панели мониторинга", которая создает плитку для этой службы на панели мониторинга портал Azure в качестве ярлыка на странице обзора службы.

    Снимок экрана: портал Azure, на котором показана область уведомлений для создания Azure Spring Apps.

  6. Выберите "Перейти к ресурсу", чтобы перейти на страницу обзора Azure Spring Apps.

3.3. Подготовка экземпляра PostgreSQL

Чтобы создать сервер База данных Azure для PostgreSQL, выполните следующие действия.

  1. Перейдите к портал Azure и нажмите кнопку "Создать ресурс".

  2. Выберите Базы данных>База данных Azure для PostgreSQL.

  3. Выберите вариант развертывания Гибкий сервер.

    Снимок экрана: портал Azure, на котором показана страница выбора параметра развертывания База данных Azure для PostgreSQL.

  4. Заполните вкладку "Основные сведения" следующими сведениями :

    • Имя сервера: my-demo-pgsql
    • Регион: восточная часть США
    • Версия PostgreSQL: 14
    • Тип рабочей нагрузки: разработка
    • Включение высокой доступности: не выбрано
    • Метод проверки подлинности: только проверка подлинности PostgreSQL
    • Имя пользователя администратора: myadmin
    • Пароль и подтверждение пароля: введите пароль.
  5. Чтобы настроить вкладку "Сеть" , используйте следующие сведения:

    • Метод подключения: общедоступный доступ (разрешенные IP-адреса)
    • Разрешить общедоступный доступ из любой службы Azure в Azure на этот сервер: выбрано:
  6. Выберите "Проверка и создание ", чтобы просмотреть выбранные элементы, и нажмите кнопку "Создать ", чтобы подготовить сервер. Эта операция может занять несколько минут.

  7. Перейдите на сервер PostgreSQL в портал Azure. На странице обзора найдите значение имени сервера и запишите его для последующего использования. Необходимо настроить переменные среды для приложения в Azure Spring Apps.

  8. Выберите базы данных из меню навигации, чтобы создать базу данных, например todo.

    Снимок экрана: портал Azure, на котором показана страница

3.4. Подключение экземпляра приложения к экземпляру PostgreSQL

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

  1. Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.

  2. В меню навигации откройте приложения и нажмите кнопку "Создать приложение".

  3. На странице "Создание приложения" введите имя приложения simple-todo-api и выберите артефакты Java в качестве типа развертывания.

  4. Нажмите кнопку "Создать ", чтобы завершить создание приложения, а затем выберите приложение для просмотра сведений.

  5. Перейдите к приложению, созданному в портал Azure. На странице "Обзор" выберите "Назначить конечную точку", чтобы предоставить общедоступную конечную точку для приложения. Сохраните URL-адрес для доступа к приложению после развертывания.

  6. Выберите соединитель службы в области навигации, а затем нажмите кнопку "Создать ", чтобы создать подключение к службе.

    Снимок экрана: портал Azure, на котором показана страница соединителя службы планов предприятия с выделенной кнопкой

  7. Заполните вкладку "Основные сведения" следующими сведениями :

    • Тип службы: гибкий сервер базы данных для PostgreSQL
    • Имя подключения: заполняется автоматически созданное имя, которое также можно изменить.
    • Подписка. Выберите нужную подписку.
    • Гибкий сервер PostgreSQL: my-demo-pgsql
    • База данных PostgreSQL: выберите созданную базу данных.
    • Тип клиента: SpringBoot

    Снимок экрана: портал Azure, на котором показана вкладка

  8. Настройте вкладку "Далее: проверка подлинности " со следующими сведениями:

    • Выберите тип проверки подлинности, который вы хотите использовать между вычислительной службой и целевой службой.: выберите строку подключения.
    • Продолжить с...: выбор учетных данных базы данных
    • Имя пользователя: myadmin
    • Пароль. Введите пароль.

    Снимок экрана: портал Azure, на котором показана вкладка

  9. Выберите Далее: сеть. Используйте параметр по умолчанию Настройка правил брандмауэра для включения доступа к целевой службе.

  10. Нажмите кнопку "Далее" и "Создать ", чтобы просмотреть выбранные элементы, а затем нажмите кнопку "Создать ", чтобы создать подключение.

3.5. Предоставление API RESTful

Чтобы предоставить API RESTful в идентификаторе Microsoft Entra, выполните следующие действия.

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

  2. Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.

  3. Найдите и выберите Microsoft Entra ID.

  4. В разделе Управление выберите Регистрация приложений>Создать регистрацию.

  5. Введите имя приложения в поле "Имя ", например Todo. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.

  6. Для поддерживаемых типов учетных записей выберите учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) и личных учетных записей Майкрософт.

  7. Выберите Зарегистрировать, чтобы создать приложение.

  8. На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Вам потребуется настроить файл конфигурации YAML для этого проекта.

  9. В разделе "Управление" выберите "Предоставить API", найдите URI идентификатора приложения в начале страницы и нажмите кнопку "Добавить".

  10. На странице "Изменение идентификатора приложения" примите предлагаемый URI идентификатора приложения (api://{client ID}) или используйте понятное имя вместо идентификатора клиента, например api://simple-todo, а затем нажмите кнопку "Сохранить".

  11. В разделе "Управление" выберите "Предоставить область" API>"Добавить область", а затем введите следующие сведения:

    • В поле "Имя области" введите ToDo.Read.
    • Для того, кто может согласиться, выберите только администраторов.
    • Для отображаемого имени согласия администратора введите данные ToDo.
    • В разделе "Описание согласия администратора" введите "Разрешить пользователям, прошедшим проверку подлинности", считывать данные ToDo.
    • Для состояния оставьте его включенным.
    • Выберите Добавить область.
  12. Повторите предыдущие шаги, чтобы добавить другие две области: ToDo.Write и ToDo.Delete.

    Снимок экрана: портал Azure, на котором показана страница предоставления API приложения RESTful API.

3.6. Обновление конфигурации приложения

Чтобы обновить YAML-файл, чтобы использовать сведения о зарегистрированном приложении Microsoft Entra, выполните следующие действия, чтобы установить связь с приложением API RESTful:

  1. Найдите файл 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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

  2. Чтобы перестроить пример проекта, используйте следующую команду:

    ./mvnw clean package
    

4. Развертывание приложения в Azure Spring Apps

Теперь вы можете развернуть приложение в Azure Spring Apps.

Выполните следующие действия, чтобы развернуть с помощью подключаемого модуля Maven для Azure Spring Apps:

  1. Перейдите к полному каталогу и выполните следующую команду, чтобы настроить приложение в 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-файлах.
  2. Чтобы развернуть приложение, используйте следующую команду:

    ./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 приложения, выполните следующие действия.

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

  2. Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.

  3. Найдите и выберите Microsoft Entra ID.

  4. В разделе Управление выберите Регистрация приложений>Создать регистрацию.

  5. Введите имя приложения в поле "Имя ", например ToDoWeb. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.

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

  7. Выберите Зарегистрировать, чтобы создать приложение.

  8. На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Он необходим для получения маркера доступа.

  9. Выберите Разрешения API>Добавить разрешение>Мои API. ToDo Выберите приложение, зарегистрированное ранее, и выберите разрешения ToDo.Read, ToDo.Write и ToDo.Delete. Выберите Добавить разрешения.

  10. Выберите "Предоставить согласие администратора" для имени> клиента, <чтобы предоставить согласие администратора для добавленных разрешений.

    Снимок экрана: портал Azure с разрешениями API веб-приложения.

Добавление пользователя для доступа к API RESTful

Выполните следующие действия, чтобы создать пользователя-участника в клиенте Microsoft Entra. Затем пользователь может управлять данными ToDo приложения с помощью API RESTful.

  1. В разделе "Управление" выберите "Пользователи>" Создать пользователя.>

  2. На странице "Создание нового пользователя" введите следующие сведения:

    • Имя участника-пользователя: введите имя пользователя.
    • Отображаемое имя: введите отображаемое имя пользователя.
    • Пароль. Скопируйте автоматически созданный пароль, указанный в поле "Пароль".

    Примечание.

    Новые пользователи должны завершить проверку подлинности первого входа и обновить пароли, в противном случае при получении маркера доступа возникает AADSTS50055: The password is expired ошибка.

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

  3. Выберите Просмотр и создание , чтобы просмотреть выбранные элементы. Нажмите кнопку "Создать" , чтобы создать пользователя.

Обновление конфигурации OAuth2 для авторизации пользовательского интерфейса Swagger

Чтобы обновить конфигурацию OAuth2 для авторизации пользовательского интерфейса Swagger, выполните следующие действия. Затем вы можете авторизовать пользователей для получения маркеров доступа через ToDoWeb приложение.

  1. Откройте клиент Идентификатора Microsoft Entra в портал Azure и перейдите в зарегистрированное ToDoWeb приложение.

  2. В разделе "Управление" выберите "Проверка подлинности", выберите "Добавить платформу" и выберите одностраничные приложения.

  3. Используйте формат <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html в качестве URL-адреса перенаправления OAuth2 в поле URI перенаправления и нажмите кнопку "Настроить".

    Снимок экрана: портал Azure, на котором показана страница проверки подлинности для идентификатора Microsoft Entra.

2. Подготовка проекта Spring

Чтобы развернуть приложение API RESTful, сначала необходимо подготовить проект Spring для локального запуска.

Выполните следующие действия, чтобы клонировать и запустить приложение локально:

  1. Используйте следующую команду, чтобы клонировать пример проекта из GitHub:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Если вы хотите локально запустить приложение, выполните действия, описанные в разделах "Предоставление 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

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

  1. Выберите " Создать ресурс " в углу портала.

  2. Выберите Compute>Azure Spring Apps.

  3. Заполните форму Основные сведения. Используйте следующую таблицу в качестве руководства для завершения формы. Рекомендуемое значение плана"Стандартный" и "Стандартный" (предварительная версия).

    Параметр Предлагаемое значение Description
    Подписка Имя подписки. Подписка Azure, которую вы хотите использовать для сервера. Если у вас есть несколько подписок, выберите ту, через которую вы предпочитаете оплачивать этот ресурс.
    Группа ресурсов myresourcegroup Новое имя группы ресурсов или уже имеющееся из подписки.
    Имя myasa Уникальное имя, определяющее службу Azure Spring Apps. Его длина должна быть от 4 до 32 знаков. Имя может содержать только строчные буквы, цифры и дефисы. Первым символом в имени службы должна быть буква, а последним — буква или цифра.
    План Стандартное потребление и выделенное (предварительная версия) План ценообразования определяет ресурсы и затраты, связанные с вашим экземпляром.
    Регион Регион, ближайший к вашим пользователям. Ближайшее к пользователям расположение.
    Среда приложений-контейнеров myenvironment Параметр выбора экземпляра среды "Приложения контейнеров" для совместного использования одной виртуальной сети с другими службами и ресурсами.

    Используйте следующую таблицу в качестве руководства по созданию среды приложений контейнеров:

    Параметр Предлагаемое значение Description
    Имя среды myenvironment Уникальное имя, определяющее службу среды приложений контейнеров Azure.
    План Потребление План ценообразования определяет ресурсы и затраты, связанные с вашим экземпляром.
    Избыточность между зонами Выключено Параметр создания службы "Среда приложений контейнеров" в зоне доступности Azure.
  4. Выберите "Рецензирование" и " Создать ", чтобы просмотреть выбранные варианты. Затем выберите "Создать ", чтобы подготовить экземпляр Azure Spring Apps.

  5. На панели инструментов щелкните значок Уведомления (колокольчик), чтобы отслеживать процесс развертывания. После завершения развертывания можно выбрать "Закрепить на панели мониторинга", которая создает плитку для этой службы на панели мониторинга портал Azure в качестве ярлыка на странице обзора службы.

  6. Выберите "Перейти к ресурсу", чтобы открыть страницу обзора службы.

    Снимок экрана: портал Azure, на котором показана страница обзора с открытой страницей уведомлений.

Внимание

Профиль рабочей нагрузки потребления имеет модель выставления счетов по мере использования без начальной стоимости. Плата за выделенный профиль рабочей нагрузки взимается на основе подготовленных ресурсов. Дополнительные сведения см. в разделе "Профили рабочей нагрузки" в службах контейнеров Azure и ценах на Azure Spring Apps.

3.3. Подготовка экземпляра PostgreSQL

Чтобы создать сервер База данных Azure для PostgreSQL, выполните следующие действия.

  1. Перейдите к портал Azure и нажмите кнопку "Создать ресурс".

  2. Выберите Базы данных>База данных Azure для PostgreSQL.

  3. Выберите вариант развертывания Гибкий сервер.

    Снимок экрана: портал Azure, на котором показана страница выбора параметра развертывания База данных Azure для PostgreSQL.

  4. Заполните вкладку "Основные сведения" следующими сведениями :

    • Имя сервера: my-demo-pgsql
    • Регион: восточная часть США
    • Версия PostgreSQL: 14
    • Тип рабочей нагрузки: разработка
    • Включение высокой доступности: не выбрано
    • Метод проверки подлинности: только проверка подлинности PostgreSQL
    • Имя пользователя администратора: myadmin
    • Пароль и подтверждение пароля: введите пароль.
  5. Чтобы настроить вкладку "Сеть" , используйте следующие сведения:

    • Метод подключения: общедоступный доступ (разрешенные IP-адреса)
    • Разрешить общедоступный доступ из любой службы Azure в Azure на этот сервер: выбрано:
  6. Выберите "Проверка и создание ", чтобы просмотреть выбранные элементы, и нажмите кнопку "Создать ", чтобы подготовить сервер. Эта операция может занять несколько минут.

  7. Перейдите на сервер PostgreSQL в портал Azure. На странице обзора найдите значение имени сервера и запишите его для последующего использования. Необходимо настроить переменные среды для приложения в Azure Spring Apps.

  8. Выберите базы данных из меню навигации, чтобы создать базу данных, например todo.

    Снимок экрана: портал Azure, на котором показана страница

3.4. Подключение экземпляра приложения к экземпляру PostgreSQL

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

  1. Перейдите к экземпляру своей службы Azure Spring Apps на портале Azure.

  2. В меню навигации откройте приложения и нажмите кнопку "Создать приложение".

  3. На странице "Создание приложения" введите имя приложения simple-todo-api и выберите артефакты Java в качестве типа развертывания.

  4. Нажмите кнопку "Создать ", чтобы завершить создание приложения и выбрать приложение для просмотра сведений.

  5. Перейдите к приложению, созданному в портал Azure. На странице "Обзор" выберите "Назначить конечную точку", чтобы предоставить общедоступную конечную точку для приложения. Сохраните URL-адрес для доступа к приложению после развертывания.

  6. Перейдите к созданному приложению, разверните узел "Параметры " и выберите "Конфигурация " в меню навигации, а затем выберите переменные среды, чтобы задать переменные среды.

  7. Добавьте следующие переменные среды для подключения 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>

    Снимок экрана: портал Azure, на которой показана вкладка переменных среды со всеми значениями подключения PostgreSQL.

3.5. Предоставление API RESTful

Чтобы предоставить API RESTful в идентификаторе Microsoft Entra, выполните следующие действия.

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

  2. Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.

  3. Найдите и выберите Microsoft Entra ID.

  4. В разделе Управление выберите Регистрация приложений>Создать регистрацию.

  5. Введите имя приложения в поле "Имя ", например Todo. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.

  6. Для поддерживаемых типов учетных записей выберите учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) и личных учетных записей Майкрософт.

  7. Выберите Зарегистрировать, чтобы создать приложение.

  8. На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Вам потребуется настроить файл конфигурации YAML для этого проекта.

  9. В разделе "Управление" выберите "Предоставить API", найдите URI идентификатора приложения в начале страницы и нажмите кнопку "Добавить".

  10. На странице "Изменение идентификатора приложения" примите предлагаемый URI идентификатора приложения (api://{client ID}) или используйте понятное имя вместо идентификатора клиента, например api://simple-todo, а затем нажмите кнопку "Сохранить".

  11. В разделе "Управление" выберите "Предоставить область" API>"Добавить область", а затем введите следующие сведения:

    • В поле "Имя области" введите ToDo.Read.
    • Для того, кто может согласиться, выберите только администраторов.
    • Для отображаемого имени согласия администратора введите данные ToDo.
    • В разделе "Описание согласия администратора" введите "Разрешить пользователям, прошедшим проверку подлинности", считывать данные ToDo.
    • Для состояния оставьте его включенным.
    • Выберите Добавить область.
  12. Повторите предыдущие шаги, чтобы добавить другие две области: ToDo.Write и ToDo.Delete.

    Снимок экрана: портал Azure, на котором показана страница предоставления API приложения RESTful API.

3.6. Обновление конфигурации приложения

Чтобы обновить YAML-файл, чтобы использовать сведения о зарегистрированном приложении Microsoft Entra, выполните следующие действия, чтобы установить связь с приложением API RESTful:

  1. Найдите файл 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, organizationsconsumersили идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе "Использована неправильная конечная точка (личные и учетные записи организации) в разделе "Ошибка" AADSTS50020 . Учетная запись пользователя от поставщика удостоверений не существует в клиенте. Сведения о преобразовании приложения с одним клиентом см. в разделе "Преобразование однотенантного приложения в мультитенантный" в идентификатор Microsoft Entra.

  2. Чтобы перестроить пример проекта, используйте следующую команду:

    ./mvnw clean package
    

4. Развертывание приложения в Azure Spring Apps

Теперь вы можете развернуть приложение в Azure Spring Apps.

Выполните следующие действия, чтобы развернуть с помощью подключаемого модуля Maven для Azure Spring Apps:

  1. Перейдите к полному каталогу и выполните следующую команду, чтобы настроить приложение в 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-файлах.
  2. Чтобы развернуть приложение, используйте следующую команду:

    ./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 приложения, выполните следующие действия.

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

  2. Если у вас есть доступ к нескольким клиентам, используйте фильтр каталогов и подписок ( ) для выбора клиента, в котором требуется зарегистрировать приложение.

  3. Найдите и выберите Microsoft Entra ID.

  4. В разделе Управление выберите Регистрация приложений>Создать регистрацию.

  5. Введите имя приложения в поле "Имя ", например ToDoWeb. Пользователи приложения могут видеть это имя. Вы можете изменить его позже.

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

  7. Выберите Зарегистрировать, чтобы создать приложение.

  8. На странице приложения Обзор найдите идентификатор приложения (клиента) и запишите его, чтобы использовать позже. Он необходим для получения маркера доступа.

  9. Выберите Разрешения API>Добавить разрешение>Мои API. ToDo Выберите приложение, зарегистрированное ранее, и выберите разрешения ToDo.Read, ToDo.Write и ToDo.Delete. Выберите Добавить разрешения.

  10. Выберите "Предоставить согласие администратора" для имени> клиента, <чтобы предоставить согласие администратора для добавленных разрешений.

    Снимок экрана: портал Azure с разрешениями API веб-приложения.

Добавление пользователя для доступа к API RESTful

Выполните следующие действия, чтобы создать пользователя-участника в клиенте Microsoft Entra. Затем пользователь может управлять данными ToDo приложения с помощью API RESTful.

  1. В разделе "Управление" выберите "Пользователи>" Создать пользователя.>

  2. На странице "Создание нового пользователя" введите следующие сведения:

    • Имя участника-пользователя: введите имя пользователя.
    • Отображаемое имя: введите отображаемое имя пользователя.
    • Пароль. Скопируйте автоматически созданный пароль, указанный в поле "Пароль".

    Примечание.

    Новые пользователи должны завершить проверку подлинности первого входа и обновить пароли, в противном случае при получении маркера доступа возникает AADSTS50055: The password is expired ошибка.

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

  3. Выберите Просмотр и создание , чтобы просмотреть выбранные элементы. Нажмите кнопку "Создать" , чтобы создать пользователя.

Обновление конфигурации OAuth2 для авторизации пользовательского интерфейса Swagger

Чтобы обновить конфигурацию OAuth2 для авторизации пользовательского интерфейса Swagger, выполните следующие действия. Затем вы можете авторизовать пользователей для получения маркеров доступа через ToDoWeb приложение.

  1. Откройте клиент Идентификатора Microsoft Entra в портал Azure и перейдите в зарегистрированное ToDoWeb приложение.

  2. В разделе "Управление" выберите "Проверка подлинности", выберите "Добавить платформу" и выберите одностраничные приложения.

  3. Используйте формат <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html в качестве URL-адреса перенаправления OAuth2 в поле URI перенаправления и нажмите кнопку "Настроить".

    Снимок экрана: портал Azure, на котором показана страница проверки подлинности для идентификатора Microsoft Entra.

Получение маркера доступа

Выполните следующие действия, чтобы использовать метод потока кода авторизации OAuth 2.0 для получения маркера доступа с идентификатором Microsoft Entra ID, а затем получить доступ к API ToDo RESTful приложения:

  1. Откройте URL-адрес, предоставляемый приложением, а затем выберите "Авторизовать ", чтобы подготовить проверку подлинности OAuth2.

  2. В окне "Доступные авторизации" введите идентификатор ToDoWeb клиента приложения в поле client_id, выберите все области для полей "Области", пропустить поле client_secret, а затем выберите "Авторизовать" для перенаправления на страницу входа Microsoft Entra.

Завершив вход с предыдущим пользователем, вы вернеесь в окно "Доступные авторизации".

5.2. Доступ к API RESTful

Чтобы получить доступ к API ToDo RESTful приложения в пользовательском интерфейсе Swagger, выполните следующие действия.

  1. Выберите API POST /api/simple-todo/lists , а затем нажмите кнопку "Попробовать". Введите следующий текст запроса и нажмите кнопку "Выполнить ", чтобы создать список toDo.

    {
      "name": "My List"
    }
    

    После завершения выполнения отобразится следующий текст ответа:

    {
      "id": "<ID-of-the-ToDo-list>",
      "name": "My List",
      "description": null
    }
    
  2. Выберите 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
    }
    
  3. Выберите API GET /api/simple-todo/lists , а затем выберите "Выполнить " для запроса списков ToDo. Это действие возвращает следующие списки ToDo:

    [
      {
        "id": "<ID-of-the-ToDo-list>",
        "name": "My List",
        "description": null
      }
    ]
    
  4. Выберите 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
      }
    ]
    
  5. Выберите 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
    }
    
  6. Выберите API DELETE /api/simple-todo/lists/{listId}/items/{itemId}, а затем нажмите кнопку "Попробовать". В поле listId введите идентификатор списка ToDo. В поле itemId введите идентификатор элемента ToDo и выберите "Выполнить ", чтобы удалить элемент ToDo. Вы должны увидеть, что код ответа сервера — 204это .

6. Очистка ресурсов

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

Чтобы удалить всю группу ресурсов, включая только что созданную службу, выполните следующие действия.

  1. Найдите группу ресурсов на портале Azure.

  2. В меню навигации выберите группы ресурсов. Затем выберите имя группы ресурсов, например myresourcegroup.

  3. На странице группы ресурсов щелкните Удалить. Введите имя группы ресурсов в текстовом поле, чтобы подтвердить удаление, например myresourcegroup. Затем нажмите кнопку Удалить.

Чтобы удалить всю группу ресурсов, включая только что созданную службу, выполните следующие действия.

  1. Найдите группу ресурсов на портале Azure.

  2. В меню навигации выберите группы ресурсов. Затем выберите имя группы ресурсов, например myresourcegroup.

  3. На странице группы ресурсов щелкните Удалить. Введите имя группы ресурсов в текстовом поле, чтобы подтвердить удаление, например myresourcegroup. Затем нажмите кнопку Удалить.

7. Дальнейшие действия

Дополнительные сведения см. в следующих статьях: