Ce module implémente l'authentification HTTP basée sur les
condensés MD5 (RFC2617), et
fournit une alternative à
Pour utiliser l'authentification à base de condensés MD5, vous
devez simplement remplacer AuthType Basic
et AuthType Digest
et
On peut créer les fichiers utilisateur appropriés (au format
texte) à l'aide de l'outil
L'authentification à base de condensés MD5 est plus sécurisée que l'authentification Basic, mais ne fonctionne qu'avec les navigateurs qui la supportent. En septembre 2004, les principaux navigateurs supportant l'authentification à base de condensés MD5 incluaient Amaya, Konqueror, MS Internet Explorer pour Mac OS X et Windows (bien que la version Windows échoue lorsque la requête comporte une chaîne d'arguments -- voir plus loin "Travailler avec MS Internet Explorer" pour contourner ce problème), Mozilla, Netscape 7, Opera, et Safari. lynx ne supporte pas l'authentification à base de condensés MD5. Comme l'authentification à base de condensés MD5 est moins répandue que l'authentification Basic, vous ne devez l'utiliser que dans des environnements où tous les utilisateurs disposeront d'un navigateur la supportant.
L'implémentation de l'authentification à base de condensé dans
les versions précédentes d'Internet Explorer pour Windows (5 et 6)
posait problème, car les requêtes de type GET
comportant une chaîne d'arguments (query string) ne respectaient pas les RFC. Il y
a plusieurs manières de contourner ce problème.
La première méthode consiste à utiliser des requêtes de type
POST
plutôt que GET
pour transmettre les
données à votre programme. Cette méthode constitue l'approche la
plus simple dans le cas où votre application peut fonctionner avec
cette limitation.
Depuis la version 2.0.51, Apache propose aussi de contourner le
problème à l'aide de la variable d'environnement
AuthDigestEnableQueryStringHack
. Si
AuthDigestEnableQueryStringHack
est définie pour la
requête, Apache va prendre des mesures pour contourner la bogue MSIE
et en particulier va exclure la chaîne d'arguments de la comparaison
des condensés. L'utilisation de cette méthode peut se traduire par
ceci :
Cette correction n'est pas nécessaire avec MSIE 7, bien que son activation ne pose pas de problème de compatibilité ou de surcharge significative.
Voir la directive
La directive file
est implémenté par le
module
Voir
La directive 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é.
La directive 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.
La directive
MD5-sess
n'est pas encore correctement implémenté.
La directive
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
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.
La directive 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 :