Compartilhar via


Implantar aplicativos Java Tomcat no Serviço de Aplicativo do Azure

Este artigo mostra como implantar um aplicativo Tomcat com entrada pela conta do Microsoft Entra no Serviço de Aplicativo do Azure.

Este artigo pressupõe que você concluiu um dos seguintes artigos usando apenas a guia Executar localmente e agora deseja implantar no Azure. Estas instruções são as mesmas da 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 plugin Maven será autenticado com o OAuth ou com as credenciais 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. Este 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 Y e pressione Enter.

  3. Em Definir valor para SO, pressione 1 para Windows ou 2 para Linux e pressione Enter.

  4. Em Define value for javaVersion, pressione 2 para Java 11 e pressione Enter.

  5. Em Define value for webContainer, pressione 4 para Tomcat 9.0 e pressione Enter.

  6. Em Define value for pricingTier, pressione Enter para selecionar a camada P1v2 padrão.

  7. Em Confirmar, pressione Y e 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 escolhas, o plug-in adiciona o elemento de plug-in e as configurações necessárias ao arquivo de 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 exemplo a seguir:

<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 Obrigatório Descrição
subscriptionId false A ID da assinatura.
resourceGroup true O grupo de recursos do Azure para seu aplicativo.
appName true O nome do seu aplicativo.
region false A região na qual hospedar seu aplicativo. O valor padrão é centralus. Para regiões válidas, consulte Regiões com suporte.
pricingTier false A camada de preços 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 Java é B2. Para obter mais informações, consulte Preços do Serviço de Aplicativo.
runtime false A configuração do ambiente de tempo de execução. Para mais informações, confira Informações de configuração.
deployment false Configuração de implantação. Para mais informações, confira Informações de configuração.

Para obter a lista completa de configurações, veja 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 obter configurações específicas do Serviço de Aplicativo do Azure, consulte Aplicativo do Azure: Detalhes de Configuração.

Certifique-se de guardar os appName valores e resourceGroup para uso posterior.

Preparar o aplicativo para implantação

Quando você implanta seu aplicativo no Serviço de Aplicativo, sua URL de redirecionamento muda para a URL de redirecionamento da instância do aplicativo implantado. 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 do nome de domínio do app.homePage aplicativo implantado, conforme mostrado no exemplo a seguir. Por exemplo, se você escolheu example-domain o nome do aplicativo na etapa anterior, agora deve usar https://example-domain.azurewebsites.net para o app.homePage valor. Certifique-se de que 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 recriar seu aplicativo:

    mvn clean package
    

Atualizar o registro do aplicativo Microsoft Entra ID

Como o URI de redirecionamento muda para seu aplicativo implantado para o 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 de 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 de comando.

  5. Na seção Redirecionar URIs da Web - , selecione Adicionar URI.

  6. Preencha o URI do seu aplicativo, anexando /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 comando a seguir 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

Após a conclusão da implantação, seu aplicativo estará pronto em http://<your-app-name>.azurewebsites.net/. Abra a URL com seu navegador da Web local, onde você deve ver a página inicial do msal4j-servlet-auth aplicativo.

Remover valores secretos

O arquivo authentication.properties do aplicativo atualmente contém o valor do segredo do cliente no aad.secret parâmetro. Não é uma boa prática manter esse valor neste arquivo. Você também pode estar correndo um risco se confirmá-lo em um repositório Git.

Como uma etapa extra de segurança, você pode armazenar esse valor no Cofre de Chaves do Azure e usar Referências do Cofre de Chaves para disponibilizá-lo em seu aplicativo.

Use as seguintes etapas para mover o valor de para o Cofre de aad.secret Chaves e usá-lo em seu código:

  1. Use os seguintes comandos para criar uma instância do Cofre de Chaves do Azure:

    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 do seu cofre de aad.secret chaves 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 dar ao seu aplicativo acesso ao seu cofre de chaves. Para executar 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 dar essa identidade get e list permissão sobre os segredos no Cofre de Chaves:

    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 comando a seguir para criar uma configuração de aplicativo em seu aplicativo que use uma referência do cofre de chaves para o segredo no cofre de chaves. Essa configuração torna o valor do segredo disponível 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 e o aad.secret valor do arquivo authentication.properties .

  8. Recrie 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 foi concluída.

Mais informações