-Supposons que vous souhaitiez restreindre l’accès d’un répertoire de votre site aux seuls utilisateurs autorisés authentifiés via un mot de passe stocké dans une base de données MySQL/MariaDB
-Supposons que ce répertoire soit /home/SITE/www/Admin/
-Supposons que la base de donnée soit nommée DBNAME, que l’utilisateur MySQL DBUSER soit autorisé à y accéder via le mot de passe DBPASSWORD
-Supposons que la table MySQL de contenant la liste des utilisateurs autorisés ait été créé ainsi
CREATE TABLE SiteAdmins (
admin_login varchar(16) NOT NULL DEFAULT '',
admin_password varchar(16) NOT NULL DEFAULT 'DESIRED_DEFAULT_PASSWORD',
admin_email varchar(255) NOT NULL DEFAULT 'default_email@site.tld',
admin_pseudo varchar(16) DEFAULT NULL,
admin_firstname varchar(16) DEFAULT NULL,
admin_name varchar(16) DEFAULT NULL,
PRIMARY KEY (admin_login),
KEY admin_pseudo (admin_pseudo)
) ENGINE=InnoDB DEFAULT
-Supposons qu’un administrateur du site ait l’identifiant TESTDEMO avec le mot de passe TESDEMOPASSWORD
Il aurait été créé ainsi :
INSERT INTO Admin (admin_login, admin_password) VALUES ('TESTDEMO','TESDEMOPASSWORD');
Voici comment procéder
1° Installer la librairie nécessaire
aptitude install libaprutil1-dbd-mysql
2° Activer les modules apache
a2enmod authn_dbd dbd
3° Ajouter les instructions suivantes à votre virtualhost
<IfModule mod_dbd.c>
DBDriver mysql
DBDParams "dbname=DBNAME user=DBUSER pass=DBPASSWORD"
DBDMin 1
DBDKeep 1
DBDMax 20
DBDExptime 10
DBDPersist Off
</IfModule>
<Directory /home/SITE/www/Admin/>
AuthName "SITE-Admin Area"
AuthType Basic
AuthBasicProvider dbd
AuthDBDUserPWQuery "SELECT encrypt(admin_password) AS password FROM Admin WHERE admin_login = %s"
Require valid-user
</Directory>
4° Redemarrer Apache
systemctl restart apache2