Maison >Opération et maintenance >Apache >Comment implémenter l'authentification HTTP (Auth Basic, Digest Auth) dans Apache à l'aide de mod_auth_basic et mod_auth_digest?
Implémentation d'authentification de base et de digestion dans Apache à l'aide mod_auth_basic
et mod_auth_digest
implique la configuration des fichiers de configuration hôte ou de répertoire virtuel d'Apache. Commençons par l'authentification de base.
Authentification de base:
mod_auth_basic
est activé. Cela se fait généralement en démontant les LoadModule auth_basic_module modules/mod_auth_basic.so
Line dans votre fichier de configuration Apache ( httpd.conf
ou un fichier de configuration d'hôte virtuel pertinent). Créez un fichier de mot de passe: vous aurez besoin d'un fichier de mot de passe contenant des noms d'utilisateur et leurs mots de passe chiffrés. Apache fournit l'utilitaire htpasswd
pour cela. Utilisez-le pour créer un nouveau fichier (par exemple, .htpasswd
) et ajouter des utilisateurs:
<code class="bash">sudo htpasswd -c /path/to/.htpasswd username</code>
(L'indicateur -c
crée un nouveau fichier; omettez-le pour ajouter des utilisateurs à un fichier existant.) La commande vous invitera à un mot de passe. Répétez ceci pour chaque utilisateur. Surtout, stockez ce fichier en toute sécurité; Son compromis compromet votre authentification.
Configurez Apache: dans votre fichier de configuration Apache, dans le <directory></directory>
ou <location></location>
Block de définition de la zone protégée, ajoutez les directives suivantes:
<code class="apache"><directory> AuthType Basic AuthName "Restricted Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory></code>
Remplacer /path/to/protected/directory
et /path/to/.htpasswd
par les chemins réels. AuthName
définit le nom du royaume affiché à l'utilisateur.
Authentification digérée:
L'authentification digest est plus sécurisée que l'authentification de base car elle évite d'envoyer des mots de passe en texte brut. Le processus est similaire:
mod_auth_digest
est activé (similaire à mod_auth_basic
).htpasswd
qu'auparavant, mais vous voudrez peut-être un fichier de mot de passe séparé pour l'authentification Digest pour garder les choses organisées. Configurer Apache: la configuration est similaire à l'authentification de base, mais avec AuthType
modifié:
<code class="apache"><directory> AuthType Digest AuthName "Restricted Area" AuthUserFile /path/to/.htdigest Require valid-user </directory></code>
Remplacez /path/to/.htdigest
par le chemin du fichier de mot de passe Digest.
Authentification de base: transmet des noms d'utilisateur et des mots de passe en texte brut (base64 encodé, mais facilement décodé). Cela le rend vulnérable à l'écoute si la connexion n'est pas sécurisée avec HTTPS. N'utilisez jamais d'authentification de base sans HTTPS.
Authentification digérée: plus sécurisée. Il transmet un hachage du mot de passe, empêchant l'écoute de révéler le mot de passe réel. Bien que nettement plus sécurisé que l'authentification de base, il est toujours vulnérable à certaines attaques comme les attaques de relecture et les attaques de l'homme au milieu si elle n'est pas correctement implémentée dans un contexte sécurisé (HTTPS).
Apache permet un contrôle à grains fins sur l'authentification à l'aide des directives <directory></directory>
et <location></location>
.
<directory></directory>
: applique l'authentification à un répertoire entier et à ses sous-répertoires. Le chemin spécifié doit être absolu.<location></location>
: Applique l'authentification à des URL spécifiques, quel que soit leur emplacement sur le système de fichiers. Ceci est utile pour protéger des scripts ou des pages spécifiques. Exemple: pour protéger uniquement /private
et ses sous-répertoires, mais pas /public
:
<code class="apache"><directory> AuthType Basic AuthName "Private Area" AuthUserFile /path/to/.htpasswd Require valid-user </directory> <directory> # No authentication required here </directory></code>
N'oubliez pas de redémarrer Apache après avoir apporté des modifications à la configuration ( sudo systemctl restart apache2
sur Debian / Ubuntu).
Les informations d'identification de l'utilisateur sont gérées via l'utilitaire htpasswd
.
htpasswd -m /path/to/.htpasswd newuser
(l'option -m
utilise un algorithme de hachage MD5 plus sécurisé).htpasswd /path/to/.htpasswd existinguser
. Cela vous invitera pour le nouveau mot de passe.htpasswd
. L'approche la plus sûre consiste à créer un nouveau fichier de mot de passe avec les utilisateurs souhaités, puis à remplacer l'ancien. Vous devrez vous assurer que tous les processus Apache sont arrêtés avant de le faire.N'oubliez pas d'utiliser toujours HTTPS lors de la mise en œuvre de l'authentification HTTP pour se protéger contre l'écoute. Considérez des méthodes d'authentification plus robustes comme OAuth 2.0 ou OpenID Connect pour une sécurité accrue dans les environnements de production.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!