Развертывание приложений Java Tomcat в службе приложение Azure
В этой статье показано, как развернуть приложение Tomcat с помощью учетной записи Microsoft Entra в службе приложение Azure.
В этой статье предполагается, что вы выполнили одну из следующих статей с помощью только вкладки "Запуск локально " и теперь хотите развернуть в Azure. Эти инструкции совпадают с инструкциями на вкладке "Развертывание в Azure " в следующих статьях:
- Включение входа для приложений Java Tomcat с помощью идентификатора Microsoft Entra
- Включение входа для приложений Java Tomcat с помощью MSAL4J с Azure Active Directory B2C
- Включение приложений Java Tomcat для входа пользователей и доступа к Microsoft Graph
- Защита приложений Java Tomcat с помощью ролей и утверждений ролей
- Защита приложений Java Tomcat с помощью групп и утверждений групп
Необходимые компоненты
Подключаемый модуль Maven для приложений службы приложение Azure
Если Maven не является вашим предпочтительным средством разработки, ознакомьтесь со следующими руководствами, которые используют другие инструменты:
Настройка подключаемого модуля Maven
При развертывании в службе приложение Azure развертывание автоматически использует учетные данные Azure из Azure CLI. Если Azure CLI не установлен локально, подключаемый модуль Maven проходит проверку подлинности с помощью OAuth или входа устройства. Дополнительные сведения см. в статье о проверке подлинности с помощью подключаемых модулей Maven.
Чтобы настроить подключаемый модуль, выполните следующие действия.
Выполните следующую команду, чтобы настроить развертывание. Эта команда помогает настроить операционную систему службы приложение Azure, версию Java и версию Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
Для создания конфигурации запуска нажмите клавишу Y, а затем нажмите клавишу ВВОД.
Для определения значения ос нажмите клавишу 1 для Windows или 2 для Linux, а затем нажмите клавишу ВВОД.
Для определения значения javaVersion нажмите клавишу 2 для Java 11, а затем нажмите клавишу ВВОД.
Для определения значения для webContainer нажмите клавишу 4 для Tomcat 9.0, а затем нажмите клавишу ВВОД.
Чтобы определить значение для ценообразования, нажмите клавишу ВВОД, чтобы выбрать уровень P1v2 по умолчанию.
Для подтверждения нажмите клавишу 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.
Соответствующая часть файла 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 |
false | Идентификатор подписки. |
resourceGroup |
true | Группа ресурсов Azure для приложения. |
appName |
true | Имя приложения. |
region |
false | Регион, в котором размещается приложение. Значение по умолчанию — centralus . Допустимые регионы см. в разделе "Поддерживаемые регионы". |
pricingTier |
false | Ценовая категория приложения. Значение по умолчанию — P1v2 для рабочей рабочей нагрузки. Рекомендуемое минимальное значение для разработки и тестирования Java.B2 Дополнительные сведения см. в Служба приложений ценах. |
runtime |
false | Конфигурация среды выполнения. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. |
deployment |
false | Конфигурация развертывания. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. |
Полный список конфигураций см. в справочной документации по подключаемым модулям. Все подключаемые модули Azure Maven используют общий набор конфигураций. Сведения об этих конфигурациях см. в разделе "Общие конфигурации". Сведения о конфигурациях, относящихся к службе приложение Azure, см. в приложении Azure: сведения о конфигурации.
Не забудьте сохранить в стороне appName
и resourceGroup
значения для последующего использования.
Подготовка приложения к развертыванию
При развертывании приложения в Служба приложений URL-адрес перенаправления изменяется на URL-адрес перенаправления развернутого экземпляра приложения. Чтобы изменить эти параметры в файле свойств, выполните следующие действия.
Перейдите к файлу 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
После сохранения этого файла используйте следующую команду, чтобы перестроить приложение:
mvn clean package
Обновление регистрации приложения идентификатора Microsoft Entra
Так как URI перенаправления изменяется в развернутом приложении в службе приложение Azure, необходимо также изменить URI перенаправления в регистрации приложения Идентификатора Microsoft Entra. Чтобы внести это изменение, выполните следующие действия:
Перейдите на страницу Регистрация приложений Платформы удостоверений Майкрософт для разработчиков.
Используйте поле поиска для поиска регистрации приложения, например
java-servlet-webapp-authentication
.Откройте регистрацию приложения, выбрав его имя.
Выберите Проверка подлинности в меню.
В разделе URI веб-перенаправления - выберите "Добавить URI".
Заполните универсальный код ресурса (URI) приложения, добавляя
/auth/redirect
напримерhttps://<your-app-name>.azurewebsites.net/auth/redirect
.Выберите Сохранить.
Развертывание приложения
Теперь вы готовы развернуть приложение в службе приложение 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 и использовать его в коде:
Используйте следующие команды для создания экземпляра 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
Используйте следующие команды, чтобы добавить значение секрета
aad.secret
в хранилище ключей в качестве нового секрета:az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
Теперь необходимо предоставить приложению доступ к хранилищу ключей. Чтобы выполнить эту задачу, сначала создайте новое удостоверение для приложения с помощью следующих команд:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
Используйте следующие команды, чтобы предоставить это удостоверение
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
Используйте следующую команду, чтобы создать параметр приложения в приложении, использующего ссылку на хранилище ключей, к секрету в хранилище ключей. Этот параметр делает значение секрета доступным для приложения в качестве переменной среды.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
Используйте следующий код, чтобы загрузить это значение из переменных среды. В файле \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java в строке 41 измените текущую инструкцию на следующую строку:
public static final String SECRET = System.getenv("AADSECRET");
Теперь ключ и значение можно удалить
aad.secret
из файла authentication.properties .Перестройте код с помощью следующей команды:
mvn clean package
Повторно разверните приложение с помощью следующей команды:
mvn package azure-webapp:deploy
Развертывание завершено.
Дополнительные сведения
- Библиотека проверки подлинности Майкрософт (MSAL) для Java
- платформа удостоверений Майкрософт (идентификатор Microsoft Entra для разработчиков)
- Краткое описание: регистрация приложения на платформе Microsoft Identity
- Общие сведения о согласии приложений с идентификатором Microsoft Entra ID
- Understand user and admin consent (Получение согласия пользователя и администратора)
- Примеры кода MSAL