Autenticar implantações no Serviço de Aplicativo do Azure

Concluído

Para concluir os exercícios deste módulo, você fez logon no ambiente de área restrita. Como este ambiente é interativo, todas as suas implantações foram autenticadas usando as credenciais que você usou ao inicializar a área restrita. No entanto, as implantações não usarão esse ambiente interativo se você estiver automatizando o processo de build. Em um cenário de automação, você precisará configurar o projeto para usar um dos métodos de autenticação com suporte.

Nesta unidade, você saberá como sua empresa pode configurar o Maven para usar a autenticação do Azure.

Autenticando seu aplicativo Web

O Azure oferece a flexibilidade de decidir como você deseja autenticar seu aplicativo. A opção escolhida depende do ambiente de build de sua empresa. As três opções para autenticar o código do aplicativo com o Maven estão listadas abaixo, em ordem de complexidade (da menos à mais complexa):

  • Autenticar usando a CLI do Azure ou usar o Cloud Shell no portal do Azure.

  • Crie uma entidade de serviço do Azure, crie um arquivo JSON com suas credenciais de entidade de serviço e modifique o arquivo pom.xml do projeto.

  • Criar uma entidade de serviço do Azure, adicionar as credenciais da entidade de serviço a um arquivo settings.xml do Maven e modificar o arquivo pom.xml do seu projeto para usar as configurações do Maven.

A Microsoft recomenda a terceira opção, pois ela fornece a abordagem mais confiável, flexível e consistente de autenticação. Em uma configuração do mundo real, os aplicativos Web Java existentes da empresa podem estar em execução em servidores locais que não têm as ferramentas da CLI do Azure instaladas. Com isso em mente, você provavelmente implementaria a recomendação de adicionar a autenticação usando uma entidade de serviço e um arquivo settings.xml do Maven. Mas neste exercício, a área restrita não tem privilégios suficientes para criar entidades de serviço.

Autenticação com a CLI do Azure

A maneira mais fácil de autenticar o Maven é entrar com o CLI do Azure. O Plug-in do Maven para o Serviço de Aplicativo do Azure pode implantar o aplicativo usando suas credenciais, sem a necessidade de configuração adicional.

Se você estiver usando o Azure Cloud Shell, como usou ao concluir os exercícios com a área restrita do Microsoft Learn neste módulo, você estará conectado ao Azure por padrão e não será preciso executar nenhum comando adicional. No entanto, se estiver usando a CLI do Azure em um computador separado, você precisará entrar usando o comando az login.

Autenticação com uma entidade de serviço

O segundo método para autenticar seu aplicativo Web envolve criar uma entidade de serviço do Azure e salvar as credenciais da entidade de serviço em um arquivo ao qual você fará referência nas configurações do seu projeto.

