Serveur Apache HTTP Version 2.4
Description: | Autorisation en groupe et reconnaissance d'identit� avec base SQL |
---|---|
Statut: | Extension |
Identificateur�de�Module: | authz_dbd_module |
Fichier�Source: | mod_authz_dbd.c |
Compatibilit�: | Disponible dans les versions 2.4 et sup�rieures d'Apache |
Ce module fournit des fonctionnalit�s d'autorisation permettant
d'accorder ou de refuser aux utilisateurs authentifi�s l'acc�s �
certaines zones du site web en fonction de leur appartenance � tel
ou tel groupe. Les modules mod_authz_groupfile
et
mod_authz_dbm
fournissent une fonctionnalit�
similaire, mais ici le module interroge une base de donn�es SQL pour
d�terminer si un utilisateur appartient ou non � tel ou tel groupe.
Ce module propose �galement des fonctionnalit�s de connexion
utilisateur s'appuyant sur une base de donn�es, ce qui peut se r�v�ler
particuli�rement utile lorsque le module est utilis� conjointement avec
mod_authn_dbd
.
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, et g�rer les connexions � la base de donn�es.
Les directives Require
d'Apache permettent,
au cours de la phase d'autorisation, de s'assurer qu'un utilisateur
est bien autoris� � acc�der � une ressource. mod_authz_dbd ajoute
les types d'autorisation dbd-group
,
dbd-login
et dbd-logout
.
A partir de la version 2.4.8, les directives require DBD supportent les expressions.
Cette directive permet de sp�cifier � quel groupe un utilisateur doit appartenir pour obtenir l'autorisation d'acc�s.
Require dbd-group team AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"
Cette directive permet de sp�cifier une requ�te � ex�cuter pour indiquer que l'utilisateur s'est authentifi�.
Require dbd-login AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
Cette directive permet de sp�cifier une requ�te � ex�cuter pour indiquer que l'utilisateur s'est d�connect�.
Require dbd-logout AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
Outre sa fonction d'autorisation standard consistant � v�rifier l'appartenance � des groupes, ce module permet aussi de g�rer des sessions utilisateur c�t� serveur gr�ce � sa fonctionnalit� de connexion utilisateur en s'appuyant sur une base de donn�es. En particulier, il peut mettre � jour le statut de session de l'utilisateur dans la base de donn�es chaque fois que celui-ci visite certaines URLs (sous r�serve bien entendu que l'utilisateur fournisse les informations de connexion n�cessaires).
Pour cela, il faut definir deux directives Require
sp�ciales : Require
dbd-login
et Require dbd-logout
. Pour les d�tails de
leur utilisation, voir l'exemple de configuration ci-dessous.
Certains administrateurs peuvent vouloir impl�menter une gestion de session c�t� client fonctionnant de concert avec les fonctionnalit�s de connexion/d�connexion des utilisateurs c�t� serveur offertes par ce module, en d�finissant ou en annulant par exemple un cookie HTTP ou un jeton similaire lorsqu'un utilisateur se connecte ou se d�connecte.
Pour supporter une telle int�gration, mod_authz_dbd
exporte
un programme � d�clenchement optionnel (hook) qui sera lanc� chaque fois
que le statut d'un utilisateur sera mis � jour dans la base de donn�es.
D'autres modules de gestion de session pourront alors utiliser ce
programme pour impl�menter des fonctions permettant d'ouvrir et de
fermer des sessions c�t� client.
# configuration de mod_dbd DBDriver pgsql DBDParams "dbname=apacheauth user=apache pass=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory /usr/www/mon.site/team-private/> # configuration de mod_authn_core et mod_auth_basic # pour mod_authn_dbd AuthType Basic AuthName Team AuthBasicProvider dbd # requ�te SQL de mod_authn_dbd pour authentifier un utilisateur qui se # connecte AuthDBDUserPWQuery \ "SELECT password FROM authn WHERE user = %s AND login = 'true'" # configuration de mod_authz_core pour mod_authz_dbd Require dbd-group team # configuration de mod_authz_dbd AuthzDBDQuery "SELECT group FROM authz WHERE user = %s" # lorsqu'un utilisateur �choue dans sa tentative d'authentification ou # d'autorisation, on l'invite � se connecter ; cette page doit # contenir un lien vers /team-private/login.html ErrorDocument 401 /login-info.html <Files login.html> # il n'est pas n�cessaire que l'utilisateur soit d�j� connect� ! AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" # le processus de connexion dbd ex�cute une requ�te pour enregistrer # la connexion de l'utilisateur Require dbd-login AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s" # redirige l'utilisateur vers la page d'origine (si elle existe) # apr�s une connexion r�ussie AuthzDBDLoginToReferer On </Files> <Files logout.html> # le processus de d�connexion dbd ex�cute une requ�te pour # enregistrer la d�connexion de l'utilisateur Require dbd-logout AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s" </Files> </Directory>
Description: | D�finit si le client doit �tre redirig� vers la page
d'origine en cas de connexion ou de d�connexion r�ussie si un en-t�te
de requ�te Referer est pr�sent |
---|---|
Syntaxe: | AuthzDBDLoginToReferer On|Off |
D�faut: | AuthzDBDLoginToReferer Off |
Contexte: | r�pertoire |
Statut: | Extension |
Module: | mod_authz_dbd |
Utilis�e en conjonction avec Require dbd-login
ou
Require dbd-logout
, cette directive permet de rediriger
le client vers la page d'origine (l'URL contenue dans l'en-t�te
de requ�te HTTP Referer
, s'il est pr�sent). En
l'absence d'en-t�te Referer
, la d�finition
AuthzDBDLoginToReferer On
sera ignor�e.
Description: | D�finit la requ�te SQL pour l'op�ration requise |
---|---|
Syntaxe: | AuthzDBDQuery requ�te |
Contexte: | r�pertoire |
Statut: | Extension |
Module: | mod_authz_dbd |
La directive AuthzDBDQuery
permet de
sp�cifier une requ�te SQL � ex�cuter. Le but de cette requ�te d�pend
de la directive Require
en cours de
traitement.
Require dbd-group
, elle sp�cifie
une requ�te permettant de rechercher les groupes d'appartenance de
l'utilisateur courant. Ceci correspond � la fonctionnalit� standard
d'autres modules d'autorisation comme
mod_authz_groupfile
et
mod_authz_dbm
.
La premi�re colonne de chaque enregistrement renvoy� par la requ�te
doit contenir une cha�ne de caract�res correspondant � un nom de
groupe. La requ�te peut renvoyer z�ro, un ou plusieurs
enregistrements.
Require dbd-group AuthzDBDQuery "SELECT group FROM groups WHERE user = %s"
Require dbd-login
ou
Require dbd-logout
, elle ne refusera jamais l'acc�s,
mais au contraire ex�cutera une requ�te SQL permettant d'enregistrer
la connexion ou la d�connexion de l'utilisateur. Ce dernier doit
�tre d�j� authentifi� avec mod_authn_dbd
.
Require dbd-login AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
Dans tous les cas, l'identifiant utilisateur sera transmis comme
param�tre sous la forme d'une simple cha�ne lorsque la requ�te SQL
sera ex�cut�e. Il y sera fait r�f�rence dans la requ�te en utilisant
le sp�cificateur de format %s
.
Description: | D�finit une requ�te pour rechercher une page vers laquelle rediriger l'utilisateur apr�s une connexion r�ussie |
---|---|
Syntaxe: | AuthzDBDRedirectQuery requ�te |
Contexte: | r�pertoire |
Statut: | Extension |
Module: | mod_authz_dbd |
Sp�cifie une requ�te SQL optionnelle � utiliser apr�s une
connexion (ou une d�connexion) r�ussie pour rediriger l'utilisateur
vers une URL, qui peut �tre sp�cifique � l'utilisateur.
L'identifiant utilisateur sera transmis comme param�tre sous la
forme d'une simple cha�ne lorsque la requ�te SQL sera ex�cut�e. Il y
sera fait r�f�rence dans la requ�te en utilisant le sp�cificateur de
format %s
.
AuthzDBDRedirectQuery "SELECT userpage FROM userpages WHERE user = %s"
La premi�re colonne du premier enregistrement renvoy� par la requ�te doit contenir une cha�ne de caract�res correspondant � une URL vers laquelle rediriger le client. Les enregistrements suivants sont ignor�s. Si aucun enregistrement n'est renvoy�, le client ne sera pas redirig�.
Notez que AuthzDBDLoginToReferer
l'emporte
sur cette directive si les deux sont d�finies.