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


Развертывание приложений Java JBoss EAP в службе приложение Azure

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

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

Необходимые компоненты

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

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

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

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

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

  3. Для определения значения ос нажмите клавишу 2 для Linux, а затем нажмите клавишу ВВОД.

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

  5. Для определения значения для webContainer нажмите клавишу 1 для JBosseap7, а затем нажмите клавишу ВВОД.

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

  7. Для подтверждения нажмите клавишу 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 false Версия схемы конфигурации. Поддерживаемые значения: v1 и v2. 1.5.2
subscriptionId false Идентификатор подписки. Версия 0.1.0 и выше
resourceGroup true Группа ресурсов Azure для приложения. Версия 0.1.0 и выше
appName true Имя приложения. Версия 0.1.0 и выше
region false Регион, в котором размещается приложение. Значение по умолчанию — centralus. Допустимые регионы см. в разделе "Поддерживаемые регионы". Версия 0.1.0 и выше
pricingTier false Ценовая категория приложения. Значение по умолчанию — P1v2 для рабочей нагрузки. Рекомендуемое минимальное значение для разработки и тестирования Java.B2 Дополнительные сведения см. на странице цен на службу приложений. Версия 0.1.0 и выше
runtime false Конфигурация среды выполнения. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. Версия 0.1.0 и выше
deployment false Конфигурация развертывания. Дополнительные сведения см. в разделе Дополнительные сведения о конфигурации. Версия 0.1.0 и выше

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

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

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

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

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

    # 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

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

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

  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
    

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

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