Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Служба приложений Azure предоставляет в Azure высоко масштабируемую службу веб-хостинга, автоматически устанавливающую исправления. Он также предоставляет для вашего приложения управляемую учетную запись, которая представляет собой готовое решение для защиты доступа к Azure Database for PostgreSQL и другим службам Azure. Управляемые идентификаторы в Службе приложений делают ваше приложение более безопасным, устраняя секреты из приложения, такие как учетные данные в переменных среды. В этом руководстве описано следующее:
- Создайте базу данных PostgreSQL.
- Разверните образец приложения на Azure App Service на Tomcat с использованием упаковки WAR.
- Настройте веб-приложение Tomcat для использования проверки подлинности Microsoft Entra с postgre База данных SQL.
- Подключитесь к базе данных PostgreSQL с помощью управляемого удостоверения через Коннектор службы.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Предварительные условия
Клонирование примера приложения и подготовка репозитория
Выполните следующие команды в терминале, чтобы клонировать репозиторий и настроить среду примера приложения.
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 в Tomcat с помощью упаковки WAR.
Пример приложения содержит файл pom.xml , который может создать WAR-файл. Выполните сборку приложения с помощью приведенной ниже команды.
mvn clean package -f pom.xmlСоздайте ресурс службы приложение Azure в 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 в группе ресурсов. Если эти ресурсы вам не понадобятся в будущем, вы можете удалить группу ресурсов, выполнив следующую команду в Cloud Shell:
az group delete --name myResourceGroup
Выполнение этой команды может занять минуту.
Следующие шаги
Дополнительные сведения о запуске приложений Java в Службе приложений Azure на Linux см. в руководстве разработчика.
Узнайте, как защитить приложение с помощью личного домена и сертификата.