Problème, Question

Configuration suivante : WebServer IHS avec module Dispatcher configuré, qui en retour pointe vers un rendu de serveur d'applications WebSphere depuis une instance CQ en cours d’exécution. Un script de classe ou jsp dans CQ appelle la méthode response.sendRedirect() qui provoque une mauvaise redirection : le nom de serveur interne et le port de l'application-serveur WebSphere non accessible depuis l'extérieur sont exposés à l’emplacement de l'en-tête de réponse, utilisé pour effectuer la redirection en question.

La cause de ce problème est WebSphere, la méthode d'application HttpServletResponse#sendRedirect() de IBM étant directement influencée par les en-têtes de requête personnalisés par défaut qui sont générés par le module externe IHS de WebSphere. Ce problème est considéré comme un cas de verrouillage par un fournisseur IBM.

Résolution, réponse

En utilisant mod_headers dans IHS WebServer, il est possible de transmettre les en-têtes spécifiques à WebServer à l'application-serveur en ajoutant ces en-têtes avec la directive RequestHeader. En outre, ces en-têtes personnalisés doivent être explicitement autorisés dans la configuration Dispatcher, sans quoi ils seront ignorés.

Exemple :

  • domaine public : http://www.mydomain.com

Configuration IHS

Modifiez le fichier de configuration httpd.conf du serveur web IHS et procédez comme suit :

  • Assurez-vous que le module mod_headers est présent et chargé
  • Ajoutez des en-têtes spécifiques WAS à l’aide de la directive RequestHeader

Exemple (extrait de httpd.conf) :

...
LoadModule headers_module modules/mod_headers.so
...
<Directory />
    <IfModule disp_apache2.c>
        # set custom Websphere headers
        RequestHeader set $WSSN www.mydomain.com
        RequestHeader set $WSSP 80
		
        SetHandler dispatcher-handler
    </IfModule>
    Options FollowSymLinks
</Directory>

Configuration de Dispatcher

Au niveau répartiteur, il est nécessaire d’ajouter la liste des en-têtes de requête configurées ci-dessus à la liste des en-têtes de client que le répartiteur transmettra à la ferme de rendu définie, Websphere app-server dans ce cas.

Procédez comme suit :

  • Modifiez le fichier de configuration dispatcher.any.
  • Recherchez la section /clientheaders et ajoutez des en-têtes supplémentaires à inclure.
  • Redémarrage IHS

Exemple (extrait de dispatcher.any) :

...
  /clientheaders
    {
    ...
    "$WSSN"
    "$WSSP"
    }
...

Configuration de Websphere

L’en-tête Websphere $WSSP spécifie le port et $WSSN définit le nom d’hôte à utiliser lorsque response.sendRedirect() est appelé dans Websphere. En outre, le port indiqué dans l’en-tête $WSSP est également utilisé pour localiser l’hôte virtuel dans Websphere.

Connectez-vous à la Console d'administration de Websphere et procédez comme suit :

  • Accédez à Environnement > Hôtes virtuels
  • Sélectionnez la configuration d’hôte virtuelle utilisée pour CQ
  • Cliquez sur Alias d’hôte
  • Ajoutez le port 80
  • Redémarrez Websphere si nécessaire



REMARQUE : ce redémarrage peut s'avérer nécessaire pour ajouter d'autres en-têtes spécifiques de Websphere, selon la configuration utilisée. Consultez le document suivant, qui présente les en-têtes spécifiques de Websphere et leur signification.

Telechargement

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne