Home > PHP > Coder un système d’authentification : Apache ET bases de données

Coder un système d’authentification : Apache ET bases de données

Quand on veut gérer un système d’authentification en PHP pour un intranet (qui demande plus de rigueur et de sécurité qu’un site internet), on se retrouve à priori avec deux solutions valables: soit un formulaire relié à une base de données, le classique du Web/frontoffice, soit un fichier htpasswd, le classique du Backoffice, plus sûr mais moins flexible (notamment au niveau de l’ajout d’utilisateur ou de la gestion des droits d’accès). J’ai mis longtemps à me rendre compte qu’on pouvait mixer les deux pour avoir quelque chose de souple et de fiable.

En manipulant les headers Apache en PHP, on peut forcer le serveur à demander une authentification au visiteur, comme avec un .htaccess/htpasswd. Il suffit pour cela d’ajouter :

  1. header(‘WWW-Authenticate: Basic realm="Administration – Accès restreint"’);
  2. header(‘HTTP/1.0 401 Unauthorized’);

Quand on arrive sur la page, une “jolie” boite apparaît :
Exemple de boite de dialogue d\'authentification
C’est en faisant un var_dump($_SERVER) sur l’index du dossier qu’on remarque les deux variables qui vont nous servir : PHP_AUTH_USER et PHP_AUTH_PW. Celles-ci contiennent les valeurs des deux champs de la boîte de dialogue qu’Apache a fait remplir à votre visiteur. En y pluggant un système de login “classique”, qui va chercher une correspondance entre ces données et celles contenues dans une base de données, on se retrouve avec un module de login par headers http, envoyés par php, et couplé à une base de données dans laquelle on peut, notamment, stocker un niveau d’accès pour chaque utilisateur (et utiliser le Bit Bashing…)

Ce post vous a été utile ? Re-Twittez le ! ReTwittez ce post

PHP , , , ,

  1. | #1

    Encore un tuto bien utile !

    Il me semble en plus qu’il y a un moyen de customizer le display de la box .htpasswd non ?

    Parce que la vieille fenetre modale du navigateur, ca fait secure mais cest cheum :)

    Keep up the good work !

  2. Didier
    | #2

    Gab: je ne pense pas qu’on puise redesigner les fenêtres modales, ça voudrait dire qu’on peut changer l’apparence d’un alert() en Javascript. C’est surement trop spécifique à chaque browser et embarqué en dur.
    Si je me trompe, faites-moi signe :)

  1. No trackbacks yet.