mod_auth_digest Authentification utilisateur utilisant les condensés MD5 Extension mod_auth_digest.c auth_digest_module

Ce module implémente l'authentification HTTP basée sur les condensés MD5 (RFC2617), et fournit une alternative à mod_auth_basic en ne transmettant plus le mot de passe en clair. Cependant, cela ne suffit pas pour améliorer la sécurité de manière significative par rapport à l'authentification basique. En outre, le stockage du mot de passe sur le serveur est encore moins sûr dans le cas d'une authentification à base de condensé que dans le cas d'une authentification basique. C'est pourquoi l'utilisation de l'authentification basique associée à un chiffrement de la connexion via mod_ssl constitue une bien meilleure alternative.

AuthName AuthType Require Mode d'emploi de l'authentification
Utilisation de l'authentification à base de condensés

Pour utiliser l'authentification à base de condensés MD5, configurez la protection de la section Location comme dans l'exemple ci-dessous :

Exemple : <Location "/private/"> AuthType Digest AuthName "private area" AuthDigestDomain "/private/" "http://mirror.my.dom/private2/" AuthDigestProvider file AuthUserFile "/web/auth/.digest_pw" Require valid-user </Location>

La directive AuthDigestDomain permet de fournir la liste des URIs protégés par cette configuration.

Le fichier de mots de passe référencé par la directive AuthUserFile peut être créé et maintenu via l'utilitaire htdigest.

Note

L'authentification à base de condensé a été conçue pour améliorer la sécurité par rapport à l'authentification basique, mais il s'avère que ce but n'a pas été atteint. Un attaquant de type "man-in-the-middle" peut facilement forcer le navigateur à revenir à une authentification basique. Même une oreille indiscrète passive peut retrouver le mot de passe par force brute avec les moyens modernes, car l'algorithme de hashage utilisé par l'authentification à base de condensé est trop rapide. Autre problème, le stockage des mots de passe sur le serveur n'est pas sûr. Le contenu d'un fichier htdigest volé peut être utilisé directement pour l'authentification à base de condensé. Il est donc fortement recommandé d'utiliser mod_ssl pour chiffrer la connexion.

mod_auth_digest ne fonctionne correctement que sur les plates-formes où APR supporte la mémoire partagée.

AuthDigestProvider Définit le(s) fournisseurs(s) d'authentification pour la zone du site web concernée AuthDigestProvider nom fournisseur [nom fournisseur] ... AuthDigestProvider file directory.htaccess AuthConfig

La directive AuthDigestProvider permet de définir quel fournisseur d'authentification sera utilisé pour authentifier les utilisateurs pour la zone du site web concernée. Assurez-vous que le module implémentant le fournisseur d'authentification choisi soit bien présent dans le serveur. Le fournisseur par défaut file est implémenté par le module mod_authn_file.

Voir mod_authn_dbm, mod_authn_file, mod_authn_dbd et mod_authn_socache pour la liste des fournisseurs disponibles.

AuthDigestQop Détermine le niveau de protection fourni par l'authentification à base de condensé AuthDigestQop none|auth|auth-int [auth|auth-int] AuthDigestQop auth directory.htaccess AuthConfig

La directive AuthDigestQop permet de définir le niveau de protection fourni. auth ne fournit que l'authentification (nom utilisateur/mot de passe) ; auth-int fournit l'authentification plus un contrôle d'intégrité (un condensé MD5 de l'entité est aussi calculé et vérifié) ; avec none, le module va utiliser l'ancien algorithme de condensés RFC-2069 (qui n'effectue pas de contrôle d'intégrité). On peut spécifier à la fois auth et auth-int, auquel cas c'est le navigateur qui va choisir lequel des deux utiliser. none ne doit être utilisé que dans le cas où le navigateur ne serait pas à même (pour une raison ou pour une autre) de relever le défit qu'il recevrait si un autre niveau de protection était défini.

