Samouczek: nawiązywanie połączenia z bazą danych PostgreSQL z poziomu usługi App Service w języku Java bez wpisów tajnych przy użyciu tożsamości zarządzanej
usługa aplikacja systemu Azure Service oferuje wysoce skalowalną, samonastosową usługę hostingu internetowego na platformie Azure. Zapewnia również tożsamość zarządzaną dla aplikacji, która jest rozwiązaniem kluczowym do zabezpieczania dostępu do usługi Azure Database for PostgreSQL i innych usług platformy Azure. Tożsamości zarządzane w usłudze App Service sprawiają, że aplikacja jest bezpieczniejsza, eliminując wpisy tajne z aplikacji, takie jak poświadczenia w zmiennych środowiskowych. Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz bazę danych PostgreSQL.
- Wdróż przykładową aplikację w usłudze aplikacja systemu Azure w usłudze Tomcat przy użyciu pakietu WAR.
- Skonfiguruj aplikację internetową Tomcat do korzystania z uwierzytelniania Firmy Microsoft Entra z bazą danych PostgreSQL.
- Nawiązywanie połączenia z bazą danych PostgreSQL przy użyciu tożsamości zarządzanej przy użyciu łącznika usługi.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
- Usługa Git
- Java JDK
- Maven
- Interfejs wiersza polecenia platformy Azure w wersji 2.45.0 lub nowszej.
Sklonuj przykładową aplikację i przygotuj repozytorium
Uruchom następujące polecenia w terminalu, aby sklonować przykładowe repozytorium i skonfigurować przykładowe środowisko aplikacji.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Tworzenie serwera usługi Azure Database for PostgreSQL
Wykonaj następujące kroki, aby utworzyć usługę Azure Database for Postgres w ramach subskrypcji. Aplikacja Tomcat łączy się z tą bazą danych i przechowuje swoje dane podczas działania, utrwalając stan aplikacji bez względu na to, gdzie jest uruchamiana aplikacja.
Zaloguj się do interfejsu wiersza polecenia platformy Azure i opcjonalnie ustaw subskrypcję, jeśli masz więcej niż jedno połączenie z poświadczeniami logowania.
az login az account set --subscription <subscription-ID>
Utwórz grupę zasobów platformy Azure i zanotuj jej nazwę.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATION
Tworzenie serwera usługi Azure Database for PostgreSQL. Serwer jest tworzony przy użyciu konta administratora, ale nie jest używany, ponieważ będziemy używać konta administratora Microsoft Entra do wykonywania zadań administracyjnych.
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
Utwórz bazę danych dla aplikacji.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Wdrażanie aplikacji w usłudze App Service
Wykonaj następujące kroki, aby utworzyć plik WAR i wdrożyć go w usłudze aplikacja systemu Azure Na serwerze Tomcat przy użyciu pakietu WAR.
Przykładowa aplikacja zawiera plik pom.xml , który może wygenerować plik WAR. Uruchom następujące polecenie, aby skompilować aplikację.
mvn clean package -f pom.xml
Utwórz zasób usługi aplikacja systemu Azure w systemie Linux przy użyciu serwera 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"
Wdróż pakiet WAR w usłudze App Service.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
Łączenie bazy danych Postgres z łącznością tożsamości
Następnie połącz bazę danych przy użyciu łącznika usługi.
Zainstaluj rozszerzenie bez hasła łącznika usługi dla interfejsu wiersza polecenia platformy Azure:
az extension add --name serviceconnector-passwordless --upgrade
Następnie połącz aplikację z bazą danych Postgres przy użyciu przypisanej przez system tożsamości zarządzanej przy użyciu łącznika usługi.
Aby nawiązać to połączenie, uruchom polecenie 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
To polecenie tworzy połączenie między aplikacją internetową a serwerem PostgreSQL i zarządza uwierzytelnianiem za pomocą tożsamości zarządzanej przypisanej przez system.
Następnie zaktualizuj ustawienia aplikacji i dodaj wtyczkę w parametry połączenia
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"'
Testowanie przykładowej aplikacji internetowej
Uruchom następujące polecenie, aby przetestować aplikację.
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
Czyszczenie zasobów
W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli te zasoby nie będą raczej potrzebne w przyszłości, usuń grupę zasobów, uruchamiając następujące polecenie w usłudze Cloud Shell:
az group delete --name myResourceGroup
Wykonanie tego polecenia może potrwać około minutę.
Następne kroki
Dowiedz się więcej na temat uruchamiania aplikacji w języku Java w usłudze App Service dla systemu Linux w przewodniku dla deweloperów.
Java in App Service Linux dev guide (Przewodnik dla deweloperów dotyczący języka Java w usłudze App Service dla systemu Linux)
Dowiedz się, jak zabezpieczyć aplikację przy użyciu domeny niestandardowej i certyfikatu.