Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

# Module Apache mod_auth_basic

Description: | Authentification HTTP de base
Statut: | Base
Identificateur de Module: | auth_basic_module
Fichier Source: | mod_auth_basic.c
Compatibilité: | Disponible depuis la version 2.1 d'Apache

### Sommaire

Ce module permet d'utiliser l'authentification basique HTTP pour restreindre l'accès en recherchant les utilisateurs dans les fournisseurs d'authentification spécifiés. Il est en général combiné avec au moins un module d'authentification comme `mod_authn_file` et un module d'autorisation comme `mod_authz_user`. L'authentification HTTP à base de condensé (digest), quant à elle, est fournie par le module `mod_auth_digest`.

### Directives

### Traitement des bugs

- Journal des modifications de httpd
- Problèmes connus
- Signaler un bug

### Voir aussi

- `AuthName`
- `AuthType`
- `Require`
- Mode d'emploi de l'authentification

## Directive AuthBasicAuthoritative

Description: | Définit si les processus d'autorisation et d'authentification peuvent être confiés à des modules de plus bas niveau
Syntaxe: | `AuthBasicAuthoritative On|Off`
Défaut: | `AuthBasicAuthoritative On`
Contexte: | répertoire, .htaccess
AllowOverride: | AuthConfig
Statut: | Base
Module: | mod_auth_basic

Normalement, chaque module d'autorisation énuméré dans la directive `AuthBasicProvider` va tenter de vérifier l'utilisateur, et si ce dernier n'est trouvé dans aucun des fournisseurs, l'accès sera refusé. Définir explicitement la directive `AuthBasicAuthoritative` à `Off` permet de confier l'autorisation et l'authentification à d'autres modules non basés sur les fournisseurs si aucun identifiant utilisateur ou aucune règle ne correspondent à l'identifiant utilisateur spécifié. Ceci ne peut s'avérer nécessaire que lorsque `mod_auth_basic` est combiné avec des modules tiers qui n'ont pas été configurés à l'aide de la directive `AuthBasicProvider`. Lorsqu'on utilise de tels modules, l'ordre dans lequel s'effectue le traitement est défini dans le code source des modules et n'est pas configurable.

## Directive AuthBasicFake

Description: | Authentification de base simulée à l'aide des nom d'utilisateur et mot de passe fournis
Syntaxe: | `AuthBasicFake off|username [password]`
Défaut: | `none`
Contexte: | répertoire, .htaccess
AllowOverride: | AuthConfig
Statut: | Base
Module: | mod_auth_basic
Compatibilité: | Disponible à partir de la version 2.4.5 du serveur HTTP Apache

Les nom d'utilisateur et mot de passe spécifiés sont rassemblés dans un en-tête d'autorisation qui est transmis au serveur ou au service sous-jacent au serveur. Ces nom d'utilisateur et mot de passe sont interprétés par l'interpréteur d'expression, ce qui permet de les définir en fonction de paramètres de la requête.

Si aucun mot de passe n'est spécifié, la valeur par défaut "password" sera utilisée. Pour désactiver l'authentification de base simulée pour un espace d'URL, définissez AuthBasicFake à "off".

Dans l'exemple suivant, un nom d'utilisateur et un mot de passe prédéfinis sont transmis à un serveur d'arrière-plan :

### Exemple de transmission d'un nom d'utilisateur et d'un mot de passe prédéfinis

    <Location "/demo">
        AuthBasicFake demo demopass
    </Location>

Dans l'exemple suivant, l'adresse email extraite d'un certificat client est transmise au serveur, étendant par là-même la fonctionnalité de l'option FakeBasicAuth de la directive `SSLOptions`. Comme avec l'option FakeBasicAuth, le mot de passe se voit attribué le contenu fixe de la chaîne "password".

### Exemple d'utilisation avec un certificat

    <Location "/secure">
        AuthBasicFake "%{SSL_CLIENT_S_DN_Email}"
    </Location>

Pour compléter l'exemple précédent, il est possible de générer la valeur du mot de passe en procédant à un hashage de l'adresse email à partir d'un mot d'une passphrase initial fixée, puis de transmettre le résultat obtenu au serveur d'arrière-plan. Ceci peut s'avérer utile pour donner accès à des serveurs anciens qui ne supportent pas les certificats clients.

### Exemple de génération de mot de passe par hashage de l'adresse email

    <Location "/secure">
        AuthBasicFake "%{SSL_CLIENT_S_DN_Email}" "%{sha1:passphrase-%{SSL_CLIENT_S_DN_Email}}"
    </Location>

### Désactivation de l'authentification simulée

    <Location "/public">
        AuthBasicFake off
    </Location>

