Serveur Apache HTTP Version 2.4
![](feather.png)
Module Apache mod_authn_dbd
Description: | Authentification utilisateur à l'aide d'une base de données SQL |
---|---|
Statut: | Extension |
Identificateur de Module: | authn_dbd_module |
Fichier Source: | mod_authn_dbd.c |
Compatibilité: | Disponible depuis la version 2.1 d'Apache |
Sommaire
Ce module permet aux frontaux d'authentification comme
mod_auth_digest
et mod_auth_basic
d'authentifier les utilisateurs en les recherchant dans une base de
données SQL. mod_authn_file
, par exemple, fournit
une fonctionnalité similaire.
Ce module s'appuie sur mod_dbd
pour spécifier le
pilote de la base de données sous-jacente et les paramètres de
connexion, mais aussi pour gérer les connexions à la base de
données.
Si l'on utilise mod_auth_basic
ou
mod_auth_digest
, on peut invoquer ce module en
affectant la valeur dbd
à la directive AuthBasicProvider
ou AuthDigestProvider
.
Performances et mise en cache
Certains utilisateurs de l'authentification DBD sous HTTPD 2.2/2.4 ont
signalé une charge problématique au niveau de la base de données. Cela
se produit en général lorsqu'une page HTML contient des centaines d'objets
(comme des images, des scripts, etc...), chacun d'entre eux nécessitant
une authentification. Les utilisateurs qui rencontrent ce genre de
problème peuvent utiliser le module mod_authn_socache
qui permet de mettre les données d'authentification en cache, et
soulager ainsi la base de données de la plus grande partie de la charge.
Exemple de configuration
Voici un exemple simple d'utilisation de ce module dans un contexte d'authentification et de bases de données.
# configuration de mod_dbd # MISE À JOUR pour inclure la mise en cache de l'authentification DBDriver pgsql DBDParams "dbname=apacheauth user=apache password=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/usr/www/mon-serveur/private"> # configuration de mod_authn_core et mod_auth_basic # pour mod_authn_dbd AuthType Basic AuthName "Mon serveur" # Pour mettre en cache les données d'authentification, placez socache # avant dbd AuthBasicProvider socache dbd # Aussi nécessaire à la mise en cache : dire au cache de mettre en # cache les recherches dbd ! AuthnCacheProvideFor dbd AuthnCacheContext mon-serveur # configuration de mod_authz_core Require valid-user # la requête SQL de mod_authn_dbd pour authentifier un utilisateur AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" </Directory>
Mise à disposition des informations de connexion
Si httpd a été compilé avec la version 1.3.0 ou supérieure de l'APR, pour chaque requête envoyée au serveur de base de données, toutes les valeurs de colonnes du premier enregistrement renvoyé par la requête sont affectées à des variables d'environnement avec le préfixe "AUTHENTICATE_".
Par exemple, si une requête renvoie un nom d'utilisateur, un nom complet et un numéro de téléphone, un programme CGI pourra accéder à ces informations sans avoir besoin d'effectuer une deuxième requête vers la base de données.
Ceci va entraîner une simplification considérable du code et de la configuration nécessaire de certaines applications web.
Directive AuthDBDUserPWQuery
Description: | Requête SQL servant à vérifier le mot de passe d'un utilisateur |
---|---|
Syntaxe: | AuthDBDUserPWQuery requête |
Contexte: | répertoire |
Statut: | Extension |
Module: | mod_authn_dbd |
La directive AuthDBDUserPWQuery
permet de
spécifier une requête servant à vérifier le mot de passe d'un
utilisateur donné. L'identifiant utilisateur sera transmis comme
paramètre sous forme d'une seule chaîne de caractères lorsque la
requête sera exécutée. Cet identifiant est référencé dans la requête
en utilisant le spécificateur de format %s
.
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
La première colonne du premier enregistrement renvoyé par la
requête se présentera sous la forme d'une chaîne de caractères
contenant le mot de passe chiffré. Les enregistrements suivants sont
ignorés. Si aucun enregistrement n'est renvoyé, l'utilisateur ne
sera pas authentifié par mod_authn_dbd
.
Si httpd a été compilé avec la version 1.3.0 ou supérieure de
l'APR, toute valeur de colonne supplémentaire
du premier enregistrement renvoyé par la requête sera stockée dans
une variable d'environnement dont le nom aura la forme
AUTHENTICATE_valeur-colonne
.
Le format du mot de passe chiffré dépend du frontal
d'authentification utilisé (par exemple
mod_auth_basic
ou
mod_auth_digest
). Voir la documentation sur les Formats de mots de passe pour
plus de détails.
Directive AuthDBDUserRealmQuery
Description: | Requête SQL servant à vérifier une empreinte de mot de passe pour un utilisateur et un identifiant d'authentification. |
---|---|
Syntaxe: | AuthDBDUserRealmQuery requête |
Contexte: | répertoire |
Statut: | Extension |
Module: | mod_authn_dbd |
La directive AuthDBDUserRealmQuery
permet
de spécifier une requête SQL servant à vérifier une empreinte de mot
de passe pour un utilisateur et un identifiant d'authentification
donnés au cours d'un processus d'authentification digest. Les
identifiants de l'utilisateur et de l'authentification
sont passés dans cet ordre comme paramètres à l'exécution de la
requête. Ils sont référencés dans la chaîne de la requête en
utilisant des spécificateurs de format %s
.
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
La première colonne du premier enregistrement renvoyé par la
requête se présentera sous la forme d'une chaîne de caractères
contenant le mot de passe chiffré. Les enregistrements suivants
seront ignorés. Si aucun enregistrement n'est renvoyé, l'utilisateur
ne sera pas authentifié par mod_authn_dbd
.
Si httpd a été compilé avec une version 1.3.0 ou supérieure de
l'APR, toute valeur de colonne supplémentaire
du premier enregistrement renvoyé par la requête sera stockée dans
une variable d'environnement avec un nom de la forme
AUTHENTICATE_COLONNE
.
Le format du mot de passe chiffré dépend du frontal
d'authentification utilisé (par exemple
mod_auth_basic
ou
mod_auth_digest
). Voir la documentation sur les Formats de mots de passe pour
plus de détails.