Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure App Service предоставляет высокомасштабируемую службу самостоятельного размещения веб-сайтов в Azure. Он также предоставляет управляемое удостоверение для приложения, которое является решением для защиты доступа к Azure Database for PostgreSQL и другим службам Azure. Управляемые идентификаторы в Службе приложений делают ваше приложение более безопасным, устраняя секреты из приложения, такие как учетные данные в переменных среды. В этом руководстве описано следующее:
- Создайте базу данных PostgreSQL.
- Разверните пример приложения на сервисе приложений Azure в среде Tomcat посредством использования упаковки WAR.
- Настройте веб-приложение Tomcat для использования проверки подлинности Microsoft Entra с базой данных PostgreSQL.
- Подключитесь к базе данных PostgreSQL с помощью управляемого удостоверения через Коннектор службы.
Если у вас нет учетной записи Azure, создайте учетную запись free перед началом работы.
Предварительные условия
- Git
- Java комплект средств разработки (JDK)
- Maven
- Azure CLI версии 2.45.0 или более поздней.
Клонирование примера приложения и подготовка репозитория
Выполните следующие команды в терминале, чтобы клонировать репозиторий и настроить среду примера приложения.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Создать базу данных Azure для PostgreSQL
Выполните следующие действия, чтобы создать базу данных Azure для Postgres в подписке. Приложение Tomcat подключается к этой базе данных и сохраняет данные при выполнении, сохраняя состояние приложения независимо от того, где выполняется приложение.
Войдите в Azure CLI и при необходимости задайте подписку, если у вас несколько подключений к учетным данным входа.
az login az account set --subscription <subscription-ID>Создайте группу ресурсов Azure, отметив имя группы ресурсов.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATIONСоздайте базу данных Azure для сервера PostgreSQL. Сервер создается с учетной записью администратора, но он не используется, так как мы будем использовать учетную запись администратора Microsoft Entra для выполнения административных задач.
export POSTGRESQL_ADMIN_USER=azureuser # PostgreSQL admin access rights won't be used because Azure AD authentication is leveraged to administer the database. export POSTGRESQL_ADMIN_PASSWORD=<admin-password> export POSTGRESQL_HOST=<postgresql-host-name> # Create a PostgreSQL server. az postgres flexible-server create \ --resource-group $RESOURCE_GROUP \ --name $POSTGRESQL_HOST \ --location $LOCATION \ --admin-user $POSTGRESQL_ADMIN_USER \ --admin-password $POSTGRESQL_ADMIN_PASSWORD \ --public-access 0.0.0.0 \ --sku-name Standard_D2s_v3Создайте базу данных для приложения.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Развертывание приложения в Службе приложений
Выполните следующие действия, чтобы создать WAR-файл и развернуть его для Azure App Service в Tomcat с помощью упаковки WAR.
Пример приложения содержит файл pom.xml , который может создать WAR-файл. Чтобы создать приложение, выполните следующую команду.
mvn clean package -f pom.xmlСоздайте ресурс Azure App Service в Linux с помощью Tomcat 9.0.
export APPSERVICE_PLAN=<app-service-plan> export APPSERVICE_NAME=<app-service-name> # Create an App Service plan az appservice plan create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_PLAN \ --location $LOCATION \ --sku B1 \ --is-linux # Create an App Service resource. az webapp create \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --plan $APPSERVICE_PLAN \ --runtime "TOMCAT:10.0-java11"Разверните пакет WAR в Службе приложений.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
Подключение базы данных Postgres с интеграцией управления идентификацией
Затем подключите базу данных с помощью Service Connector.
Установите расширение Azure CLI для работы с коннектором службы без паролей.
az extension add --name serviceconnector-passwordless --upgrade
Затем подключите приложение к базе данных Postgres с помощью управляющего удостоверения, которое назначается системой, используя Service Connector.
Чтобы сделать это подключение, выполните команду az webapp connection create .
az webapp connection create postgres-flexible \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--target-resource-group $RESOURCE_GROUP \
--server $POSTGRESQL_HOST \
--database $DATABASE_NAME \
--system-identity \
--client-type java
Эта команда создает подключение между веб-приложением и сервером PostgreSQL и управляет проверкой подлинности с помощью управляемого удостоверения, назначаемого системой.
Затем обновите параметры приложения и добавьте подключаемый модуль в строку подключения
export AZURE_POSTGRESQL_CONNECTIONSTRING=$(\
az webapp config appsettings list \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
| jq -c -r '.[] \
| select ( .name == "AZURE_POSTGRESQL_CONNECTIONSTRING" ) \
| .value')
az webapp config appsettings set \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--settings 'CATALINA_OPTS=-DdbUrl="'"${AZURE_POSTGRESQL_CONNECTIONSTRING}"'&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin"'
Тестирование примера веб-приложения
Протестируйте приложение, выполнив следующую команду.
export WEBAPP_URL=$(az webapp show \
--resource-group $RESOURCE_GROUP \
--name $APPSERVICE_NAME \
--query defaultHostName \
--output tsv)
# Create a list
curl -X POST -H "Content-Type: application/json" -d '{"name": "list1","date": "2022-03-21T00:00:00","description": "Sample checklist"}' https://${WEBAPP_URL}/checklist
# Create few items on the list 1
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 1"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 2"}' https://${WEBAPP_URL}/checklist/1/item
curl -X POST -H "Content-Type: application/json" -d '{"description": "item 3"}' https://${WEBAPP_URL}/checklist/1/item
# Get all lists
curl https://${WEBAPP_URL}/checklist
# Get list 1
curl https://${WEBAPP_URL}/checklist/1
Очистка ресурсов
На предыдущих этапах вы создали ресурсы Azure в группе ресурсов Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите группу ресурсов, выполнив следующую команду в Cloud Shell:
az group delete --name myResourceGroup
Выполнение этой команды может занять минуту.
Следующие шаги
Дополнительные сведения о запуске приложений Java на App Service on Linux см. в руководстве разработчика.
Узнайте, как защитить приложение с помощью личного домена и сертификата.