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.
Télécharger et installer le module Webserver Auth, en le décompressant dans le répertoire modules/.
Aller dans l'interface administration et activer le module Webserver Auth.
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>
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.
Avec la solution ci-dessus, tout le site Drupal sera protégé, ainsi aucun accès anonyme ne sera autorisé.
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>