Créer un accès HTTP avec authentification pour un répertoire avec APACHE 2.4 sous DEBIAN

Sur un serveur WEB, il est possible de créer un espace (répertoires, sous répertoires et fichiers), sans pour autant laisser l’accès à tout visiteur public.
Il est possible de limiter les accès comme sur un système, en fonction d’utilisateurs ou de groupes.

Apache propose des directives pour effectuer ceci (http://httpd.apache.org/docs/2.4/fr/howto/auth.html).

Bien sûr selon les cas, certains modules devront être activés afin que les authentifications respectives fonctionnent. Sous Debian, l’activation et la désactivation de modules est très simplifié à l’aide des commandes a2enmod et a2dismod comme leurs équivalents a2ensite et a2dissite :

a2enmod "module a activer"

Attention : lors de chaque changements de apache : fichiers de configurations ou chargement/déchargement de modules, n’oubliez pas de redémarrer le service Apache :

service apache2 restart

Il existe 2 manières d’atteindre cet objectif.
La 1° qui est la plus conseillée, mais qui nécessite un accès au fichiers de configuration principal du site Apache Httpd, et d’inclure cette authentification dans une directive <Directory>.
La 2° est l’utilisation d’un fichier .htaccess où l’on fera les mêmes déclaration que dans le fichier de configuration sans la directive <Directory> nécessaire en cas d’hébergement ou si vous ne disposez pas d’un accès aux fichiers de configs.

Quoi qu’il en soit, le fichier de configuration global d’Apache doit permettre l’utilisation de ces directives (AllowOverride all ou AllowOverride « les directives nécessaires« ) et l’utilisation de .htaccess :

<Directory "/var/www/.../Private/">
	AllowOverride all
</Directory>

Il y a 3 sortes d’authentification possible sous HTTP : Basic, Digest & Form.

Authentification Basic

Le module « auth_basic » doit être activé. L’authentification Basic ne chiffre pas du tout les mot de passes, et ceux-ci transit en clair entre client/serveur, il est donc très facile d’intercepter ces mots de passes.

Voici les directives à inclure dans le fichier .htaccess situé à la racine du répertoire à protéger, dans le cadre de leur utilisation dans le fichier de configuration, ces directives seront identiques en les encadrants des directives <Directory> :

<Directory "chemin du répertoire/">

AuthName "Espace Privé"
AuthType Basic
AuthBasicProvider file
AuthUserFile "/chemin vers le fichier d'utilisateurs & passwords/.htpasswd$"
Require valid-user

</Directory>

La directive AuthUserFile spécifie le chemin du fichier qui contiendra la liste des utilisateurs. Il s’agit d’un simple fichier texte avec la syntaxe suivante :

utilisateur:motdepasse

Le mot de passe peut être en clair, mais ceci ne fonctionnera pas sous les systèmes UNIX-like, qui doivent absolument être chiffrés. Apache propose un outil htpasswd qui permet de créer le fichier et chiffrer le motdepasse sans difficultés :

$ htpasswd -c "/chemin/.htpasswd$" user

Il suffit ensuite de taper deux fois le motdepasse choisis et le fichier correspondant sera créer, pour ajouter des utilisateurs, il suffit d’enlever l’option -c.

Essayer d’accéder au répertoire en tapant dans un navigateur son adresse http://site/RépertoireProtégé, le navigateur devrait vous présenter une fenêtre d’authentification.

Authentification Digest

L’authentification Digest permet de s’authentifier sans faire transiter en clair les mots de passe qui seront chiffrés. Cette authentification nécessite les modules auth_digest et ssl.

Les directives pour l’authentification Digest ressemblent à l’authentification Basic :


AuthName "Espace Prive"
AuthType Digest

AuthDigestProvider file
AuthUserFile "/chemin vers le fichier d'utilisateurs & passwords/.Passw0rDigest"
Require valid-user

La création du fichier d’autorisation differt légèrement de l’authentification Basic et l’outil pour le créer n’est pas le même htdigest :

$ htdigest -c "/chemin/.htpasswDigest" realm user

Où realm doit correspondre au domaine du site ou au nom attribué à l’aide de la directive AuthName.

Authentification Form

L’authentification à base de formulaire nécessite de créer une page html avec une section formulaire, et nécessite donc un peu de connaissance html.
Je vous invite à consulter la page de la documentation apache pour l’authentification par formulaire :

http://httpd.apache.org/docs/2.4/fr/mod/mod_auth_form.html

Laisser un commentaire