Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer des paramètres de sécurité propres à Java dans App Service. Les applications Java qui s’exécutent dans App Service ont le même ensemble de bonnes pratiques de sécurité que d’autres applications.
Azure App Service exécute des applications web Java en trois types sur un service entièrement managé :
- Java Standard Edition (SE). Java SE peut exécuter une application déployée en tant que package d’archive Java (JAR) qui contient un serveur incorporé, tel que Spring Boot, Bézierus, Dropwizard ou une application avec un serveur Tomcat ou Jetty incorporé.
- Tomcat. Le serveur Tomcat intégré peut exécuter une application déployée en tant que package WAR (Web Application Archive).
- JBoss Enterprise Application Platform (EAP) : le serveur JBoss EAP intégré peut exécuter une application déployée en tant que package WAR ou enterprise archive (EAR). Cette option est prise en charge pour les applications Linux dans un ensemble de niveaux tarifaires incluant Free, Premium v3 et Isolé v2.
Note
JBoss EAP sur App Service prend désormais en charge la facturation BYOL (Bring Your Own License). BYOL permet aux clients disposant d’abonnements Red Hat existants d’appliquer ces licences directement à leurs déploiements JBoss EAP sur Azure App Service. Pour plus d’informations, consultez le soutien BYOL pour JBoss EAP sur App Service.
Authentifier les utilisateurs (authentification facile)
Configurez l’authentification de l’application dans le portail Azure avec l’option Authentification et autorisation. À partir de là, vous pouvez activer l’authentification en utilisant Microsoft Entra ID ou des infos d’identification des réseaux sociaux tels que Facebook, Google ou GitHub. La configuration du portail Azure fonctionne seulement si vous configurez un seul fournisseur d’authentification. Si vous souhaitez obtenir plus d’informations, consultez Configurer votre application App Service pour utiliser une connexion Microsoft Entra et les articles connexes pour d’autres fournisseurs d’identités. Si vous devez activer plusieurs fournisseurs de connexion, consultez Personnaliser les connexions et les déconnexions.
Les développeurs Spring Boot peuvent utiliser le démarreur Spring Boot Microsoft Entra pour sécuriser des applications en tirant parti d’API et d’annotations Spring Security connues. Veillez à augmenter la taille d’en-tête maximale dans votre fichier application.properties. Nous vous suggérons une valeur de 16384.
Votre application Tomcat peut accéder directement aux données de revendications de l’utilisateur à partir du servlet en transformant l'objet Principal en objet Map. L’objet Map mappe chaque type de revendication avec une collection des revendications de ce type. Dans l’exemple de code suivant, request est une instance de HttpServletRequest.
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Vous pouvez maintenant inspecter l’objet Map pour une revendication spécifique. Par exemple, l’extrait de code suivant parcourt tous les types de réclamations et imprime le contenu de chaque collection.
for (Object key : map.keySet()) {
Object value = map.get(key);
if (value != null && value instanceof Collection {
Collection claims = (Collection) value;
for (Object claim : claims) {
System.out.println(claims);
}
}
}
Pour déconnecter les utilisateurs, utilisez le chemin /.auth/ext/logout. Pour effectuer d’autres actions, consultez Personnaliser les connexions et les déconnexions. Il existe également une documentation officielle sur l’interface HttpServletRequest de Tomcat et ses méthodes. Les méthodes servlet suivantes sont également initialisées en fonction de la configuration de votre App Service :
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Pour désactiver cette fonctionnalité, créez un paramètre d’application nommé WEBSITE_AUTH_SKIP_PRINCIPAL avec la valeur 1. Pour désactiver tous les filtres de servlet ajoutés par App Service, créez un paramètre nommé WEBSITE_SKIP_FILTERS avec la valeur 1.
Pour JBoss EAP, consultez l’onglet Tomcat.
Configurer TLS
Pour charger un certificat TLS existant et le lier au nom de domaine de votre application, consultez Activer HTTPS pour un domaine personnalisé dans Azure App Service. Vous pouvez également configurer l’application pour appliquer TLS.
Utiliser les références de Azure Key Vault
Azure Key Vault fournit une gestion centralisée des secrets avec les stratégies d’accès et l’historique d’audit. Vous pouvez stocker des secrets, tels que des mots de passe ou des chaînes de connexion, dans un coffre de clés. Vous pouvez accéder à ces secrets dans votre application via des variables d’environnement.
Tout d’abord, accordez à votre application l’accès à un coffre de clés et faites référence à votre secret dans un paramètre d’application. Vous pouvez valider que la référence se résout vers le secret en affichant la variable d’environnement lors de l'accès à distance au terminal App Service.
Pour les fichiers de configuration Spring, consultez Configuration externalisée.
Pour injecter ces secrets dans votre fichier de configuration Spring, utilisez la syntaxe d’injection de variable d’environnement (${MY_ENV_VAR}).
Pour injecter ces secrets dans votre fichier de configuration Tomcat, utilisez la syntaxe d’injection de variable d’environnement (${MY_ENV_VAR}).
Utiliser le magasin de clés Java dans Linux
Par défaut, tous les certificats publics ou privés chargés sur App Service Linux sont chargés dans les magasins de clés Java respectifs au démarrage du conteneur. Après avoir chargé votre certificat, vous devez redémarrer votre App Service pour qu’il se charge dans le magasin de clés Java. Les certificats publics sont importés dans le magasin de clés à l’adresse $JRE_HOME/lib/security/cacerts. Les certificats privés sont stockés dans $JRE_HOME/lib/security/client.jks.
Une configuration supplémentaire peut être nécessaire pour chiffrer votre connexion JDBC avec des certificats dans le magasin de clés Java :
Initialiser le magasin de clés Java dans Linux
Pour initialiser l’objet import java.security.KeyStore, chargez le fichier de magasin de clés avec le mot de passe. Le mot de passe par défaut pour les deux magasins de clés est changeit.
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/cacerts"),
"changeit".toCharArray());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/client.jks"),
"changeit".toCharArray());
Charger manuellement le magasin de clés dans Linux
Vous pouvez charger les certificats manuellement dans le magasin de clés. Pour empêcher App Service de charger automatiquement les certificats dans le magasin de clés, créez un paramètre d'application, SKIP_JAVA_KEYSTORE_LOAD avec la valeur 1. Tous les certificats publics chargés sur App Service à l’aide du portail Azure sont stockés sous /var/ssl/certs/. Les certificats privés sont stockés sous /var/ssl/private/.
Pour interagir ou déboguer l’outil de clé Java, ouvrez une connexion SSH à votre App Service et exécutez la commande keytool. Consultez la documentation de Key Tool pour obtenir une liste des commandes. Pour plus d’informations sur l’API KeyStore, consultez Classe KeyStore.
Contenu connexe
Visitez le centre Azure pour les développeurs Java pour trouver des guides de démarrage rapide Azure, des tutoriels et la documentation de référence Java.