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


Развертывание приложений Java Tomcat в Службе приложений Azure

В этой статье показано, как развернуть приложение Tomcat с помощью учетной записи Microsoft Entra в Службе приложений Azure.

В этой статье предполагается, что вы выполнили одну из следующих задач, используя только вкладку запуск локально, и теперь планируете развернуть в Azure. Эти инструкции такие же, как и на вкладке Развертывание на Azure в следующих статьях:

Необходимые условия

Настройка подключаемого модуля Maven

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

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

  1. Выполните следующую команду, чтобы настроить развертывание. Эта команда помогает настроить операционную систему Службы приложений Azure, версию Java и версию Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
    
  2. Для создания конфигурации запусканажмите Y, а затем нажмите ВВОД.

  3. Чтобы определить значение для ОС, нажмите 1 для Windows или 2 для Linux, затем нажмите ВВОД.

  4. Чтобы Определить значение для javaVersion, нажмите клавишу 2 для Java 11, а затем нажмите клавишу ВВОД.

  5. Чтобы определить значение дляwebContainer, нажмите 4 для Tomcat 9.0, затем нажмите Ввод.

  6. Чтобы Определить значение для ценовых, нажмите клавишу ВВОД, чтобы выбрать уровень P1v2 по умолчанию.

  7. Для подтверждениянажмите клавишу Y, затем нажмите клавишу ВВОД.

В следующем примере показаны выходные данные процесса развертывания:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

После того как вы подтвердите свой выбор, плагин добавляет необходимый элемент и настройки плагина в файл pom.xml вашего проекта, чтобы настроить приложение для запуска в Azure App Service.

Соответствующая часть файла pom.xml должна выглядеть примерно так:

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Конфигурации службы приложений можно изменить непосредственно в pom.xml. Некоторые распространенные конфигурации перечислены в следующей таблице:

Свойство Обязательно Описание
subscriptionId ложный Идентификатор подписки.
resourceGroup истинный Группа ресурсов Azure для приложения.
appName истинный Имя приложения.
region ложный Регион, в котором размещается приложение. Значение по умолчанию — centralus. Для валидных регионов см. в разделе Поддерживаемые регионы.
pricingTier ложный Ценовая категория приложения. Значение по умолчанию — P1v2 для рабочей нагрузки. Рекомендуемое минимальное значение для разработки и тестирования Java — B2. Дополнительные сведения см. в ценах на службу приложений.
runtime ложный Конфигурация среды выполнения. Для получения дополнительной информации см. Сведения о конфигурации.
deployment ложный Конфигурация развертывания. Дополнительные сведения см. в разделе Сведения о конфигурации.

Полный список конфигураций см. в справочной документации по подключаемым модулям. Все плагины Azure Maven используют общий набор конфигураций. Сведения об этих конфигурациях см. в разделе Common Configurations. Для получения деталей настройки, специфичных для службы приложений Azure, см. в разделе Azure приложение: детали конфигурации.

Не забудьте сохранить значения appName и resourceGroup для последующего использования.

Подготовка приложения к развертыванию

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

  1. Перейдите к файлу authentication.properties приложения и измените значение app.homePage на доменное имя развернутого приложения, как показано в следующем примере. Например, если вы выбрали example-domain для имени приложения на предыдущем шаге, теперь необходимо использовать https://example-domain.azurewebsites.net для значения app.homePage. Убедитесь, что вы также изменили протокол с http на https.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. После сохранения этого файла используйте следующую команду, чтобы перестроить приложение:

    mvn clean package
    

Обновите регистрацию приложения Microsoft Entra ID

Поскольку URI перенаправления изменяется для вашего развернутого приложения на Службе приложений Azure, необходимо также изменить URI перенаправления в настройках регистрации приложения Microsoft Entra ID. Чтобы внести это изменение, выполните следующие действия.

  1. Перейдите на платформу идентификации Microsoft для разработчиков, страницу регистрации приложений .

  2. Используйте поле поиска для поиска регистрации приложения, например java-servlet-webapp-authentication.

  3. Откройте регистрацию приложения, выбрав его имя.

  4. В меню выберите проверки подлинности.

  5. В разделе веб- - URI перенаправления выберите Добавить URI.

  6. Заполните универсальный код ресурса (URI) приложения, добавив /auth/redirect , например, https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Выберите Сохранить.

Развертывание приложения

Теперь вы готовы развернуть приложение в Службе приложений Azure. Используйте следующую команду, чтобы убедиться, что вы вошли в среду Azure для выполнения развертывания:

az login

Все конфигурации подготовлены в вашем файле pom.xml, теперь вы можете использовать следующую команду для развертывания вашего приложения Java в Azure:

mvn package azure-webapp:deploy

После завершения развертывания ваше приложение готово на http://<your-app-name>.azurewebsites.net/. Откройте URL-адрес в локальном веб-браузере, где должна появиться начальная страница приложения msal4j-servlet-auth.

Удалите секретные значения

Файл authentication.properties приложения в настоящее время содержит значение секрета клиента в параметре aad.secret. Не рекомендуется хранить это значение в этом файле. Вы также можете рисковать, если вы зафиксируйте его в репозитории Git.

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

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

  1. Используйте следующие команды для создания экземпляра Azure Key Vault:

    export RESOURCE_GROUP=<your-resource-group-name>
    export KEY_VAULT=<your-key-vault-name>
    az keyvault create \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT
    
  2. Используйте следующие команды, чтобы добавить значение секрета aad.secret в хранилище ключей в качестве нового секрета:

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Теперь необходимо предоставить приложению доступ к хранилищу ключей. Чтобы выполнить эту задачу, сначала создайте новое удостоверение для приложения с помощью следующих команд:

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Используйте следующие команды, чтобы предоставить этому удостоверению get и list разрешение на секреты в Key Vault:

    export IDENTITY=$(az webapp identity show \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --query principalId \
        --output tsv)
    az keyvault set-policy \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT \
        --secret-permissions get list \
        --object-id $IDENTITY
    
  5. Используйте следующую команду, чтобы создать настройку в вашем приложении, использующем ссылку на хранилище ключей для доступа к секрету в вашем хранилище ключей. Этот параметр делает значение секрета доступным для приложения в качестве переменной среды.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Используйте следующий код, чтобы загрузить это значение из переменных среды. В файле \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java в строке 41 измените текущую инструкцию на следующую строку:

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Теперь вы можете удалить ключ и значение aad.secret из файла authentication.properties.

  8. Перестройте код с помощью следующей команды:

    mvn clean package
    
  9. Повторно разверните приложение с помощью следующей команды:

    mvn package azure-webapp:deploy
    

Развертывание завершено.

Дополнительные сведения