<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_authz_dbd

Langues Disponibles:  en  |  fr 

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

Sommaire

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.

Directives

Sujets

Voir aussi

top

Les directives Require

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.

Require dbd-group

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"

Require dbd-login

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"

Require dbd-logout

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"
top

Reconnaissance d'identit� s'appuyant sur une base de donn�es

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.

top

Reconnaissance d'identit� c�t� client

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.

top

Exemple de configuration

# 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>
top

AuthzDBDLoginToReferer Directive

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.

top

AuthzDBDQuery Directive

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.

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.

top

AuthzDBDRedirectQuery Directive

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.

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.