Implantar aplicativos Java Tomcat no Serviço de Aplicativo do Azure
Este artigo mostra como implantar um aplicativo Tomcat com a entrada da conta do Microsoft Entra no Serviço de Aplicativo do Azure.
Este artigo pressupõe que você concluiu um dos artigos a seguir usando apenas a guia Executar localmente e agora deseja implantar no Azure. Essas instruções são as mesmas daquelas descritas na guia Implantar no Azure nestes artigos:
- Habilitar a entrada para aplicativos Java Tomcat por meio do Microsoft Entra ID
- Ativar o login para aplicativos Java Tomcat usando MSAL4J com o Azure Active Directory B2C
- Habilitar aplicativos Java Tomcat para permitir que usuários se conectem e acessem o Microsoft Graph
- Proteger aplicativos Java Tomcat usando funções e declarações de função
- Proteger aplicativos Java Tomcat usando grupos e declarações de grupo
Pré-requisitos
Plug-in do Maven para aplicativos do Serviço de Aplicativo do Azure
Se o Maven não for sua ferramenta de desenvolvimento preferencial, confira os seguintes tutoriais semelhantes que usam outras ferramentas:
Configurar o plug-in do Maven
Quando você implanta no Serviço de Aplicativo do Azure, a implantação usa automaticamente suas credenciais do Azure da CLI do Azure. Se a CLI do Azure não estiver instalada localmente, o plug-in do Maven será autenticado com o OAuth ou a entrada do dispositivo. Para obter mais informações, confira autenticação com plug-ins do Maven.
Use as seguintes etapas para configurar o plug-in:
Execute o comando a seguir para configurar a implantação. Esse comando ajuda você a configurar o sistema operacional do Serviço de Aplicativo do Azure, a versão java e a versão do Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
Para criar nova configuração de execução, pressione Ye, em seguida, pressione Enter.
Para Definir valor para o sistema operacional, pressione 1 para Windows ou 2 para Linux e pressione Enter.
Em Definir valor para javaVersion, pressione 2 para Java 11 e depois pressione Enter.
Em Definir valor para webContainer, pressione 4 para Tomcat 9.0 e pressione Enter.
Para Definir valor para pricingTier, pressione Enter para selecionar a camada P1v2 padrão.
Para Confirmar, pressione Y e depois pressione Enter.
O exemplo a seguir mostra a saída do processo de implantação:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------
Depois de confirmar suas opções, o plug-in adiciona o elemento de plug-in necessário e as configurações ao arquivo pom.xml do projeto para configurar seu aplicativo para ser executado no Serviço de Aplicativo do Azure.
A parte relevante do arquivo pom.xml deve ser semelhante ao seguinte exemplo:
<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>
Você pode modificar as configurações do Serviço de Aplicativo diretamente em seu pom.xml. Algumas configurações comuns são listadas na tabela a seguir:
Propriedade | Necessário | Descrição |
---|---|---|
subscriptionId |
falso | A ID da assinatura. |
resourceGroup |
verdadeiro | O grupo de recursos do Azure para seu aplicativo. |
appName |
verdadeiro | O nome do seu aplicativo. |
region |
falso | A região na qual hospedar seu aplicativo. O valor padrão é centralus . Para regiões válidas, consulte Regiões com suporte. |
pricingTier |
falso | A faixa de preço do seu aplicativo. O valor padrão é P1v2 para uma carga de trabalho de produção. O valor mínimo recomendado para desenvolvimento e teste de Java é B2 . Para saber mais, consulte Preço do Serviço de Aplicativo. |
runtime |
falso | A configuração do ambiente de runtime. Para mais informações, confira Informações de configuração. |
deployment |
falso | A configuração de implantação. Para mais informações, confira Informações de configuração. |
Para obter a lista completa de configurações, consulte a documentação de referência do plug-in. Todos os plug-ins do Azure Maven compartilham um conjunto comum de configurações. Para essas configurações, consulte Configurações Comuns. Para configurações específicas do Serviço de Aplicativo do Azure, consulte aplicativo do Azure: Detalhes de Configuração.
Salve os valores appName
e resourceGroup
para uso posterior.
Preparar o aplicativo para implantação
Quando você implanta seu aplicativo no Serviço de Aplicativo, a URL de redirecionamento muda para a URL de redirecionamento da instância do aplicativo implantada. Use as seguintes etapas para alterar essas configurações no arquivo de propriedades:
Navegue até o arquivo authentication.properties do aplicativo e altere o valor de
app.homePage
para o nome de domínio do aplicativo implantado, conforme mostrado no exemplo a seguir. Por exemplo, se você escolheuexample-domain
para o nome do aplicativo na etapa anterior, agora deve usarhttps://example-domain.azurewebsites.net
para o valorapp.homePage
. Verifique se você também alterou o protocolo dehttp
parahttps
.# 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
Depois de salvar esse arquivo, use o seguinte comando para recompilar seu aplicativo:
mvn clean package
Atualizar o registro do aplicativo Microsoft Entra ID
Como o URI de redirecionamento é alterado para o aplicativo implantado no Serviço de Aplicativo do Azure, você também precisa alterar o URI de redirecionamento no registro do aplicativo Microsoft Entra ID. Use as seguintes etapas para fazer essa alteração:
Navegue até a página Registros de aplicativo da plataforma de identidade da Microsoft para desenvolvedores.
Use a caixa de pesquisa para pesquisar o registro do aplicativo , por exemplo,
java-servlet-webapp-authentication
.Abra o registro do aplicativo selecionando seu nome.
Selecione Autenticação no menu.
Na seção Web - URIs de redirecionamento, selecione Adicionar URI.
Preencha o URI do seu aplicativo, acrescentando
/auth/redirect
– por exemplo,https://<your-app-name>.azurewebsites.net/auth/redirect
.Selecione Salvar.
Implantar o aplicativo
Agora você está pronto para implantar seu aplicativo no Serviço de Aplicativo do Azure. Use o seguinte comando para verificar se você está conectado ao seu ambiente do Azure para executar a implantação:
az login
Com toda a configuração pronta em seu arquivo pom.xml, agora você pode usar o seguinte comando para implantar seu aplicativo Java no Azure:
mvn package azure-webapp:deploy
Depois que a implantação for concluída, seu aplicativo estará pronto em http://<your-app-name>.azurewebsites.net/
. Abra a URL com seu navegador da Web local, onde você deverá ver a página inicial do aplicativo msal4j-servlet-auth
.
Remover valores secretos
O arquivo authentication.properties do aplicativo atualmente contém o valor do segredo do cliente no parâmetro aad.secret
. Não é uma boa prática manter esse valor neste arquivo. Você também pode estar correndo risco se confirmar esse valor em um repositório Git.
Como uma etapa extra de segurança , você pode armazenar esse valor no Azure Key Vault e usar Referências do cofre de referências para disponibilizá-lo em seu aplicativo.
Use as seguintes etapas para mover o valor de aad.secret
para o Key Vault e usá-lo em seu código:
Use os seguintes comandos para criar uma instância do 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
Use os seguintes comandos para adicionar o valor secreto de
aad.secret
ao key vault como um novo segredo:az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
Agora você precisa conceder ao seu aplicativo acesso ao cofre de chaves. Para fazer essa tarefa, primeiro crie uma nova identidade para seu aplicativo usando os seguintes comandos:
export WEB_APP_NAME=<your-web-app-name> az webapp identity assign \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME
Use os seguintes comandos para conceder a esta identidade
get
elist
permissão aos segredos do seu 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
Use o seguinte comando para criar uma configuração de aplicação em seu app que usa uma referência ao segredo no seu key vault. Essa configuração disponibiliza o valor do segredo para seu aplicativo como uma variável de ambiente.
az webapp config appsettings set \ --resource-group $RESOURCE_GROUP \ --name $WEB_APP_NAME \ --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
Use o código a seguir para carregar esse valor das variáveis de ambiente. No arquivo \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java, na linha 41, altere a instrução atual para a seguinte linha:
public static final String SECRET = System.getenv("AADSECRET");
Agora você pode excluir a chave
aad.secret
e o valor do arquivo authentication.properties.Recompile o código usando o seguinte comando:
mvn clean package
Reimplante o aplicativo usando o seguinte comando:
mvn package azure-webapp:deploy
Sua implantação agora está concluída.
Mais informações
- MSAL (Biblioteca de Autenticação da Microsoft) para Java
- plataforma de identidade da Microsoft (ID do Microsoft Entra para desenvolvedores)
- Início Rápido : Registrar um aplicativo na plataforma de identidade da Microsoft
- Entendendo as experiências de consentimento do aplicativo Microsoft Entra ID
- Entender o consentimento do usuário e do administrador
- exemplos de código MSAL