Para criar uma entidade de serviço do Azure com a CLI do Azure, use as etapas a seguir.

  1. Execute o seguinte comando na CLI do Azure para criar uma entidade de serviço do Azure:

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Em que https://mywebapp-1234567890.azurewebsites.net/ é a URL do aplicativo Web.

    Esse comando retorna uma resposta com um objeto JSON que se assemelha ao seguinte exemplo:

    Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "...",
      "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
    }
    
  2. Modifique o arquivo pom.xml do aplicativo Web para usar as informações na saída JSON.

    1. Abra o arquivo pom.xml com o editor de código:

      cd ~/MyWebApp
      code pom.xml
      
    2. Localize a seção <configuration> do azure-webapp-maven-plugin.

    3. Adicione o seguinte XML após a linha que contém o elemento <region> e use as informações na saída JSON:

      <auth>
          <type>service_principal</type>
          <client>value-of-appId</client>
          <tenant>value-of-tenant</tenant>
          <key>value-of-password</key>
          <environment>azure</environment>
      </auth>
      

      Agora, sua seção azure-webapp-maven-plugin deve ser semelhante ao seguinte exemplo:

      <plugin>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-webapp-maven-plugin</artifactId>
          <version>2.13.0</version>
          <configuration>
              <schemaVersion>v2</schemaVersion>
              <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup>
              <appName>MyWebApp-1714654093047</appName>
              <pricingTier>S1</pricingTier>
              <region>centralus</region>
              <auth>
                  <type>service_principal</type>
                  <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client>
                  <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant>
                  <key>abcdefghijklmnopqrstuvwxyz1234567890</key>
                  <environment>azure</environment>
              </auth>
              <runtime>
                  <os>Linux</os>
                  <javaVersion>Java 17</javaVersion>
                  <webContainer>Tomcat 10.0</webContainer>
              </runtime>
              <deployment>
                  <resources>
                      <resource>
                          <directory>${project.basedir}/target</directory>
                          <includes>
                              <include>*.war</include>
                          </includes>
                      </resource>
                  </resources>
              </deployment>
          </configuration>
      </plugin>
      
      
    4. Salve as alterações digitando CTRL+S.

    5. Abra o editor de código digitando Ctrl+Q.

  3. Use o Maven para criar e implantar o aplicativo Web no Serviço de Aplicativo do Azure:

    mvn azure-webapp:deploy
    

    O Maven exibe uma série de mensagens de build e a mensagem final deve indicar uma implantação bem-sucedida no Azure:

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] -------------------< com.microsoft.example:MyWebApp >-------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO] 
    [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Auth type: SERVICE_PRINCIPAL
    [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559
    [INFO] There is only one subscription '...' in your account, will use it automatically.
    [INFO] Subscription: ...
    [INFO] Failed to get version of your artifact, skip artifact compatibility test
    [INFO] Trying to deploy external resources to MyWebApp-1714654093047...
    [INFO] Successfully deployed the resources to MyWebApp-1714654093047
    [INFO] Trying to deploy artifact to MyWebApp-1714654093047...
    [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war]  ...
    [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net                            
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  47.052 s
    [INFO] Finished at: 2024-05-02T13:10:54Z
    [INFO] ------------------------------------------------------------------------
    

    A linha Auth type: SERVICE_PRINCIPAL na resposta indica que a entidade de serviço foi usada para publicar seu aplicativo Web no Azure.

Autenticação com um arquivo settings.xml do Maven

O terceiro método para autenticar o aplicativo Web envolve criar uma entidade de serviço do Azure, criar um arquivo settings.xml do Maven que contém as credenciais da entidade de serviço e, em seguida, modificar o arquivo pom.xml do projeto para usar as configurações do Maven.

As etapas para criar uma entidade de serviço do Azure com a CLI do Azure são as mesmas da seção anterior desta unidade.

  1. Execute o seguinte comando na CLI do Azure para criar uma entidade de serviço do Azure:

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Em que https://mywebapp-1234567890.azurewebsites.net/ é a URL do aplicativo Web.

    Esse comando retorna uma resposta com um objeto JSON que se assemelha ao seguinte exemplo:

    Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    
    {
      "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "displayName": "mywebapp-1234567890.azurewebsites.net/",
      "name": "https://mywebapp-1234567890.azurewebsites.net/",
      "password": "...",
      "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
    }
    
  2. Crie uma versão de usuário do arquivo settings.xml para o Maven usar.

    1. Crie um arquivo XML para as configurações do Maven com o editor de código:

      code ~/.m2/settings.xml
      
    2. Copie o seguinte XML no arquivo:

      <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <servers>
          <server>
             <id>azure-auth</id>
             <configuration>
                 <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client>
                 <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant>
                 <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key>
             </configuration>
          </server>
        </servers>
      </settings>
      

      Em que:

      Parâmetro Descrição
      client Especifica o valor appId da entidade de serviço
      key Especifica o valor password da entidade de serviço
      tenant Especifica o valor tenant da entidade de serviço
    3. Salve as alterações digitando CTRL+S.

    4. Abra o editor de código digitando Ctrl+Q.

  3. Modifique o arquivo pom.xml do aplicativo Web para fazer referência ao arquivo de autenticação.

    1. Abra o arquivo pom.xml com o editor de código:

      cd ~/MyWebApp
      code pom.xml
      
    2. Localize a seção <configuration> do azure-webapp-maven-plugin.

    3. Adicione o seguinte XML após a linha que contém o elemento <region>:

      <auth>
        <type>service_principal</type>
        <serverId>azure-auth</serverId>
      </auth>
      

      Agora, sua seção azure-webapp-maven-plugin deve ser semelhante ao seguinte exemplo:

      <plugin> 
        <groupId>com.microsoft.azure</groupId>  
        <artifactId>azure-webapp-maven-plugin</artifactId>  
        <version>2.13.0</version>  
        <configuration> 
          <schemaVersion>V2</schemaVersion>  
          <resourceGroup>maven-publish</resourceGroup>  
          <appName>MyWebApp-1234567890</appName>  
          <pricingTier>S1</pricingTier>  
          <region>centralus</region>
          <auth>
            <type>service_principal</type>
            <serverId>azure-auth</serverId>
          </auth>
          <runtime>
              <os>Linux</os>
              <javaVersion>Java 17</javaVersion>
              <webContainer>Tomcat 10.0</webContainer>
          </runtime>
          <deployment> 
            <resources> 
              <resource> 
                <directory>${project.basedir}/target</directory>  
                <includes> 
                  <include>*.war</include> 
                </includes> 
              </resource> 
            </resources> 
          </deployment> 
        </configuration> 
      </plugin> 
      
    4. Salve as alterações digitando CTRL+S.

    5. Abra o editor de código digitando Ctrl+Q.

  4. Use o Maven para criar e implantar o aplicativo Web no Serviço de Aplicativo do Azure:

    mvn azure-webapp:deploy
    

    O Maven exibe uma série de mensagens de build e a mensagem final deve indicar uma implantação bem-sucedida no Azure:

    [INFO] -------------------< com.microsoft.example:MyWebApp >-------------------
    [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO] 
    [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp ---
    [INFO] Auth type: SERVICE_PRINCIPAL
    [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
    [INFO] There is only one subscription '...' in your account, will use it automatically.
    [INFO] Subscription: ...
    [INFO] Failed to get version of your artifact, skip artifact compatibility test
    [INFO] Trying to deploy external resources to MyWebApp-1714654093047...
    [INFO] Successfully deployed the resources to MyWebApp-1714654093047
    [INFO] Trying to deploy artifact to MyWebApp-1714654093047...
    [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war]  ...
    [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net                            
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  53.611 s
    [INFO] Finished at: 2024-05-02T13:53:31Z
    [INFO] ------------------------------------------------------------------------
    

    A linha Auth type: SERVICE_PRINCIPAL na resposta indica que as credenciais da entidade de serviço foram usadas para publicar o aplicativo Web no Azure.

Verificar seu conhecimento

1.

Quais dos métodos a seguir não têm suporte para autenticar implantações usando o Plug-in do Maven para o Serviço de Aplicativo do Azure?

2.

Verdadeiro ou falso: você pode salvar o JSON que é retornado quando você cria uma entidade de serviço do Azure em um arquivo e usar esse arquivo para autenticação com o Plug-in do Maven para o Serviço de Aplicativo do Azure.

3.

Qual dos métodos a seguir é recomendado para autenticar implantações usando o Plug-in do Maven para o Serviço de Aplicativo do Azure?