Autenticar implementações no Serviço de Aplicações do Azure

Concluído

Para concluir os exercícios neste módulo, a sua sessão foi iniciada no ambiente de sandbox. Como este ambiente é interativo, todas as suas implementações foram autenticadas com as credenciais que utilizou quando inicializou o sandbox. No entanto, suas implantações não usarão esse ambiente interativo se você estiver automatizando seu processo de compilação. Num cenário de automatização, terá de configurar o seu projeto para utilizar um dos métodos de autenticação suportados.

Nesta unidade, irá aprender como a sua empresa pode configurar o Maven para utilizar a autenticação do Azure.

Autenticar a sua aplicação Web

O Azure dá-lhe a flexibilidade de decidir como quer autenticar a sua aplicação. A opção que escolher depende do ambiente de criação da sua empresa. As três opções para autenticar o código do aplicativo com o Maven estão listadas aqui, em ordem de complexidade (do mínimo para o maior):

  • Autentique-se usando a CLI do Azure ou use 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 do pom.xml seu projeto.

  • Crie uma entidade de serviço do Azure, adicione suas credenciais de entidade de serviço a um arquivo Maven settings.xml e modifique o arquivo do pom.xml seu projeto para usar as configurações do Maven.

A Microsoft recomenda a terceira opção, uma vez que fornece a abordagem mais fiável, flexível e consistente à autenticação. Em uma configuração do mundo real, os aplicativos Web Java existentes da sua empresa podem estar sendo executados 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 autenticação usando uma entidade de serviço e um arquivo Maven settings.xml . No entanto, para este 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 forma mais fácil de autenticar o Maven é iniciar sessão na CLI do Azure. Em seguida, o Plug-in do Maven para o Serviço de Aplicações do Azure pode implementar a aplicação com as suas credenciais, sem necessidade de configuração adicional.

Se você estiver usando o Azure Cloud Shell, como fez ao concluir os exercícios com o Microsoft Learn Sandbox neste módulo, estará conectado ao Azure por padrão; você não precisa executar mais comandos. No entanto, se estiver a utilizar a CLI do Azure a partir de um computador separado, terá de iniciar sessão com o comando az login.

Autenticação com uma entidade de serviço

O segundo método para autenticar seu aplicativo Web envolve a criação de uma entidade de serviço do Azure e salvar suas credenciais de entidade de serviço em um arquivo que você referenciará nas configurações do projeto.

Para criar um principal de serviço do Azure com a CLI do Azure, utilize os passos que se seguem.

  1. Execute o comando seguinte na CLI do Azure para criar um principal 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/ é o URL da aplicação Web.

    Este comando retorna uma resposta com um objeto JSON semelhante ao exemplo a seguir:

    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 do pom.xml aplicativo Web para usar as informações na saída JSON.

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

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

    3. Adicione o seguinte XML após a linha que contém o <region> elemento 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>
      

      A secção azure-webapp-maven-plugin deve agora assemelhar-se 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. Guarde as suas alterações ao escrever Ctrl+S.

    5. Saia do editor de código ao escrever Ctrl+Q.

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

    mvn azure-webapp:deploy
    

    O Maven exibe uma série de mensagens de compilação, 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 Auth type: SERVICE_PRINCIPAL linha na resposta indica que a entidade de serviço foi usada para publicar seu aplicativo Web no Azure.

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

O terceiro método para autenticar seu aplicativo Web envolve a criação de uma entidade de serviço do Azure, a criação de um arquivo Maven settings.xml que contém suas credenciais da entidade de serviço e a modificação do arquivo do pom.xml projeto para usar as configurações do Maven.

Os passos para criar um principal de serviço do Azure com a CLI do Azure são os mesmos indicados na secção anterior desta unidade.

  1. Execute o comando seguinte na CLI do Azure para criar um principal 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/ é o URL da aplicação Web.

    Este comando retorna uma resposta com um objeto JSON semelhante ao exemplo a seguir:

    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 utilizador do ficheiro settings.xml para utilização no Maven.

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

      code ~/.m2/settings.xml
      
    2. Cole o XML seguinte no ficheiro:

      <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 Description
      client Especifica o valor appId do principal de serviço
      key Especifica o valor password do principal de serviço
      tenant Especifica o valor tenant do principal de serviço
    3. Guarde as suas alterações ao escrever Ctrl+S.

    4. Saia do editor de código ao escrever Ctrl+Q.

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

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

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

    3. Adicione o seguinte XML depois da linha que contém o elemento <region>:

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

      A secção azure-webapp-maven-plugin deve agora assemelhar-se 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. Guarde as suas alterações ao escrever Ctrl+S.

    5. Saia do editor de código ao escrever Ctrl+Q.

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

    mvn azure-webapp:deploy
    

    O Maven exibe uma série de mensagens de compilação, 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 Auth type: SERVICE_PRINCIPAL linha na resposta indica que suas credenciais da entidade de serviço foram usadas para publicar seu aplicativo Web no Azure.

Verifique o seu conhecimento

1.

Qual dos seguintes métodos não tem suporte para autenticar implantações usando o plug-in Maven para o Serviço de Aplicativo do Azure?

2.

True ou false: você pode salvar o JSON 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 Maven para o Serviço de Aplicativo do Azure.

3.

Qual dos seguintes métodos é recomendado para autenticar implementações com o Plug-in do Maven para o Serviço de Aplicações do Azure?