Priver son WordPress : LDAP, accès membres uniquement…

closeCet article a été publié il y a 15 ans 6 mois 11 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

WordPress est un outil de blog (un CMS diront certains) que je trouve assez sympa. Son premier but est de pouvoir publier facilement un blog, c’est-à-dire publier du contenu. Il n’est cependant pas trop prévu pour publier du contenu à accès restreint.

Dans les dernières versions, on voit des options pour protéger par mot de passe un article (ou une page). Mais ça s’arrête là, mais ça peut suffire dans bien des cas.
J’avais besoin de monter un site rapidement avec quelques pages statiques et des news, facilement éditables. WordPress convenait donc, mais dans un contexte entreprise, il fallait priver l’intégralité de l’accès.
En cherchant un peu, on trouve donc 2 plug-ins parfaits pour ça.
Voici ce retour d’expérience : installer WordPress avec authentification LDAP et contenu complètement privé (members-only).

Installation

Je suis parti sur une version SVN (la 2.6.2) car elle permet d’utiliser des plug-ins récents, qui ne fonctionnent pas pour ma version “stable” Debian (2.0.x). J’ai donc tout fait à la main, je vous résume ceci.

Préparation de la base MySQL

En console mysql, vous taperez par exemple :

CREATE DATABASE wordpress;
CREATE USER ‘wpadmin’@'localhost’ IDENTIFIED BY ‘mon_passwd’;
GRANT ALL ON wordpress.* TO ‘wpadmin’@'localhost’;

Ceci vous crée la base vide et un utilisateur d’administration.

Installation et configuration de l’application

Je schématise, côté OS et téléchargement de l’application :

mkdir /srv/www/wordpress
cd /srv/www/wordpress
svn co http://svn.automattic.com/wordpress/trunk/ 

Vous éditerez alors votre fichier /srv/www/wordpress/trunk/wp-config.php pour y renseigner au moins les champs suivants :

define(’DB_NAME’, ‘wordpress’);
define(’DB_USER’, ‘wpadmin’);
define(’DB_PASSWORD’, ‘mon_passwd’);
define(’DB_HOST’, ‘localhost’);

Vous ajouterez la conf Apache qui va bien (VirtualHost ou non), avec au moins ceci :

< Directory> # sans l'espace
    Options FollowSymLinks
    AllowOverride Limit Options FileInfo
    DirectoryIndex index.php
< /Directory> # sans l'espace

Du classique, je ne détaille pas trop, je me concentre sur WordPress, pas Apache2.

Lancement de l’installeur

Ensuite, vous irez sur http://votre_site/votre_blog/wp-admin/install.php pour lancer l’installation en 2/3 clics.
Vous voilà avec un wordpress tout vide et opérationnel.
Je passe sur le tour du propriétaire, j’enchaîne directement sur le choix et l’installation des plug-ins qui vont bien.

Les plug-in LDAP

Il y en a plusieurs, plus ou moins suivi, plus ou moins compatibles avec votre version de WordPress. J’ai trouvé sur le site notamment celui-ci (wpDirAuth) compatible avec plein de LDAP, notamment OpenLDAP.
Après 2 heures de galère, on apprend que la version officielle sur ce site (1.2) n’est pas compatible avec WordPress 2.6+.
Vous utiliserez donc la version 1.3 disponible ici.
L’installation est classique, en gros :

cd /srv/www/wordpress/trunk/wp-content/plugins
wget http://www.royal.wednet.edu/~ayearout/wpDirAuth-1.3.zip
unzip wpDirAuth-1.3.zip

Puis activation du plugin dans l’interface d’administration de WordPress. Classique. Son paramétrage ressemble à ceci, très complet :

plug-in LDAP pour WordPress

Plug-in “members-only”

Enfin, ce plug-in permet de faire en sorte qu’il faille être connecté pour accéder au moindre contenu. Par défaut, vous êtes donc redirigé vers la page d’authentification.

plug-in \"members-only\" pour WordPress

Et voilà le travail