## Directive AuthBasicProvider

Description: | Définit le(les) fournisseur(s) d'authentification pour cette zone du site web
Syntaxe: | `AuthBasicProvider nom fournisseur [nom fournisseur] ...`
Défaut: | `AuthBasicProvider file`
Contexte: | répertoire, .htaccess
AllowOverride: | AuthConfig
Statut: | Base
Module: | mod_auth_basic

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

### Exemple

    <Location "/secure">
        AuthType basic
        AuthName "private area"
        AuthBasicProvider  dbm
        AuthDBMType        SDBM
        AuthDBMUserFile    "/www/etc/dbmpasswd"
        Require            valid-user
    </Location>

Les fournisseurs sont sollicités dans l'ordre jusqu'à ce que l'un d'entre eux trouve une correspondance pour le nom d'utilisateur de la requête ; alors, ce dernier fournisseur sera le seul à vérifier le mot de passe. Un échec dans la vérification du mot de passe n'entraîne pas le passage du contrôle au fournisseur suivant.

Les différents fournisseurs disponibles sont implémentés par les modules `mod_authn_dbm`, `mod_authn_file`, `mod_authn_dbd`, `mod_authnz_ldap` et `mod_authn_socache`.

## Directive AuthBasicUseDigestAlgorithm

Description: | Vérifie les mots de passe auprès des fournisseurs d'authentification à la manière de l'authentification de type Digest.
Syntaxe: | `AuthBasicUseDigestAlgorithm MD5|Off`
Défaut: | `AuthBasicUseDigestAlgorithm Off`
Contexte: | répertoire, .htaccess
AllowOverride: | AuthConfig
Statut: | Base
Module: | mod_auth_basic
Compatibilité: | Disponible à partir de la version 2.4.7 du serveur HTTP Apache

Normalement, lorsqu'on utilise l'authentification basique, les fournisseurs spécifiés via la directive `AuthBasicProvider` tentent de contrôler l'identité d'un utilisateur en recherchant dans leurs bases de données l'existence d'un couple utilisateur/mot de passe correspondant. Les mots de passe enregistrés sont en général chiffrés, mais ce n'est pas systématique ; chaque fournisseur peut choisir son propre mode de stockage des mots de passe.

Lorsqu'on utilise l'authentification de type Digest, les fournisseurs spécifiés par la directive `AuthDigestProvider` effectuent une recherche similaire dans leurs bases de données pour trouver un couple utilisateur/mot de passe correspondant. Cependant, à la différence de l'authentification basique, les données associées à chaque utilisateur et comportant le nom d'utilisateur, le domaine de protection (realm) et le mot de passe doivent être contenues dans une chaîne chiffrée (Voir le document RFC 2617, Section 3.2.2.2 pour plus de détails à propos du type de chiffrement utilisé pour cette chaîne).

A cause de la différence entre les méthodes de stockage des données des authentifications de type basique et digest, le passage d'une méthode d'authentification de type digest à une méthode d'authentification de type basique requiert l'attribution de nouveaux mots de passe à chaque utilisateur, car leur mots de passe existant ne peut pas être extrait à partir du schéma de stockage utilisé par les fournisseurs d'authentification de type digest.

Si la directive `AuthBasicUseDigestAlgorithm` est définie à la valeur `MD5`, le mot de passe d'un utilisateur dans le cas de l'authentification basique sera vérifié en utilisant le même format de chiffrement que dans le cas de l'authentification de type digest. Tout d'abord, une chaîne comportant le nom d'utilisateur, le domaine de protection (realm) et le mot de passe est générée sous forme de condensé (hash) en utilisant l'algorithme MD5 ; puis le nom d'utilisateur et cette chaîne chiffrée sont transmis aux fournisseurs spécifiés via la directive `AuthBasicProvider` comme si la directive `AuthType` était définie à `Digest` et si l'authentification de type Digest était utilisée.

Grâce à cette directive, un site peut basculer d'une authentification de type digest à basique sans devoir changer les mots de passe des utilisateurs.

Le processus inverse consistant à passer d'une authentification de type basique à digest sans changer les mots de passe n'est en général pas possible. Les mots de passe enregistrés dans le cas d'une authentification de type basique ne pourront être extraits et chiffrés à nouveau selon le schéma de l'authentification de type digest, que s'ils ont été stockés en clair ou selon un schéma de chiffrement réversible.
Seuls les fournisseurs qui supportent l'authentification de type digest pourront authentifier les utilisateurs lorsque la directive `AuthBasicUseDigestAlgorithm` est définie à `MD5`. L'utilisation d'un autre fournisseur provoquera un message d'erreur et le client se verra refuser l'accès.