Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Serviço de Aplicações do Azure oferece um serviço de alojamento web altamente escalável e auto-patchável em Azure. Também fornece uma identidade gerida para a sua aplicação, que é uma solução pronta a usar para garantir o acesso a Base de Dados do Azure para PostgreSQL e outros serviços da Azure. As identidades gerenciadas no Serviço de Aplicativo tornam seu aplicativo mais seguro, eliminando segredos de seu aplicativo, como credenciais nas variáveis de ambiente. Neste tutorial, irá aprender a:
- Crie um banco de dados PostgreSQL.
- Implemente a aplicação de exemplo para o Serviço de Aplicações do Azure no Tomcat usando a embalagem WAR.
- Configure uma aplicação web Tomcat para usar autenticação Microsoft Entra com a base de dados PostgreSQL.
- Conecte-se ao Banco de Dados PostgreSQL com Identidade Gerenciada usando o Service Connector.
Se não tiver uma conta Azure, crie uma conta free antes de começar.
Pré-requisitos
- Git
- Java Kit de Desenvolvimento (JDK)
- Maven
- CLI do Azure versão 2.45.0 ou superior.
Clone o aplicativo de exemplo e prepare o repositório
Execute os seguintes comandos em seu terminal para clonar o repositório de exemplo e configurar o ambiente do aplicativo de exemplo.
git clone https://github.com/Azure-Samples/Passwordless-Connections-for-Java-Apps
cd Passwordless-Connections-for-Java-Apps/Tomcat/
Criar uma Base de Dados do Azure para PostgreSQL
Siga estes passos para criar uma Base de Dados Azure para Postgres na sua subscrição. A aplicação Tomcat liga-se a esta base de dados e armazena os seus dados durante a execução, mantendo o estado da aplicação independentemente do local onde a execute.
Inicie sessão na CLI do Azure e, opcionalmente, defina a sua subscrição se tiver mais do que uma ligada às suas credenciais de login.
az login az account set --subscription <subscription-ID>Crie um Azure Resource Group, indicando o nome do grupo de recursos.
export RESOURCE_GROUP=<resource-group-name> export LOCATION=eastus az group create --name $RESOURCE_GROUP --location $LOCATIONCrie um servidor de base de dados Azure para PostgreSQL. O servidor é criado com uma conta de administrador, mas não é usada porque vamos usar a conta de administrador da Microsoft Entra para realizar tarefas administrativas.
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_v3Crie um banco de dados para o aplicativo.
export DATABASE_NAME=checklist az postgres flexible-server db create \ --resource-group $RESOURCE_GROUP \ --server-name $POSTGRESQL_HOST \ --database-name $DATABASE_NAME
Implantar o aplicativo no Serviço de Aplicativo
Siga estes passos para construir um ficheiro WAR e implementá-lo no Serviço de Aplicações do Azure no Tomcat usando uma embalagem WAR.
O aplicativo de exemplo contém um arquivo pom.xml que pode gerar o arquivo WAR. Para construir a aplicação, execute o seguinte comando.
mvn clean package -f pom.xmlCrie um recurso Serviço de Aplicações do Azure no Linux usando 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"Implante o pacote WAR no Serviço de Aplicações.
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $APPSERVICE_NAME \ --src-path target/app.war \ --type war
Conecte o banco de dados Postgres com conectividade de identidade
Em seguida, conecte o banco de dados usando o Service Connector.
Instale a extensão sem palavra-passe Service Connector para a CLI do Azure:
az extension add --name serviceconnector-passwordless --upgrade
Em seguida, conecte seu aplicativo a um banco de dados Postgres com uma identidade gerenciada atribuída ao sistema usando o Service Connector.
Para fazer essa conexão, execute o comando 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
Este comando cria uma conexão entre seu aplicativo Web e seu servidor PostgreSQL e gerencia a autenticação por meio de uma identidade gerenciada atribuída ao sistema.
De seguida, atualize as Definições da App e adicione o plugin na cadeia de ligação
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"'
Testar a aplicação Web de exemplo
Teste a aplicação executando o seguinte comando.
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
Limpar recursos
Nos passos anteriores, criou recursos do Azure num grupo de recursos. Se não espera precisar destes recursos no futuro, elimine o grupo de recursos executando o seguinte comando na Cloud Shell:
az group delete --name myResourceGroup
Esse comando pode levar um minuto para ser executado.
Próximos passos
Saiba mais sobre como executar aplicações Java em Serviço de Aplicações no Linux no guia para programadores.
Saiba como proteger seu aplicativo com um domínio e um certificado personalizados.