]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_authz_dbd.xml.fr
XML updates.
[apache] / docs / manual / mod / mod_authz_dbd.xml.fr
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1796296 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <modulesynopsis metafile="mod_authz_dbd.xml.meta">
26
27 <name>mod_authz_dbd</name>
28 <description>Autorisation par groupe ou par identifiant via SQL</description>
29 <status>Extension</status>
30 <sourcefile>mod_authz_dbd.c</sourcefile>
31 <identifier>authz_dbd_module</identifier>
32 <compatibility>Disponible dans les version 2.4 et supérieures
33 d'Apache</compatibility>
34
35 <summary>
36     <p>Ce module fournit des fonctionnalités d'autorisation permettant
37     d'accorder ou de refuser aux utilisateurs authentifiés l'accès à
38     certaines zones du site web en fonction de leur appartenance à tel
39     ou tel groupe. Les modules <module>mod_authz_groupfile</module> et
40     <module>mod_authz_dbm</module> fournissent une fonctionnalité
41     similaire, mais ici le module interroge une base de données SQL pour
42     déterminer si un utilisateur appartient ou non à tel ou tel groupe.</p>
43     <p>Ce module peut aussi fournir des fonctionnalités de connexion
44     utilisateur s'appuyant sur une base de données. Ceci prend le plus souvent
45     sens lorsque le module est utilisé conjointement avec
46     <module>mod_authn_dbd</module>.</p>
47     <p>Ce module s'appuie sur <module>mod_dbd</module> pour spécifier le
48     pilote de la base de données sous-jacente et les paramètres de
49     connexion, et gérer les connexions à la base de données.</p>
50 </summary>
51
52 <seealso><directive module="mod_authz_core">Require</directive></seealso>
53 <seealso>
54   <directive module="mod_authn_dbd">AuthDBDUserPWQuery</directive>
55 </seealso>
56 <seealso><directive module="mod_dbd">DBDriver</directive></seealso>
57 <seealso><directive module="mod_dbd">DBDParams</directive></seealso>
58
59 <section id="requiredirectives"><title>Les directives Require</title>
60
61     <p>Les directives <directive
62     module="mod_authz_core">Require</directive> d'Apache permettent,
63     au cours de la phase d'autorisation, de s'assurer qu'un utilisateur
64     est bien autorisé à accéder à une ressource. mod_authz_dbd ajoute
65     les types d'autorisation <code>dbd-group</code>,
66     <code>dbd-login</code> et <code>dbd-logout</code>.</p>
67
68     <p>A partir de la version 2.4.8, les directives require DBD
69     supportent les <a href="../expr.html">expressions</a>.</p>
70
71 <section id="reqgroup"><title>Require dbd-group</title>
72
73     <p>Cette directive permet de spécifier à quel groupe un utilisateur
74     doit appartenir pour obtenir l'autorisation d'accès.</p>
75
76     <highlight language="config">
77 Require dbd-group team
78 AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"
79     </highlight>
80
81 </section>
82
83 <section id="reqlogin"><title>Require dbd-login</title>
84
85     <p>Cette directive permet de spécifier une requête à exécuter pour
86     indiquer que l'utilisateur s'est authentifié.</p>
87
88     <highlight language="config">
89 Require dbd-login
90 AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
91     </highlight>
92
93 </section>
94
95 <section id="reqlogout"><title>Require dbd-logout</title>
96
97     <p>Cette directive permet de spécifier une requête à exécuter pour
98     indiquer que l'utilisateur s'est déconnecté.</p>
99
100     <highlight language="config">
101 Require dbd-logout
102 AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
103     </highlight>
104
105 </section>
106
107 </section>
108
109 <section id="login">
110 <title>Connexion s'appuyant sur une base de données</title>
111 <p>
112 Outre sa fonction d'autorisation standard consistant à vérifier
113 l'appartenance à des groupes, ce module permet également de gérer des
114 sessions utilisateur côté serveur grâce à sa fonctionnalité de gestion de login/logout
115 via base de données. En particulier, il peut mettre à
116 jour le statut de session de l'utilisateur dans la base de données
117 chaque fois que celui-ci visite certaines URLs (sous réserve bien
118 entendu que l'utilisateur fournisse les informations de connexion
119 nécessaires).</p>
120 <p>Pour cela, il faut definir deux directives <directive
121 module="mod_authz_core">Require</directive> spéciales : <code>Require
122 dbd-login</code> et <code>Require dbd-logout</code>. Pour les détails de
123 leur utilisation, voir l'exemple de configuration ci-dessous.</p>
124 </section>
125
126 <section id="client">
127 <title>Intégration des ouvertures de sessions côté client</title>
128 <p>Pour les administrateurs qui désirent implémenter une gestion de
129 session côté client fonctionnant de concert avec les fonctionnalités de
130 connexion/déconnexion côté serveur offertes par ce module, il est possible
131 de définir ou en d'annuler par exemple un cookie HTTP ou un jeton
132 de connextion lorsqu'un utilisateur se connecte ou se déconnecte.</p>
133 <p> Pour supporter une telle intégration, <module>mod_authz_dbd</module> exporte
134 un déclenchement optionnel (hook) qui sera lancé chaque fois
135 que le statut d'un utilisateur sera mis à jour dans la base de données.
136 D'autres modules de gestion de session pourront alors utiliser ce
137 déclencheur pour utiliser des fonctions d'ouverture et de
138 fermeture de sessions côté client.</p>
139 </section>
140
141 <section id="example">
142 <title>Exemple de configuration</title>
143 <highlight language="config">
144 # configuration de mod_dbd
145 DBDriver pgsql
146 DBDParams "dbname=apacheauth user=apache pass=xxxxxx"
147
148 DBDMin  4
149 DBDKeep 8
150 DBDMax  20
151 DBDExptime 300
152
153 &lt;Directory "/usr/www/mon.site/team-private/"&gt;
154   # configuration de mod_authn_core et mod_auth_basic
155   # pour mod_authn_dbd
156   AuthType Basic
157   AuthName Team
158   AuthBasicProvider dbd
159
160   # requête SQL de mod_authn_dbd pour authentifier un utilisateur qui se
161   # connecte
162   AuthDBDUserPWQuery \
163     "SELECT password FROM authn WHERE user = %s AND login = 'true'"
164
165   # configuration de mod_authz_core pour mod_authz_dbd
166   Require dbd-group team
167
168   # configuration de mod_authz_dbd
169   AuthzDBDQuery "SELECT group FROM authz WHERE user = %s"
170
171   # lorsqu'un utilisateur échoue dans sa tentative d'authentification ou
172   # d'autorisation, on l'invite à se connecter ; cette page doit
173   # contenir un lien vers /team-private/login.html
174   ErrorDocument 401 /login-info.html
175
176   &lt;Files "login.html"&gt;
177     # il n'est pas nécessaire que l'utilisateur soit déjà connecté !
178     AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
179
180     # le processus de connexion dbd exécute une requête pour enregistrer
181     # la connexion de l'utilisateur
182     Require dbd-login
183     AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
184
185     # redirige l'utilisateur vers la page d'origine (si elle existe)
186     # après une connexion réussie
187     AuthzDBDLoginToReferer On
188   &lt;/Files&gt;
189
190   &lt;Files "logout.html"&gt;
191     # le processus de déconnexion dbd exécute une requête pour
192     # enregistrer la déconnexion de l'utilisateur
193     Require dbd-logout
194     AuthzDBDQuery "UPDATE authn SET login = 'false' WHERE user = %s"
195   &lt;/Files&gt;
196 &lt;/Directory&gt;
197 </highlight>
198 </section>
199
200 <section id="security">
201 <title>Prévention contre les injections SQL</title>
202   <p>Selon le pilote DBD choisi et le serveur d'arrière-plan que vous utilisez,
203   vous devrez prendre garde à la sécurité dans le domaine SQL.
204   Avec la plupart des pilotes, vous n'avez rien à faire : la
205   requête est préparée par la base de données au démarrage, et l'entrée
206   utilisateur n'est utilisée qu'en tant que donnée. Mais vous aurez
207   peut-être à nettoyer cette entrée. Au moment où ces lignes sont
208   écrites, le seul pilote DBD qui peut nécessiter le nettoyage de l'entrée
209   est FreeTDS.</p>
210   <p>Veuillez vous référez à la documentation de
211   <module>mod_dbd</module> pour plus d'informations à propos de la
212   sécurité dans ce domaine.</p>
213 </section>
214
215 <directivesynopsis>
216 <name>AuthzDBDQuery</name>
217 <description>Définit la requête SQL pour l'opération
218 requise</description>
219 <syntax>AuthzDBDQuery <var>requête</var></syntax>
220 <contextlist><context>directory</context></contextlist>
221
222 <usage>
223     <p>La directive <directive>AuthzDBDQuery</directive> permet de
224     spécifier une requête SQL à exécuter. Le but de cette requête dépend
225     de la directive <directive
226     module="mod_authz_core">Require</directive> en cours de
227     traitement.</p>
228     <ul>
229     <li>Avec la directive <code>Require dbd-group</code>, elle spécifie
230     une requête permettant de rechercher les groupes d'appartenance de
231     l'utilisateur courant. Ceci correspond à la fonctionnalité standard
232     d'autres modules d'autorisation comme
233     <module>mod_authz_groupfile</module> et
234     <module>mod_authz_dbm</module>.
235     La première colonne de chaque enregistrement renvoyé par la requête
236     doit contenir une chaîne de caractères correspondant à un nom de
237     groupe. La requête peut renvoyer zéro, un ou plusieurs
238     enregistrements.
239     <highlight language="config">
240 Require dbd-group
241 AuthzDBDQuery "SELECT group FROM groups WHERE user = %s"
242 </highlight>
243     </li>
244     <li>Avec la directive <code>Require dbd-login</code> ou
245     <code>Require dbd-logout</code>, elle ne refusera jamais l'accès,
246     mais au contraire exécutera une requête SQL permettant d'enregistrer
247     la connexion ou la déconnexion de l'utilisateur. Ce dernier doit
248     être déjà authentifié avec <module>mod_authn_dbd</module>.
249     <highlight language="config">
250 Require dbd-login
251 AuthzDBDQuery "UPDATE authn SET login = 'true' WHERE user = %s"
252 </highlight>
253     </li>
254     </ul>
255     <p>Dans tous les cas, l'identifiant utilisateur sera transmis comme
256     paramètre sous la forme d'une simple chaîne lorsque la requête SQL
257     sera exécutée. Il y sera fait référence dans la requête en utilisant
258     le spécificateur de format <code>%s</code>.</p>
259 </usage>
260 </directivesynopsis>
261
262 <directivesynopsis>
263 <name>AuthzDBDRedirectQuery</name>
264 <description>Définit une requête pour rechercher une page vers laquelle
265 rediriger l'utilisateur après une connexion réussie</description>
266 <syntax>AuthzDBDRedirectQuery <var>requête</var></syntax>
267 <contextlist><context>directory</context></contextlist>
268
269 <usage>
270     <p>Spécifie une requête SQL optionnelle à utiliser après une
271     connexion (ou une déconnexion) réussie pour rediriger l'utilisateur
272     vers une URL, qui peut être spécifique à l'utilisateur.
273     L'identifiant utilisateur sera transmis comme paramètre sous la
274     forme d'une simple chaîne lorsque la requête SQL sera exécutée. Il y
275     sera fait référence dans la requête en utilisant le spécificateur de
276     format <code>%s</code>.</p>
277     <highlight language="config">
278 AuthzDBDRedirectQuery "SELECT userpage FROM userpages WHERE user = %s"
279 </highlight>
280     <p>La première colonne du premier enregistrement renvoyé par la
281     requête doit contenir une chaîne de caractères correspondant à une
282     URL vers laquelle rediriger le client. Les enregistrements suivants
283     sont ignorés. Si aucun enregistrement n'est renvoyé, le client ne
284     sera pas redirigé.</p>
285     <p>Notez que <directive>AuthzDBDLoginToReferer</directive> l'emporte
286     sur cette directive si les deux sont définies.</p>
287 </usage>
288 </directivesynopsis>
289
290 <directivesynopsis>
291 <name>AuthzDBDLoginToReferer</name>
292 <description>Définit si le client doit être redirigé vers la page
293 d'origine en cas de connexion ou de déconnexion réussie si une en-tête
294 de requête <code>Referer</code> est présente</description>
295 <syntax>AuthzDBDLoginToReferer On|Off</syntax>
296 <default>AuthzDBDLoginToReferer Off</default>
297 <contextlist><context>directory</context></contextlist>
298
299 <usage>
300     <p>Utilisée en conjonction avec <code>Require dbd-login</code> ou
301     <code>Require dbd-logout</code>, cette directive permet de rediriger
302     le client vers la page d'origine (l'URL contenue dans l'en-tête
303     de requête HTTP <code>Referer</code>, s'il est présent). En
304     l'absence d'en-tête <code>Referer</code>, la définition
305     <code>AuthzDBDLoginToReferer On</code> sera ignorée.</p>
306 </usage>
307 </directivesynopsis>
308
309 </modulesynopsis>