3.5.2 Gestion du filtrage des référents

LiveCycle effectue un filtrage des référents afin de spécifier les référents qui sont autorisés à accéder aux ressources du serveur. Par défaut, le filtrage des référents ne filtre pas les requêtes qui utilisent une méthode HTTP sécurisée, par exemple GET, sauf si la variable CSRF_CHECK_GETS est définie sur true. Si le numéro de port pour un référent autorisé est défini sur 0, LiveCycle autorise toutes les requêtes des référents provenant de cet hôte quel que soit le numéro de port. Si aucun numéro de port n’est spécifié, seules les requêtes provenant du port par défaut 80 (HTTP) ou du port 443 (HTTPS) sont autorisées. Le filtrage des référents est désactivé si toutes les entrées de la liste de référents autorisés sont supprimées.

Lorsque vous installez Document Services pour la première fois, la liste de référents autorisés est mise à jour avec l’adresse du serveur sur lequel Document Services est installé. Les entrées pour le serveur comprennent le nom du serveur, l’adresse IPv4, l’adresse IPv6 si le protocole IPv6 est activé, l’adresse de bouclage et une entrée localhost. Les noms ajoutés à la liste des référents autorisés sont renvoyés par le système d’exploitation hôte. Par exemple, un serveur dont l’adresse IP est 10.40.54.187 va inclure les entrées suivantes : http://nom-serveur:0, https://10.40.54.187:0, http://127.0.0.1:0, http://localhost:0. Pour chaque nom non qualifié renvoyé par le système d’exploitation hôte (les noms sans adresse IPv4 ou IPv6, ou sans nom de domaine qualifié) la liste blanche n’est pas mise à jour. Modifiez la liste de référents autorisés en fonction de votre environnement de travail. Ne déployez pas le serveur LiveCycle dans l’environnement de production avec la liste de référents autorisés par défaut. Après avoir modifié l’une des référents autorisés, l’une des exceptions aux référents ou l’un des URI, assurez-vous que vous redémarrez le serveur pour que les modifications prennent effet.

Gestion de la liste de référents autorisés

Vous pouvez gérer la liste de référents autorisés à partir de l’interface User Management d’Administration Console. L’interface User Management offre des fonctionnalités pour créer, éditer ou supprimer la liste. Reportez-vous à la section Prévention d’attaques CSRF du guide Aide à l’administration pour plus d’informations sur l’utilisation de la liste de référents autorisés.

Gestion des exceptions aux référents autorisés et des listes des URI autorisés

LiveCycle fournit des API pour gérer la liste des exceptions aux référents autorisé et la liste des URI autorisés. Vous pouvez utiliser ces API pour récupérer, créer, éditer ou supprimer la liste. Voici la liste des API disponibles :

  • createAllowedURIsList

  • getAllowedURIsList

  • updateAllowedURIsList

  • deleteAllowedURIsList

  • addAllowedRefererExceptions

  • getAllowedRefererExceptions

  • updateAllowedRefererExceptions

  • deleteAllowedRefererExceptions

Reportez-vous au Guide de référence des API LiveCycle pour plus d’informations sur les API.

Utilisez la liste LC_GLOBAL_ALLOWED_REFERER_EXCEPTION pour les exceptions aux référents autorisés au niveau global, c’est-à-dire pour définir les exceptions qui s’appliquent à toutes les applications. Cette liste contient uniquement des URI contenant soit un chemin absolu (par ex. /index.html), soit un chemin relatif (par ex. /sample/). Vous pouvez également ajouter une expression régulière à la fin d’un URI relatif, par ex. /sample/(.)*.

L’ID de liste LC_GLOBAL_ALLOWED_REFERER_EXCEPTION est définie comme une constante dans la classe UMConstants de l’espace de noms com.adobe.idp.um.api, figurant dans adobe-usermanager-client.jar. Vous pouvez utiliser les API LiveCycle pour créer, modifier ou éditer cette liste. Par exemple, pour créer la liste globale des exceptions aux référents autorisés, utilisez :

addAllowedRefererExceptions(UMConstants.LC_GLOBAL_ALLOWED_REFERER_EXCEPTION, Arrays.asList("/index.html", "/sample/(.)*")) 

Utilisez la liste CSRF_ALLOWED_REFERER_EXCEPTIONS pour les exceptions spécifiques à une application.

Désactivation du filtrage des référents

