Déployer des applications Java JBoss EAP sur Azure App Service
Cet article explique comment déployer une application JBoss EAP avec la 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 :
- Activer la connexion pour les applications Java JBoss EAP à l’aide de Microsoft Entra ID
- Activer la connexion pour les applications Java JBoss EAP à l’aide de MSAL4J avec Azure Active Directory B2C
- Activer les applications Java JBoss EAP pour connecter des utilisateurs et accéder à Microsoft Graph
- sécuriser les applications Java JBoss EAP à l’aide de rôles et de revendications de rôle
- Sécuriser les applications Java JBoss EAP à l’aide de groupes et de revendications de groupe
Conditions préalables
Plugin Maven pour les applications Azure App Service
Si Maven n’est pas votre outil de développement préféré, consultez les didacticiels similaires suivants qui utilisent d’autres outils :
Configurer le plug-in Maven
Le processus de déploiement vers Azure App Service 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 auprès d’OAuth ou de 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 :
Exécutez la commande Maven indiquée ci-dessous pour configurer le déploiement. Cette commande vous aide à configurer le système d’exploitation App Service, la version Java et la version de Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
Pour Créer une nouvelle configuration d’exécution, appuyez sur Y, puis sur Entrée.
Pour Définir la valeur du système d’exploitation, appuyez sur 2 pour Linux, puis sur Entrée.
Pour Définir la valeur pour javaVersion, appuyez sur 2 pour Java 11, puis appuyez sur Entrée.
Pour Définir la valeur de webContainer, appuyez sur 1 pour JBosseap7, puis sur Entrée.
Pour Définir la valeur de pricingTier, appuyez sur Entrée pour sélectionner le niveau P1v3 par défaut.
Pour Confirmer, appuyez sur Y, puis sur Entrée.
L’exemple suivant montre la sortie du processus de déploiement :
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Une fois que vous avez confirmé vos choix, le plug-in ajoute la configuration du plug-in et les paramètres requis au fichier 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 | Version |
---|---|---|---|
schemaVersion |
faux | Version du schéma de configuration. Les valeurs prises en charge sont v1 et v2 . |
1.5.2 |
subscriptionId |
faux | ID d’abonnement. | 0.1.0+ |
resourceGroup |
vrai | Groupe de ressources Azure pour votre application. | 0.1.0+ |
appName |
vrai | Nom de votre application. | 0.1.0+ |
region |
faux | Région dans laquelle héberger votre application. La valeur par défaut est centralus . Pour connaître les régions valides, consultez régions prises en charge. |
0.1.0+ |
pricingTier |
faux | 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 en savoir plus, consultez Tarification d’App Service |
0.1.0+ |
runtime |
faux | Configuration de l’environnement d’exécution. Pour plus d’informations, consultez Détails de configuration. | 0.1.0+ |
deployment |
faux | Configuration du déploiement. Pour plus d’informations, consultez Détails de configuration. | 0.1.0+ |
Pour obtenir la liste complète des configurations, consultez la documentation de référence du 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 application Azure : Détails de configuration.
Veillez à enregistrer les valeurs appName
et resourceGroup
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 :
Accédez au fichier authentication. properties
de votre application et remplacez la valeur de par le nom de domaine de votre application déployée, comme illustré dans l’exemple suivant. Par exemple, si vous avez choisi example-domain
pour le nom de votre application à l’étape précédente, vous devez maintenant utiliserhttps://example-domain.azurewebsites.net
pour la valeur deapp.homePage
. Assurez-vous que vous avez également modifié le protocole dehttp
enhttps
.# 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
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 apporter cette modification, procédez comme suit :
Accédez à la page Inscriptions des applications de la plateforme d’identité Microsoft pour les développeurs.
Utilisez la zone de recherche pour rechercher l’inscription de votre application , par exemple,
java-servlet-webapp-authentication
.Ouvrez l'enregistrement de votre application en sélectionnant son nom.
Dans le menu, sélectionnez Authentification.
Dans la section Web - Redirection des URI, sélectionnez Ajouter un URI.
Renseignez l’URI de votre application, en ajoutant
/auth/redirect
, par exemple,https://<your-app-name>.azurewebsites.net/auth/redirect
.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 paramètre aad.secret
. Il n’est pas recommandé de conserver cette valeur dans ce fichier. Vous pourriez également prendre un risque en le commettant 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 références Key Vault pour la rendre disponible dans votre application.
Procédez comme suit pour déplacer la valeur de aad.secret
vers Key Vault et l’utiliser dans votre code :
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
Utilisez les commandes suivantes pour ajouter la valeur secrète
aad.secret
à votre coffre-fort de clés en tant que nouveau secret :az keyvault secret set \ --vault-name $KEY_VAULT \ --name "AADSECRET" \ --value "<the-value-of-your-client-secret>"
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
Utilisez les commandes suivantes pour donner à cette identité
get
etlist
la permission sur les secrets de votre Key Vault :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
Utilisez la commande suivante pour créer un paramètre d'application dans votre application qui utilise une référence de coffre-fort de clés au secret dans votre coffre-fort 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)'
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");
Vous pouvez maintenant supprimer la clé et la valeur
aad.secret
du fichier authentication.properties.Régénérez le code à l’aide de la commande suivante :
mvn clean package
Redéployez l’application à l’aide de la commande suivante :
mvn package azure-webapp:deploy
Votre déploiement est maintenant terminé.
Plus d’informations
- Bibliothèque d’authentification Microsoft (MSAL) pour Java
- plateforme d'identité Microsoft
- Démarrage rapide : Inscrire une application auprès de la plateforme d’identités Microsoft
- Comprendre les expériences de consentement de l’application Microsoft Entra ID
- Comprendre le consentement de l’utilisateur et de l’administrateur
- exemples de code MSAL