Развертывание приложений Java JBoss EAP в Службе приложений Azure
В этой статье показано, как развернуть приложение JBoss EAP с помощью учетной записи Microsoft Entra в Службе приложений Azure.
В этой статье предполагается, что вы выполнили одну из следующих задач, используя только вкладку запуск локально, и теперь вы хотите развернуть её в Azure. Эти инструкции совпадают с инструкциями на вкладке Развертывание в Azure в следующих статьях:
- Активировать вход для приложений Java JBoss EAP с помощью Microsoft Entra ID
- Включить вход для приложений Java JBoss EAP с использованием MSAL4J с Azure Active Directory B2C
- Предоставить возможность приложениям Java JBoss EAP авторизовать пользователей и получить доступ к Microsoft Graph
- Обеспечение безопасности приложений JBoss EAP Java с использованием ролей и запросов ролей
- Безопасные приложения Java JBoss EAP с помощью групп и утверждений групп
Необходимые условия
подключаемый модуль Maven для приложений службы приложений Azure
Если Maven не является вашим предпочтительным средством разработки, ознакомьтесь со следующими руководствами, которые используют другие инструменты:
Настройка подключаемого модуля Maven
Процесс развертывания в Службе приложений Azure автоматически использует учетные данные Azure из Azure CLI. Если Azure CLI не установлен локально, плагин Maven выполняет аутентификацию с помощью OAuth или входа устройства. Дополнительные сведения см. в разделе аутентификации с помощью подключаемых модулей Maven.
Чтобы настроить подключаемый модуль, выполните следующие действия.
Выполните команду Maven, показанную рядом с настройкой развертывания. Эта команда помогает настроить операционную систему службы приложений, версию Java и версию Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
Для создания конфигурации запусканажмите клавишу Y, а затем нажмите клавишу ВВОД .
Чтобы Определить значение для ОС, нажмите клавишу 2 для Linux, а затем нажмите ВВОД.
Чтобы Определить значение для javaVersion, нажмите клавишу 2 для Java 11, а затем нажмите клавишу ВВОД.
Чтобы определить значение дляwebContainer, нажмите 1 для JBosseap7, а затем нажмите Enter.
Чтобы
Определить значение для ценовой категории , нажмите клавишуВВОД , чтобы выбрать уровень по умолчаниюP1v3. Для подтверждениянажмите клавишу Y, а затем нажмите клавишу ВВОД.
В следующем примере показаны выходные данные процесса развертывания:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[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. Некоторые распространенные конфигурации перечислены в следующей таблице:
Свойство | Обязательно | Описание | Версия |
---|---|---|---|
schemaVersion |
ложный | Версия схемы конфигурации. Поддерживаемые значения: v1 и v2 . |
1.5.2 |
subscriptionId |
ложный | Идентификатор подписки. | 0.1.0+ |
resourceGroup |
истинный | Группа ресурсов Azure для приложения. | 0.1.0+ |
appName |
правда | Имя приложения. | 0.1.0+ |
region |
ложный | Регион, в котором размещается приложение. Значение по умолчанию — centralus . Для получения информации о допустимых регионах см. Поддерживаемые регионы. |
0.1.0+ |
pricingTier |
ложный | Ценовая категория приложения. Значение по умолчанию — P1v2 для рабочей нагрузки. Рекомендуемое минимальное значение для разработки и тестирования Java — B2 . Дополнительные сведения см. в ценах на службу приложений |
0.1.0+ |
runtime |
ложный | Конфигурация среды выполнения. Дополнительные сведения см. в разделе сведений о конфигурации. | 0.1.0+ |
deployment |
ложный | Конфигурация развертывания. Дополнительные сведения см. в разделе Сведения о конфигурации. | 0.1.0+ |
Полный список конфигураций см. в справочной документации по подключаемым модулям. Все плагины Maven для Azure разделяют общий набор конфигураций. Сведения об этих конфигурациях см. в разделе Common Configurations. См. раздел Служба приложений Azure: подробности конфигурациидля конфигураций, относящихся к Azure App Service.
Пожалуйста, не забудьте сохранить значения 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 ID
Так как URI перенаправления изменяется в развернутом приложении в Службе приложений Azure, необходимо также изменить URI перенаправления в регистрации приложения Идентификатора Microsoft Entra. Чтобы внести это изменение, выполните следующие действия.
Перейдите на платформу идентификации Microsoft для разработчиков на страницу регистрации приложений.
Используйте поле поиска для поиска регистрации приложения, например
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
Развертывание завершено.
Дополнительные сведения
- Библиотека аутентификации Microsoft (MSAL) для Java
- платформа идентификации Майкрософт
- Быстрый старт: Регистрация приложения на платформе идентификации Microsoft
- Понимание опыта согласия приложений с идентификатором Microsoft Entra ID
- Общие сведения о согласии пользователей и администраторов
- примеры кода MSAL