Autenticar implantações no Serviço de Aplicativo do Azure
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 arquivopom.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.
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" }
Modifique o arquivo
pom.xml
do aplicativo Web para usar as informações na saída JSON.Abra o arquivo
pom.xml
com o editor de código:cd ~/MyWebApp code pom.xml
Localize a seção
<configuration>
doazure-webapp-maven-plugin
.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>
Salve as alterações digitando CTRL+S.
Abra o editor de código digitando Ctrl+Q.
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.
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" }
Crie uma versão de usuário do arquivo
settings.xml
para o Maven usar.Crie um arquivo XML para as configurações do Maven com o editor de código:
code ~/.m2/settings.xml
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çokey
Especifica o valor password
da entidade de serviçotenant
Especifica o valor tenant
da entidade de serviçoSalve as alterações digitando CTRL+S.
Abra o editor de código digitando Ctrl+Q.
Modifique o arquivo
pom.xml
do aplicativo Web para fazer referência ao arquivo de autenticação.Abra o arquivo
pom.xml
com o editor de código:cd ~/MyWebApp code pom.xml
Localize a seção
<configuration>
doazure-webapp-maven-plugin
.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>
Salve as alterações digitando CTRL+S.
Abra o editor de código digitando Ctrl+Q.
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.