Drupal

Présentation

Drupal est un CMS écrit en PHP. Il peut utiliser des modules externes pour étendre ses fonctionnalités. L'un de ses modules peut être utilisé pour déléger l'authentification serveur au serveur web : Webserver Auth.

Installation

Télécharger et installer le module Webserver Auth, en le décompressant dans le répertoire modules/.

Configuration

Activation du module Drupal

Aller dans l'interface administration et activer le module Webserver Auth.

Hôte virtuel Apache hébergeant Drupal

Configurer l'hôte virtuel Drupal comme n'importe quel autre hôte virtuel protégé.

<VirtualHost *:80>
       ServerName drupal.example.com
 
       PerlHeaderParserHandler Lemonldap::NG::Handler
 
       ...
 
</VirtualHost>

Si Drupal est protégé par un reverse-proxy LL::NG, convertir l'en-tête en variable d'environnement REMOTE_USER.

Hôte virtuel Drupal dans le manager

Aller dans le manager et créer un nouvel hôte virtuel pour Drupal.

Configurer simplement la règle d'accès.

Si LL::NG est utilisé par reverse-proxy, configurer l'en-tête Auth-User, aucun autre en-tête n'est utile.

Protéger seulement la page d'administration

Avec la solution ci-dessus, tout le site Drupal sera protégé, ainsi aucun accès anonyme ne sera autorisé.

Vous ne pouvez pas utiliser la règle unprotect car la navigation Drupal est basée sur des requêtes basées sur des attributs (?q=admin, ?q=user, etc.), et la règle unprotect ne fonctionne que sur des correspondances d'URL.

Vous pouvez créer un hôte virtuel particulier et utiliser le module rewrite d'Apache pour choisir entre le site ouvert et le protégé :

<VirtualHost *:80>
    ServerName drupal.example.com
 
    # DocumentRoot
    DocumentRoot /var/www/html/drupal/
    DirectoryIndex index.php
 
    # Redirect admin pages
    RewriteEngine On
    RewriteCond  %{QUERY_STRING} q=(admin|user)
    RewriteRule ^/(.*)$ http://admindrupal.example.com/$1 [R]
 
    LogLevel warn
    ErrorLog /var/log/httpd/drupal-error.log
    CustomLog /var/log/httpd/drupal-access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerName admindrupal.example.com
 
    # Protection SSO
    PerlHeaderParserHandler Lemonldap::NG::Handler
 
    # DocumentRoot
    DocumentRoot /var/www/html/drupal/
    DirectoryIndex index.php
 
    LogLevel warn
    ErrorLog /var/log/httpd/admindrupal-error.log
    CustomLog /var/log/httpd/admindrupal-access.log combined
</VirtualHost>