Implantar aplicativos Java JBoss EAP no Serviço de Aplicativo do Azure

Este artigo mostra como implantar um aplicativo JBoss EAP com entrada pela conta 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 do separador Implantar no Azure nestes artigos:

Pré-requisitos

  • da CLI do Azure

Configurar o plugin Maven

O processo de implantação para o Azure App Service utiliza automaticamente as suas credenciais do Azure através da CLI do Azure. Se a CLI do Azure não estiver instalada localmente, o plug-in do Maven será autenticado com OAuth ou entrada no dispositivo. Para mais informações, consulte autenticação com plug-ins do Maven.

Use as seguintes etapas para configurar o plug-in:

  1. Execute o comando Maven mostrado ao lado para configurar a implantação. Este comando ajuda você a configurar o sistema operacional do Serviço de Aplicativo, a versão Java e a versão do Tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Para Criar nova configuração de execução, pressione Ye, em seguida, pressione Enter.

  3. Para Definir valor para OS, pressione 2 para Linux e, em seguida, pressione Enter.

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

  5. Para Definir valor para webContainer, pressione 1 para JBosseap7 e, em seguida, pressione Enter.

  6. Para definir um valor para o nível de preços, pressione Enter para selecionar a camada padrão P1v3.

  7. Para Confirmar, pressione Ye, em seguida, pressione Enter.

O exemplo a seguir mostra a saída do processo de implantação:

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------

Depois de confirmar suas escolhas, o plug-in adiciona a configuração do plug-in e as configurações necessárias ao arquivo de pom.xml do seu 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 App Service diretamente em seu pom.xml. Algumas configurações comuns estão listadas na tabela a seguir:

Propriedade Necessário Descrição Versão
schemaVersion falso A versão do esquema de configuração. Os valores suportados são v1 e v2. 1.5.2
subscriptionId falso O ID da subscrição. 0.1.0+
resourceGroup verdadeiro O grupo de recursos do Azure para seu aplicativo. 0.1.0+
appName verdadeiro O nome do seu aplicativo. 0.1.0+
region falso A região na qual hospedar seu aplicativo. O valor padrão é centralus. Para regiões válidas, consulte Regiões suportadas. 0.1.0+
pricingTier falso O nível 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 Aplicações 0.1.0+
runtime falso A configuração do ambiente de tempo de execução. Para obter mais informações, consulte Detalhes de configuração. 0.1.0+
deployment falso A configuração de implantação. Para obter mais informações, consulte Detalhes de configuração. 0.1.0+

Para obter a lista completa de configurações, consulte a documentação de referência do plugin. 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.

Certifique-se de salvar os valores de appName 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 implantada. Use as seguintes etapas para alterar essas configurações no arquivo de propriedades:

  1. Vá até ao ficheiro de authentication.properties do seu aplicativo e altere o valor de app.homePage para o nome de domínio do aplicativo implementado, conforme mostrado no exemplo a seguir. Por exemplo, se você escolheu example-domain para o nome do aplicativo na etapa anterior, agora você deve usar https://example-domain.azurewebsites.net para o valor app.homePage. 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 reconstruir seu aplicativo:

    mvn clean package
    

Atualizar o registo da aplicação Microsoft Entra ID

Como o URI de redirecionamento é alterado para seu aplicativo implantado no Serviço de Aplicativo do Azure, você também precisa alterar o URI de redirecionamento em seu registro de aplicativo Microsoft Entra ID. Use as seguintes etapas para fazer essa alteração:

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

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

  3. Abra o registro do aplicativo selecionando seu nome.

  4. Selecione de autenticação no menu.

  5. Na seção Web - Redirecionar URIs, 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 seguinte comando para garantir que você esteja 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 o URL com seu navegador da Web local, onde você deve 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 . Não é uma boa prática manter esse valor neste arquivo. Você também pode estar correndo um risco se comprometê-lo em um repositório Git.

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

Use as seguintes etapas para transferir o valor de aad.secret para o Cofre de Chaves e usá-lo no 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. Utilize os seguintes comandos para adicionar o valor secreto aad.secret ao cofre de 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 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. Utilize os seguintes comandos para dar permissão às identidades get e list nos segredos do seu 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. Utilize o seguinte comando para criar uma definição de aplicação na sua aplicação que utilize uma referência ao cofre de chaves para o segredo no seu 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 valor do arquivo authentication.properties .

  8. Reconstrua 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