Joomla + Reverse Proxy + authentification CAS

réf : http://doc.ubuntu-fr.org/joomla

contexte : Joomla 1.5.15, PHP 5, CAS3

Installation de la plateforme :

On prépare un serveur LAMP classique avec quelques options supplémentaires :
apt-get install apache2 php5 mysql-server php5-mysql curl php5-curl

On active le mod rewrite d'apache :
a2enmod rewrite
/etc/init.d/apache restart

On crée une base données, un utilisateur nommé joomla et on lui donne les droits sur cette base :
mysql -u root -p

mysql> create database joomla;
mysql> use joomla
mysql> GRANT ALL ON joomla.* TO joomla@localhost IDENTIFIED BY 'Maude Passe';
mysql> FLUSH PRIVILEGES;
mysql> exit;

On récupère la version en cours de Joomla en français (en PJ) et on dézippe :
mkdir /var/www/joomla
cd /var/www/joomla
unzip Joomla_1.5.15-Stable-Full_Package_french.zip
chown -R root:www-data /var/www/joomla
chmod -R g+w ./

Configuration de Joomla :

La configuration se fait directement par une interface web : http://joomla-inside.rdz/joomla/installation où on configure la connexion à la base de données essentiellement.

On crée ensuite un virtual apache et on y intègre les règles de réécriture livrées dans le joomla/htaccess.txt :
nano /etc/apache2/sites-avalaible/iut-rodez.conf

NameVirtualHost 10.10.10.60:80
<VirtualHost 10.10.10.60:80>
        ServerName joomla-inside.rdz
        DocumentRoot /var/www/joomla
        <Directory /var/www/joomla>
                Options Indexes MultiViews
                Options +FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        <Location />
                RewriteBase /
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteCond %{REQUEST_URI} !^/index.php
                RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
                RewriteRule (.*) index.php
                RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
        </Location>
        ErrorLog /var/log/apache2/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel debug
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>



Et on l'active :
a2dissite default
a2ensite iut-rodez.conf
/etc/init.d/apache2 force-reload

On peut alors activer dans Joomla aussi bien les URL friendly SEF que la réécriture d'URL.

Paramétrage Reverse Proxy :

On est derrière un reverse proxy. Joomla, pour une raison que je n'arrive pas à comprendre, n'écrit pas tous ses liens de façon relative dans les pages. Il va donc falloir demander au reverse proxy de faire de la réécriture de liens dans les pages html à la volée.

Sur le reverse proxy, on installe donc le module apache mod_proxy :
apt-get install libapache2-mod-proxy-html
a2enmod proxy_html
 et on finalise la configuration du virtual host comme ceci :
# Redirecteur joomla-public.fr port 80
<VirtualHost 193.54.203.133:80>
  ServerName joomla-public.fr
  ProxyRequests off
  ProxyPass          /          http://joomla-inside.rdz/
#  ProxyHTMLURLMap http://joomla-inside.rdz /
  <Location />
         # ProxyHTMLEnable On
          SetOutputFilter proxy-html
          ProxyPassReverse   http://joomla-inside.rdz/
          ProxyHTMLURLMap    http://joomla-inside.rdz  http://joomla-public.fr
  </Location>
</VirtualHost>

Authentification CAS :

Dans Joomla, à partir du menu 'Extenstion/Installer-Désintaller', on télécharge, depuis http://joomlacode.org/gf/project/auth_manager/frs/, dans l'ordre indiqué les paquets :
  • com_externallogin
  • com_caslogin
L'explication sur la façon de les activer ensuite se trouve dans le fichier texte nommé INSTALL :
  • Dans Composants/Connexions externes/Gestionnaires de serveurs, créer un nouveau Serveur :
  • choisir où il doit s'appliquer (interface admin et/ou publique)
  • saisir le paramètre URL du serveur CAS (sans "https://") : monserveurcas.fr, répertoire /cas
  • sauver
  • Vérifier dans le Gestionnaire de restrictions que l'accès est bien autorisé des réseaux voulus (y compris proxy)

Comme Joomla est derrière un reverse proxy, il va falloir qu'il donne au serveur CAS une adresse de retour différente de celle de l'hôte qui l'héberge. On positionne alors la variable $live_site de joomla/configuration.php à la valeur du serveur public.

nano configuration.php

// mettre à jour la ligne ci-dessous
var $live_site = 'http://joomla-public.fr';

Les utilisateurs authentifiés par login dans CAS sont alors vus sous l'identifiant monserveurcas.fr:443/cas@login dans Joomla.

ċ
Joomla_1.5.15-Stable-Full_Package_french.zip
(6881k)
Jérôme Bousquié,
25 mars 2010 à 06:22
Comments