Authentifier les déploiements auprès d’Azure App Service
Pour effectuer les exercices de ce module, vous avez été connecté à l’environnement du bac à sable (sandbox). Cet environnement étant interactif, tous vos déploiements ont été authentifiés avec des informations d’identification que vous avez utilisées lors de l’initialisation du bac à sable. Cependant, vos déploiements n’utiliseront pas cet environnement interactif si vous automatisez votre processus de génération. Dans un scénario d’automatisation, vous devez configurer votre projet pour utiliser l’une des méthodes d’authentification prises en charge.
Dans cette unité, vous allez découvrir comment votre entreprise peut configurer Maven pour utiliser l’authentification Azure.
Authentification de votre application web
Azure vous offre la possibilité de choisir la façon dont vous souhaitez authentifier votre application. L’option que vous choisirez dépendra de l’environnement de génération de votre entreprise. Les trois options d’authentification de votre code d’application avec Maven sont listées ici, par ordre croissant de complexité :
S’authentifier avec Azure CLI, ou utiliser Cloud Shell dans le portail Azure.
Créez un principal de service Azure, créez un fichier JSON avec vos informations d’identification de principal de service et modifiez le fichier de
pom.xml
de votre projet.Créer un principal de service Azure, ajouter les informations d’identification de votre principal de service à un fichier
settings.xml
Maven, puis modifier le fichierpom.xml
de votre projet de façon à utiliser les paramètres Maven.
Microsoft recommande la troisième option, car elle offre l’approche la plus fiable, flexible et cohérente pour l’authentification. Dans un environnement réel, les applications web Java existantes de votre entreprise peuvent s’exécuter sur des serveurs locaux sur lesquels les outils Azure CLI ne sont pas installés. En tenant compte de cela, vous implémenterez probablement la recommandation consistant à ajouter l’authentification à l’aide d’un principal de service et d’un fichier settings.xml
Maven. Toutefois, pour cet exercice, le bac à sable ne dispose pas de privilèges suffisants pour créer des principaux du service.
Authentification avec Azure CLI
Le moyen le plus simple d’authentifier Maven consiste à se connecter avec Azure CLI. Le plug-in Maven pour Azure App Service peut ensuite déployer l’application à l’aide de vos informations d’identification, sans aucune configuration supplémentaire requise.
Si vous utilisez Azure Cloud Shell, comme vous l’avez fait lors des exercices avec le bac à sable Microsoft Learn dans ce module, vous êtes connecté à Azure par défaut ; vous n’avez pas besoin d’exécuter des commandes supplémentaires. Toutefois, si vous utilisez Azure CLI à partir d’un autre ordinateur, vous devez vous connecter à l’aide de la commande az login
.
Authentification avec un principal de service
La deuxième méthode d’authentification de votre application web consiste à créer un principal de service Azure et à enregistrer ses informations d’identification dans un fichier que vous référencerez à partir des paramètres de votre projet.
Pour créer un principal du service Azure avec Azure CLI, effectuez les étapes suivantes.
Exécutez la commande suivante à partir d’Azure CLI pour créer un principal du service Azure :
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Où
https://mywebapp-1234567890.azurewebsites.net/
est l’URL de votre application web.Cette commande retourne une réponse avec un objet JSON qui ressemble à l’exemple suivant :
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" }
Modifiez le fichier
pom.xml
de votre application web pour utiliser les informations dans la sortie JSON.Ouvrez votre fichier
pom.xml
avec l’éditeur de code :cd ~/MyWebApp code pom.xml
Recherchez
azure-webapp-maven-plugin
dans la section<configuration>
.Ajoutez le code XML suivant après la ligne contenant l’élément
<region>
et utilisez les informations dans la sortie 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>
Votre section
azure-webapp-maven-plugin
doit maintenant ressembler à l’exemple suivant :<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>
Enregistrez vos modifications en tapant Ctrl+S.
Quittez l’éditeur de code en tapant Ctrl+Q.
Utilisez Maven pour générer et déployer votre application web sur Azure App Service :
mvn azure-webapp:deploy
Maven affiche une série de messages de génération, et le message final doit indiquer que le déploiement sur Azure a réussi :
[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] ------------------------------------------------------------------------
La ligne
Auth type: SERVICE_PRINCIPAL
dans la réponse indique que le principal de service a été utilisé pour publier votre application web sur Azure.
Authentification avec un fichier settings.xml
Maven
La troisième méthode pour authentifier votre application web consiste à créer un principal de service Azure, à créer un fichier settings.xml
Maven qui contient ses informations d’identification, et à modifier le fichier pom.xml
de votre projet de façon à utiliser les paramètres Maven.
Les étapes de création d’un principal du service Azure avec Azure CLI sont les mêmes que celles de la section précédente de cette unité.
Exécutez la commande suivante à partir d’Azure CLI pour créer un principal du service Azure :
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Où
https://mywebapp-1234567890.azurewebsites.net/
est l’URL de votre application web.Cette commande retourne une réponse avec un objet JSON qui ressemble à l’exemple suivant :
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" }
Créez une version utilisateur du fichier
settings.xml
utilisable par Maven.Créez un fichier XML pour vos paramètres Maven avec l’éditeur de code :
code ~/.m2/settings.xml
Collez le code XML suivant dans le fichier :
<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>
Où :
Paramètre Description client
Spécifie la valeur appId
du principal du service.key
Spécifie la valeur password
du principal du service.tenant
Spécifie la valeur tenant
du principal du service.Enregistrez vos modifications en tapant Ctrl+S.
Quittez l’éditeur de code en tapant Ctrl+Q.
Modifiez le fichier
pom.xml
de votre application web de façon à référencer le fichier d’authentification.Ouvrez votre fichier
pom.xml
avec l’éditeur de code :cd ~/MyWebApp code pom.xml
Recherchez
azure-webapp-maven-plugin
dans la section<configuration>
.Ajoutez le code XML suivant après la ligne contenant l’élément
<region>
:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Votre section
azure-webapp-maven-plugin
doit maintenant ressembler à l’exemple suivant :<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>
Enregistrez vos modifications en tapant Ctrl+S.
Quittez l’éditeur de code en tapant Ctrl+Q.
Utilisez Maven pour générer et déployer votre application web sur Azure App Service :
mvn azure-webapp:deploy
Maven affiche une série de messages de génération, et le message final doit indiquer que le déploiement sur Azure a réussi :
[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] ------------------------------------------------------------------------
La ligne
Auth type: SERVICE_PRINCIPAL
dans la réponse indique que les informations d’identification de votre principal de service ont été utilisées pour publier votre application web sur Azure.