mirror of
https://github.com/apache/httpd.git
synced 2025-07-05 16:21:14 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1796390 13f79535-47bb-0310-9956-ffa450edef68
310 lines
13 KiB
Plaintext
310 lines
13 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
|
|
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
|
|
<!-- English Revision : 1796296 -->
|
|
<!-- French translation : Lucien GENTIS -->
|
|
<!-- Reviewed by : Vincent Deffontaines -->
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<modulesynopsis metafile="mod_authz_dbd.xml.meta">
|
|
|
|
<name>mod_authz_dbd</name>
|
|
<description>Autorisation par groupe ou par identifiant via SQL</description>
|
|
<status>Extension</status>
|
|
<sourcefile>mod_authz_dbd.c</sourcefile>
|
|
<identifier>authz_dbd_module</identifier>
|
|
<compatibility>Disponible dans les version 2.4 et supérieures
|
|
d'Apache</compatibility>
|
|
|
|
<summary>
|
|
<p>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 <module>mod_authz_groupfile</module> et
|
|
<module>mod_authz_dbm</module> 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.</p>
|
|
<p>Ce module peut aussi fournir des fonctionnalités de connexion
|
|
utilisateur s'appuyant sur une base de données. Ceci prend le plus souvent
|
|
sens lorsque le module est utilisé conjointement avec
|
|
<module>mod_authn_dbd</module>.</p>
|
|
<p>Ce module s'appuie sur <module>mod_dbd</module> 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.</p>
|
|
</summary>
|
|
|
|
<seealso><directive module="mod_authz_core">Require</directive></seealso>
|
|
<seealso>
|
|
<directive module="mod_authn_dbd">AuthDBDUserPWQuery</directive>
|
|
</seealso>
|
|
<seealso><directive module="mod_dbd">DBDriver</directive></seealso>
|
|
<seealso><directive module="mod_dbd">DBDParams</directive></seealso>
|
|
|
|
<section id="requiredirectives"><title>Les directives Require</title>
|
|
|
|
<p>Les directives <directive
|
|
module="mod_authz_core">Require</directive> 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 <code>dbd-group</code>,
|
|
<code>dbd-login</code> et <code>dbd-logout</code>.</p>
|
|
|
|
<p>A partir de la version 2.4.8, les directives require DBD
|
|
supportent les <a href="../expr.html">expressions</a>.</p>
|
|
|
|
<section id="reqgroup"><title>Require dbd-group</title>
|
|
|
|
<p>Cette directive permet de spécifier à quel groupe un utilisateur
|
|
doit appartenir pour obtenir l'autorisation d'accès.</p>
|
|
|
|
<highlight language="config">
|
|
Require dbd-group team
|
|
AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"
|
|
</highlight>
|
|
|
|
</section>
|
|
|
|
<section id="reqlogin"><title>Require dbd-login</title>
|
|
|
|
<p>Cette directive permet de spécifier une requête à exécuter pour
|
|
indiquer que l'utilisateur s'est authentifié.</p>
|
|
|
|
<highlight language="config">
|
|
Require dbd-login
|
|
AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
|
|
</highlight>
|
|
|
|
</section>
|
|
|
|
<section id="reqlogout"><title>Require dbd-logout</title>
|
|
|
|
<p>Cette directive permet de spécifier une requête à exécuter pour
|
|
indiquer que l'utilisateur s'est déconnecté.</p>
|
|
|
|
<highlight language="config">
|
|
Require dbd-logout
|
|
AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
|
|
</highlight>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section id="login">
|
|
<title>Connexion s'appuyant sur une base de données</title>
|
|
<p>
|
|
Outre sa fonction d'autorisation standard consistant à vérifier
|
|
l'appartenance à des groupes, ce module permet également de gérer des
|
|
sessions utilisateur côté serveur grâce à sa fonctionnalité de gestion de login/logout
|
|
via 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).</p>
|
|
<p>Pour cela, il faut definir deux directives <directive
|
|
module="mod_authz_core">Require</directive> spéciales : <code>Require
|
|
dbd-login</code> et <code>Require dbd-logout</code>. Pour les détails de
|
|
leur utilisation, voir l'exemple de configuration ci-dessous.</p>
|
|
</section>
|
|
|
|
<section id="client">
|
|
<title>Intégration des ouvertures de sessions côté client</title>
|
|
<p>Pour les administrateurs qui désirent implémenter une gestion de
|
|
session côté client fonctionnant de concert avec les fonctionnalités de
|
|
connexion/déconnexion côté serveur offertes par ce module, il est possible
|
|
de définir ou en d'annuler par exemple un cookie HTTP ou un jeton
|
|
de connextion lorsqu'un utilisateur se connecte ou se déconnecte.</p>
|
|
<p> Pour supporter une telle intégration, <module>mod_authz_dbd</module> exporte
|
|
un 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
|
|
déclencheur pour utiliser des fonctions d'ouverture et de
|
|
fermeture de sessions côté client.</p>
|
|
</section>
|
|
|
|
<section id="example">
|
|
<title>Exemple de configuration</title>
|
|
<highlight language="config">
|
|
# 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>
|
|
</highlight>
|
|
</section>
|
|
|
|
<section id="security">
|
|
<title>Prévention contre les injections SQL</title>
|
|
<p>Selon le pilote DBD choisi et le serveur d'arrière-plan que vous utilisez,
|
|
vous devrez prendre garde à la sécurité dans le domaine SQL.
|
|
Avec la plupart des pilotes, vous n'avez rien à faire : la
|
|
requête est préparée par la base de données au démarrage, et l'entrée
|
|
utilisateur n'est utilisée qu'en tant que donnée. Mais vous aurez
|
|
peut-être à nettoyer cette entrée. Au moment où ces lignes sont
|
|
écrites, le seul pilote DBD qui peut nécessiter le nettoyage de l'entrée
|
|
est FreeTDS.</p>
|
|
<p>Veuillez vous référez à la documentation de
|
|
<module>mod_dbd</module> pour plus d'informations à propos de la
|
|
sécurité dans ce domaine.</p>
|
|
</section>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthzDBDQuery</name>
|
|
<description>Définit la requête SQL pour l'opération
|
|
requise</description>
|
|
<syntax>AuthzDBDQuery <var>requête</var></syntax>
|
|
<contextlist><context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>La directive <directive>AuthzDBDQuery</directive> permet de
|
|
spécifier une requête SQL à exécuter. Le but de cette requête dépend
|
|
de la directive <directive
|
|
module="mod_authz_core">Require</directive> en cours de
|
|
traitement.</p>
|
|
<ul>
|
|
<li>Avec la directive <code>Require dbd-group</code>, 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
|
|
<module>mod_authz_groupfile</module> et
|
|
<module>mod_authz_dbm</module>.
|
|
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.
|
|
<highlight language="config">
|
|
Require dbd-group
|
|
AuthzDBDQuery "SELECT group FROM groups WHERE user = %s"
|
|
</highlight>
|
|
</li>
|
|
<li>Avec la directive <code>Require dbd-login</code> ou
|
|
<code>Require dbd-logout</code>, 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 <module>mod_authn_dbd</module>.
|
|
<highlight language="config">
|
|
Require dbd-login
|
|
AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
|
|
</highlight>
|
|
</li>
|
|
</ul>
|
|
<p>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 <code>%s</code>.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthzDBDRedirectQuery</name>
|
|
<description>Définit une requête pour rechercher une page vers laquelle
|
|
rediriger l'utilisateur après une connexion réussie</description>
|
|
<syntax>AuthzDBDRedirectQuery <var>requête</var></syntax>
|
|
<contextlist><context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>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 <code>%s</code>.</p>
|
|
<highlight language="config">
|
|
AuthzDBDRedirectQuery "SELECT userpage FROM userpages WHERE user = %s"
|
|
</highlight>
|
|
<p>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é.</p>
|
|
<p>Notez que <directive>AuthzDBDLoginToReferer</directive> l'emporte
|
|
sur cette directive si les deux sont définies.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
<directivesynopsis>
|
|
<name>AuthzDBDLoginToReferer</name>
|
|
<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 une en-tête
|
|
de requête <code>Referer</code> est présente</description>
|
|
<syntax>AuthzDBDLoginToReferer On|Off</syntax>
|
|
<default>AuthzDBDLoginToReferer Off</default>
|
|
<contextlist><context>directory</context></contextlist>
|
|
|
|
<usage>
|
|
<p>Utilisée en conjonction avec <code>Require dbd-login</code> ou
|
|
<code>Require dbd-logout</code>, cette directive permet de rediriger
|
|
le client vers la page d'origine (l'URL contenue dans l'en-tête
|
|
de requête HTTP <code>Referer</code>, s'il est présent). En
|
|
l'absence d'en-tête <code>Referer</code>, la définition
|
|
<code>AuthzDBDLoginToReferer On</code> sera ignorée.</p>
|
|
</usage>
|
|
</directivesynopsis>
|
|
|
|
</modulesynopsis>
|