auth-int n'est pas encore implémenté.
AuthDigestNonceLifetime Durée de validité du nombre à valeur unique du serveur (nonce) AuthDigestNonceLifetime secondes AuthDigestNonceLifetime 300 directory.htaccess AuthConfig

La directive AuthDigestNonceLifetime permet de contrôler la durée de validité du nombre à valeur unique du serveur (nonce). Lorsque le client contacte le serveur en utilisant un nonce dont la validité a expiré, le serveur renvoie un code d'erreur 401 avec stale=true. Si secondes est supérieur à 0, il spécifie la durée de validité du nonce ; il est en général déconseillé d'affecter à cet argument une valeur inférieure à 10 secondes. Si secondes est inférieur à 0, le nonce n'expire jamais.

AuthDigestNonceFormat Détermine la manière dont le nombre à valeur unique du serveur (nonce) est généré AuthDigestNonceFormat format directory.htaccess AuthConfig Non encore implémenté. AuthDigestNcCheck Active ou désactive la vérification du nombre d'envois du nombre à valeur unique (nonce) par le serveur AuthDigestNcCheck On|Off AuthDigestNcCheck Off server config Non encore implémenté. AuthDigestAlgorithm Sélectionne l'algorithme utilisé pour calculer les condensés du défit et de sa réponse AuthDigestAlgorithm MD5|MD5-sess AuthDigestAlgorithm MD5 directory.htaccess AuthConfig

La directive AuthDigestAlgorithm permet de sélectionner l'algorithme utilisé pour calculer les condensés du défit et de sa réponse.

MD5-sess n'est pas encore correctement implémenté.
AuthDigestDomain Les URIs qui se trouvent dans le même espace de protection concernant l'authentification à base de condensés AuthDigestDomain URI [URI] ... directory.htaccess AuthConfig

La directive AuthDigestDomain vous permet de spécifier un ou plusieurs URIs se trouvant dans le même espace de protection (c'est à dire utilisant le même utilisateur/mot de passe et se trouvant dans le même domaine). Les URIs spécifiés sont des préfixes ; le client doit savoir que tous les URIs situés sous ces préfixes seront protégés par le même utilisateur/mot de passe. Les URIs peuvent être soit des URIs absolus (c'est à dire avec protocole, nom serveur, port, etc...), soit des URIs relatifs.

Cette directive doit toujours être présente et contenir au moins le(s) URI(s) racine(s) pour cet espace. Dans le cas contraire, le client va envoyer un en-tête d'autorisation avec chaque requête à destination de ce serveur. Outre une augmentation de la taille de la requête, les performances vont s'en trouver affectées si la directive AuthDigestNcCheck est définie à On.

Les URIs spécifiés peuvent aussi référencer différents serveurs, auquel cas les clients (qui sont à même de le comprendre) vont partager l'utilisateur/mot de passe entre plusieurs serveurs sans le demander à l'utilisateur à chaque fois.

AuthDigestShmemSize La quantité de mémoire partagée à allouer afin de conserver les informations à propos des clients AuthDigestShmemSize taille AuthDigestShmemSize 1000 server config

La directive AuthDigestShmemSize permet de définir la quantité de mémoire partagée à allouer au démarrage du serveur afin de conserver les informations à propos des clients. Notez que le segment de mémoire partagée ne peut pas être défini à une taille inférieure à l'espace nécessaire pour conserver les informations à propos d'un client. Cette valeur dépend de votre système. Si vous voulez en déterminer la valeur exacte, vous pouvez simplement définir AuthDigestShmemSize à 0 et consulter le message d'erreur que renverra le serveur lorsqu'on essaiera de le démarrer.

L'argument size s'exprime par défaut en octets, mais vous pouvez suffixer le nombre par un K ou un M pour spécifier respectivement des KiloOctets ou des MégaOctets. Par exemple, les directives qui suivent sont toutes équivalentes :

AuthDigestShmemSize 1048576 AuthDigestShmemSize 1024K AuthDigestShmemSize 1M