Dans le cas où le filtrage des référents bloque complètement l’accès au serveur LiveCycle et que vous ne pouvez pas modifier la liste des référents autorisés, vous pouvez mettre à jour le script de démarrage du serveur et désactiver le filtrage des référents.

Incluez l’argument JAVA -Dlc.um.csrffilter.disabled=true dans le script de démarrage et redémarrez le serveur. Assurez-vous de supprimer l’argument JAVA après avoir correctement reconfiguré la liste de référents autorisés.

Filtrage des référents pour les fichiers WAR personnalisés

Vous avez peut-être créé des fichiers WAR personnalisés afin de travailler avec LiveCycle pour répondre aux besoins de l’activité. Pour activer le filtrage des référents pour vos fichiers WAR personnalisés, vous devez inclure adobe-usermanager-client.jar dans le chemin de classe pour les fichiers WAR et inclure une entrée de filtre dans le fichier web.xml avec les paramètres suivants :

La variable CSRF_CHECK_GETS contrôle la vérification du référent sur les requêtes GET. Si ce paramètre n’est pas défini, la valeur par défaut est définie sur false. Incluez ce paramètre uniquement si vous souhaitez filtrer vos requêtes GET.

CSRF_ALLOWED_REFERER_EXCEPTIONS est l’ID de la liste des exceptions aux référents autorisés. Le filtrage des référents empêche les requêtes de référents de la liste identifiés par l’ID de la liste d’appeler toute ressource du serveur LiveCycle.

CSRF_ALLOWED_URIS_LIST_NAME est l’ID de la liste des URI autorisés. Le filtrage des référents ne bloque pas les requêtes concernant les ressources de la liste identifiées par l’ID de liste, quelle que soit la valeur de l’en-tête référent dans la requête.

CSRF_ALLOW_NULL_REFERER contrôle le comportement du filtrage des référents lorsque le référent est null ou non présent. Si ce paramètre n’est pas défini, la valeur par défaut est définie sur false. Incluez uniquement ce paramètre si vous souhaitez autoriser les référents de valeur NULL. L’autorisation des référents de valeur NULL peut permettre certains types d’attaques CSRF (Cross Site Request Forgery).

CSRF_NULL_REFERER_EXCEPTIONS est une liste des URI pour lesquels une vérification référent n’est pas exécutée lorsque le référent est nul. Ce paramètre est activé uniquement lorsque la variable CSRF_ALLOW_NULL_REFERER est définie sur false. Séparez les URI de la liste à l’aide de virgules.

Voici un exemple de l’entrée de filtre dans le fichier web.xml pour un exemple de dossier WAR :

<filter> 
       <filter-name> filter-name </filter-name> 
       <filter-class> com.adobe.idp.um.auth.filter.RemoteCSRFFilter </filter-class> 
     <!-- default is false --> 
     <init-param> 
      <param-name> CSRF_ALLOW_NULL_REFERER </param-name> 
      <param-value> false </param-value> 
     </init-param> 
     <!-- default is false --> 
     <init-param> 
      <param-name> CSRF_CHECK_GETS </param-name> 
      <param-value> true </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
       <param-name> CSRF_NULL_REFERER_EXCEPTIONS </param-name> 
       <param-value> /SAMPLE/login, /SAMPLE/logout  </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
      <param-name> CSRF_ALLOWED_REFERER_EXCEPTIONS </param-name> 
      <param-value> SAMPLE_ALLOWED_REF_EXP_ID </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
      <param-name> CSRF_ALLOWED_URIS_LIST_NAME </param-name> 
      <param-value> SAMPLE_ALLOWED_URI_LIST_ID     </param-value> 
     </init-param> 
</filter> 
    ........ 
    <filter-mapping> 
      <filter-name> filter-name </filter-name> 
      <url-pattern>/*</url-pattern> 
    </filter-mapping>

Dépannage

Si des requêtes serveur légitimes sont bloquées par le filtre CSRF, essayez l’une des méthodes suivantes :

  • Si la requête rejetée a un en-tête référent, il est souhaitable de l’ajouter à liste des référents autorisés. Ajoutez uniquement les références que vous approuvez.

  • Si la requête rejetée ne dispose pas d’un en-tête référent, modifiez votre application client pour inclure un en-tête référent.

  • Si le client peut travailler dans un navigateur, essayez ce modèle de déploiement.

  • En dernier recours, vous pouvez ajouter la ressource à la liste des URI autorisés. Ceci n’est pas un paramètre recommandé.