Déployer des applications Java Tomcat sur Azure App Service

Cet article explique comment déployer une application Tomcat avec connexion par le compte Microsoft Entra sur Azure App Service.

Cet article suppose que vous avez effectué l’un des articles suivants en utilisant uniquement l’onglet Exécuter localement et que vous souhaitez maintenant déployer sur Azure. Ces instructions sont les mêmes que celles de l’onglet Déployer sur Azure dans les articles suivants :

Prérequis

Configurer le plug-in Maven

Lorsque vous déployez sur Azure App Service, le déploiement utilise automatiquement vos informations d’identification Azure à partir d’Azure CLI. Si Azure CLI n’est pas installé localement, le plug-in Maven s’authentifie avec OAuth ou la connexion de l’appareil. Pour plus d’informations, consultez Authentification avec les plug-ins Maven.

Pour configurer le plug-in, procédez comme suit :

  1. Exécutez la commande suivante pour configurer le déploiement. Cette commande vous aide à configurer le système d’exploitation Azure App Service, la version Java et la version tomcat.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
    
  2. Pour créer une configuration d’exécution, appuyez sur Y, puis appuyez sur Entrée.

  3. Pour Définir la valeur du système d’exploitation, appuyez sur 1 pour Windows ou 2 pour Linux, puis appuyez sur Entrée.

  4. Pour Définir la valeur de javaVersion, appuyez sur 2 pour Java 11, puis appuyez sur Entrée.

  5. Pour Définir la valeur pour webContainer, appuyez sur 4 pour Tomcat 9.0, puis appuyez sur Entrée.

  6. Pour Définir la valeur de pricingTier, appuyez sur Entrée pour sélectionner le niveau P1v2 par défaut.

  7. Pour Confirmer, appuyez sur Y, puis appuyez sur Entrée.

L’exemple suivant montre la sortie du processus de déploiement :

