Compartilhar via


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:

Pré-requisitos

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:

  1. 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
    
  2. Para criar nova configuração de execução, pressione Ye, em seguida, pressione Enter.

  3. Para Definir valor para o sistema operacional, pressione 1 para Windows ou 2 para Linux e pressione Enter.

  4. Em Definir valor para javaVersion, pressione 2 para Java 11 e depois pressione Enter.

  5. Em Definir valor para webContainer, pressione 4 para Tomcat 9.0 e pressione Enter.

  6. Para Definir valor para pricingTier, pressione Enter para selecionar a camada P1v2 padrão.

  7. 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:

  1. 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ê escolheu example-domain para o nome do aplicativo na etapa anterior, agora deve usar https://example-domain.azurewebsites.net para o valor app.homePage. Verifique se você também alterou o protocolo de http para https.

    # 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
    
  2. 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:

  1. Navegue até a página Registros de aplicativo da plataforma de identidade da Microsoft para desenvolvedores.

  2. Use a caixa de pesquisa para pesquisar o registro do aplicativo , por exemplo, java-servlet-webapp-authentication.

  3. Abra o registro do aplicativo selecionando seu nome.

  4. Selecione Autenticação no menu.

  5. Na seção Web - URIs de redirecionamento, selecione Adicionar URI.

  6. Preencha o URI do seu aplicativo, acrescentando /auth/redirect – por exemplo, https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. 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:

  1. 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
    
  2. 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>"
    
  3. 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
    
  4. Use os seguintes comandos para conceder a esta identidade get e list 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
    
  5. 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)'
    
  6. 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");
    
  7. Agora você pode excluir a chave aad.secret e o valor do arquivo authentication.properties.

  8. Recompile o código usando o seguinte comando:

    mvn clean package
    
  9. Reimplante o aplicativo usando o seguinte comando:

    mvn package azure-webapp:deploy
    

Sua implantação agora está concluída.

Mais informações