Autenticar implantações no Serviço de Aplicativo do Azure
- 10 minutos
Para concluir os exercícios deste módulo, você fez logon no ambiente de área restrita. Como esse ambiente é interativo, todas as suas implantações foram autenticadas usando as credenciais usadas quando você inicializou a área restrita. No entanto, suas implantações não usarão esse ambiente interativo se você estiver automatizando seu processo de build. Em um cenário de automação, você precisará configurar seu projeto para usar um dos métodos de autenticação com suporte.
Nesta unidade, você aprenderá como sua empresa pode configurar o Maven para usar a autenticação do Azure.
Autenticando seu aplicativo Web
O Azure oferece flexibilidade para decidir como você deseja autenticar seu aplicativo. A opção escolhida depende do ambiente de build 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 (de pelo menos para a maioria):
Autentique usando a CLI do Azure ou use o Cloud Shell no portal do Azure.
Crie um principal de serviço do Azure, crie um arquivo JSON com suas credenciais de principal de serviço e modifique o arquivo
pom.xml
do projeto.Crie um principal de serviço do Azure, adicione as credenciais do seu principal de serviço a um arquivo Maven
settings.xml
e modifique o arquivopom.xml
do projeto para usar as configurações do Maven.
A Microsoft recomenda a terceira opção, pois fornece a abordagem mais confiável, flexível e consistente para autenticação. Em uma configuração do mundo real, os aplicativos Web Java existentes da sua 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 a 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 tem feito ao concluir os exercícios com a Área Restrita do Microsoft Learn neste módulo, você estará conectado ao Azure por padrão; você não precisa executar mais comandos. No entanto, se você estiver usando a CLI do Azure de um computador separado, precisará entrar usando o az login
comando.
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 o armazenamento de suas credenciais de entidade de serviço em um arquivo que você referenciará nas configurações do 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
Onde
https://mywebapp-1234567890.azurewebsites.net/
está a URL do seu 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 do aplicativo web
pom.xml
para usar as informações na saída JSON.Abra o
pom.xml
arquivo 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
<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>
Sua
azure-webapp-maven-plugin
seção agora deve ser semelhante ao exemplo a seguir:<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 suas alterações digitando Ctrl+S.
Saia do editor de código digitando Ctrl+Q.
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 build e a mensagem final deve indicar a 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 Maven settings.xml
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 as credenciais da entidade de serviço e a modificação do arquivo do pom.xml
projeto para usar as configurações do Maven.
As etapas para criar um principal de serviço do Azure com a CLI do Azure são as mesmas da seção precedente desta unidade.
Rode o seguinte comando 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
Onde
https://mywebapp-1234567890.azurewebsites.net/
está a URL do seu 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 do usuário do
settings.xml
arquivo para o Maven usar.Crie um novo arquivo XML para as configurações do Maven com o editor de código:
code ~/.m2/settings.xml
Cole 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 suas alterações digitando Ctrl+S.
Saia do 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
pom.xml
arquivo 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
<region>
elemento:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Sua
azure-webapp-maven-plugin
seção agora deve ser semelhante ao exemplo a seguir:<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 suas alterações digitando Ctrl+S.
Saia do editor de código digitando Ctrl+Q.
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 build e a mensagem final deve indicar a 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 suas credenciais de principal de serviço foram usadas para publicar seu aplicativo Web no Azure.