Please confirm webapp properties
AppName : msal4j-servlet-auth-1707209552268
ResourceGroup : msal4j-servlet-auth-1707209552268-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java Version: Java 11
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: [INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.112 s
[INFO] Finished at: 2024-02-06T08:53:02Z
[INFO] ------------------------------------------------------------------------

Une fois que vous avez confirmé vos choix, le plug-in ajoute l’élément de plug-in et les paramètres requis au fichier de pom.xml de votre projet pour configurer votre application à exécuter dans Azure App Service.

La partie pertinente du fichier pom.xml doit ressembler à l’exemple suivant :

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>

Vous pouvez modifier les configurations d’App Service directement dans votre pom.xml. Certaines configurations courantes sont répertoriées dans le tableau suivant :

Propriété Obligatoire Description
subscriptionId false L'ID de l'abonnement.
resourceGroup true Groupe de ressources Azure pour votre application.
appName true Nom de votre application.
region false Région dans laquelle héberger votre application. La valeur par défaut est centralus. Pour les régions valides, consultez Régions prises en charge.
pricingTier false Niveau tarifaire de votre application. La valeur par défaut est P1v2 pour une charge de travail de production. La valeur minimale recommandée pour le développement et le test Java est B2. Pour plus d’informations, consultez Tarification App Service.
runtime false Configuration de l’environnement d’exécution. Pour plus d’informations, consultez Détails de configuration.
deployment false Configuration du déploiement. Pour plus d’informations, consultez Détails de configuration.

Pour obtenir la liste complète des configurations, consultez la documentation de référence sur le plug-in. Tous les plug-ins Azure Maven partagent un ensemble commun de configurations. Pour ces configurations, consultez Configurations courantes. Pour connaître les configurations spécifiques à Azure App Service, consultez l’application Azure : Détails de configuration.

Veillez à enregistrer les valeurs et resourceGroup les appName valeurs pour une utilisation ultérieure.

Préparer l’application pour le déploiement

Lorsque vous déployez votre application sur App Service, votre URL de redirection passe à l’URL de redirection de votre instance d’application déployée. Pour modifier ces paramètres dans votre fichier de propriétés, procédez comme suit :

  1. Accédez au fichier authentication.properties de votre application et modifiez la valeur du app.homePage nom de domaine de votre application déployée, comme illustré dans l’exemple suivant. Par exemple, si vous avez choisi example-domain le nom de votre application à l’étape précédente, vous devez maintenant l’utiliser https://example-domain.azurewebsites.net pour la app.homePage valeur. Assurez-vous que vous avez également modifié le protocole de http vers https.

    # app.homePage is by default set to dev server address and app context path on the server
    # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net
    app.homePage=https://<your-app-name>.azurewebsites.net
    
  2. Après avoir enregistré ce fichier, utilisez la commande suivante pour reconstruire votre application :

    mvn clean package
    

Mettre à jour votre inscription d’application Microsoft Entra ID

Étant donné que l’URI de redirection change vers votre application déployée dans Azure App Service, vous devez également modifier l’URI de redirection dans l’inscription de votre application Microsoft Entra ID. Pour cela, effectuez les étapes suivantes :

  1. Accédez à la page Inscriptions d’applications de la plateforme d’identités Microsoft pour les développeurs.

  2. Utilisez la zone de recherche pour rechercher l’inscription de votre application , par exemple java-servlet-webapp-authentication.

  3. Ouvrez votre inscription d’application en sélectionnant son nom.

  4. Sélectionnez Authentification dans le menu déroulant.

  5. Dans la section URI de redirection web - , sélectionnez Ajouter un URI.

  6. Renseignez l’URI de votre application, en ajoutant /auth/redirect , par exemple https://<your-app-name>.azurewebsites.net/auth/redirect.

  7. Sélectionnez Enregistrer.

Déployer l’application

Vous êtes maintenant prêt à déployer votre application sur Azure App Service. Utilisez la commande suivante pour vous assurer que vous êtes connecté à votre environnement Azure pour exécuter le déploiement :

az login

Avec toutes les configurations prêtes dans votre fichier pom.xml , vous pouvez maintenant utiliser la commande suivante pour déployer votre application Java sur Azure :

mvn package azure-webapp:deploy

Une fois le déploiement terminé, votre application est prête à http://<your-app-name>.azurewebsites.net/. Ouvrez l’URL avec votre navigateur web local, où vous devez voir la page de démarrage de l’application msal4j-servlet-auth .

Supprimer des valeurs secrètes

Le fichier authentication.properties de l’application contient actuellement la valeur de votre clé secrète client dans le aad.secret paramètre. Il n’est pas recommandé de conserver cette valeur dans ce fichier. Vous risquez peut-être également de le valider dans un dépôt Git.

En guise d’étape supplémentaire de sécurité, vous pouvez stocker cette valeur dans Azure Key Vault et utiliser les références Key Vault pour la rendre disponible dans votre application.

Procédez comme suit pour déplacer la valeur de aad.secret Key Vault et l’utiliser dans votre code :

  1. Utilisez les commandes suivantes pour créer une instance Azure Key Vault :

    export RESOURCE_GROUP=<your-resource-group-name>
    export KEY_VAULT=<your-key-vault-name>
    az keyvault create \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT
    
  2. Utilisez les commandes suivantes pour ajouter la valeur secrète de votre coffre de aad.secret clés en tant que nouveau secret :

    az keyvault secret set \
        --vault-name $KEY_VAULT \
        --name "AADSECRET" \
        --value "<the-value-of-your-client-secret>"
    
  3. Vous devez maintenant accorder à votre application l’accès à votre coffre de clés. Pour effectuer cette tâche, commencez par créer une identité pour votre application à l’aide des commandes suivantes :

    export WEB_APP_NAME=<your-web-app-name>
    az webapp identity assign \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME
    
  4. Utilisez les commandes suivantes pour donner cette identité get et list l’autorisation sur les secrets dans votre coffre de clés :

    export IDENTITY=$(az webapp identity show \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --query principalId \
        --output tsv)
    az keyvault set-policy \
        --resource-group $RESOURCE_GROUP \
        --name $KEY_VAULT \
        --secret-permissions get list \
        --object-id $IDENTITY
    
  5. Utilisez la commande suivante pour créer un paramètre d’application dans votre application qui utilise une référence de coffre de clés au secret dans votre coffre de clés. Ce paramètre rend la valeur du secret disponible pour votre application en tant que variable d’environnement.

    az webapp config appsettings set \
        --resource-group $RESOURCE_GROUP \
        --name $WEB_APP_NAME \
        --settings AADSECRET='@Microsoft.KeyVault(VaultName=$KEY_VAULT;SecretName=AADSECRET)'
    
  6. Utilisez le code suivant pour charger cette valeur à partir des variables d’environnement. Dans le fichier \src\main\java\com\microsoft\azuresamples\msal4j\helpers\Config.java, à la ligne 41, remplacez l’instruction actuelle par la ligne suivante :

    public static final String SECRET = System.getenv("AADSECRET");
    
  7. Vous pouvez maintenant supprimer la clé et la aad.secret valeur du fichier authentication.properties .

  8. Régénérez le code à l’aide de la commande suivante :

    mvn clean package
    
  9. Redéployez l’application à l’aide de la commande suivante :

    mvn package azure-webapp:deploy
    

Votre déploiement est maintenant terminé.

Plus d’informations