2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1330911 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <modulesynopsis metafile="mod_access_compat.xml.meta">
27 <name>mod_access_compat</name>
28 <description>Autorisations de groupe à base de nom d'hôte (nom ou
29 adresse IP)</description>
30 <status>Extension</status>
31 <sourcefile>mod_access_compat.c</sourcefile>
32 <identifier>access_compat_module</identifier>
33 <compatibility>Disponible dans la version 2.3 du serveur HTTP Apache
34 à des fins de compatibilité
35 avec les précédentes versions d'Apache httpd 2.x. Les directives fournies par
36 ce module sont devenues obsolètes depuis la refonte d'authz. Voir
37 <module>mod_authz_host</module></compatibility>
40 <p>Les directives fournies par le module
41 <module>mod_access_compat</module> s'utilisent dans les sections
42 <directive module="core" type="section">Directory</directive>,
43 <directive module="core" type="section">Files</directive> et
44 <directive module="core" type="section">Location</directive>, ainsi
45 que dans les fichiers <code><a
46 href="core.html#accessfilename">.htaccess</a></code> et permettent
47 de contrôler l'accès à certaines parties du serveur. On peut
48 contrôler cet accès en fonction du nom d'hôte du client, de son
49 adresse IP ou d'autres caractéristiques de la requête, telles
50 qu'elles sont enregistrées dans les <a href="../env.html">variables
51 d'environnement</a>. Les directives <directive
52 module="mod_access_compat">Allow</directive> et <directive
53 module="mod_access_compat">Deny</directive> permettent de spécifier
54 quels clients sont ou ne sont pas autorisés à accéder au serveur,
55 alors que la directive <directive
56 module="mod_access_compat">Order</directive> définit le statut
57 d'accès par défaut, et détermine la manière dont les directives
58 <directive module="mod_access_compat">Allow</directive> et
59 <directive module="mod_access_compat">Deny</directive> interagissent
62 <p>Les restrictions d'accès à base de nom d'hôte et
63 l'authentification à base de mot de passe peuvent être implémentées
64 simultanément. Dans ce cas, on utilise la directive <directive
65 module="mod_access_compat">Satisfy</directive> pour déterminer la
66 manière dont ces deux modes de restrictions interagissent.</p>
68 <note type="warning"><title>Note</title>
69 <p>Les directives fournies par le module
70 <module>mod_access_compat</module> sont devenues obsolètes depuis
71 la refonte d'authz. Voir <module>mod_authz_host</module>.</p>
74 <p>En général, les directives de restriction d'accès s'appliquent à
75 toutes les méthodes d'accès (<code>GET</code>, <code>PUT</code>,
76 <code>POST</code>, etc...). C'est d'ailleurs ce que l'on souhaite
77 dans la plupart des cas. Il est cependant possible de restreindre
78 certaines méthodes, alors que les autres méthodes ne se verront
79 imposée aucune restriction, en regroupant les directives à
80 l'intérieur d'une section <directive module="core"
81 type="section">Limit</directive>.</p>
83 <note><title>Fusion des sections de configuration</title>
84 <p>Lorsqu'une directive fournie par ce module est utilisée dans
85 une nouvelle section de configuration, cette dernière n'hérite
86 d'aucune directive définie dans une section précédente.</p>
90 <seealso><directive module="mod_authz_core">Require</directive></seealso>
91 <seealso><module>mod_authz_host</module></seealso>
92 <seealso><module>mod_authz_core</module></seealso>
96 <description>Spécifie quels hôtes peuvent accéder à une certaine zone du
98 <syntax> Allow from all|<var>hôte</var>|env=[!]<var>variable
100 [<var>hôte</var>|env=[!]<var>variable d'environnement</var>] ...</syntax>
101 <contextlist><context>directory</context><context>.htaccess</context>
103 <override>Limit</override>
106 <p>La directive <directive>Allow</directive> permet de définir quels
107 hôtes ont le droit d'accéder à une certaine partie du serveur. On
108 peut contrôler l'accès par nom d'hôte, adresse IP, intervalle
109 d'adresses IP, ou toute autre caractéristique de la requête client
110 enregistrée dans les variables d'environnement.</p>
112 <p>Le premier argument de cette directive est toujours
113 <code>from</code>. Les arguments suivants peuvent prendre trois
114 formes différentes. Si <code>Allow from all</code> est spécifié,
115 tout hôte se voit accordé l'accès, en tenant compte des directives
116 <directive module="mod_access_compat">Deny</directive> et <directive
117 module="mod_access_compat">Order</directive> comme décrit plus loin.
118 Pour ne permettre l'accès au serveur qu'à un hôte ou un groupe
119 d'hôtes particuliers, on peut spécifier un <em>nom d'hôte</em> sous
120 une des formes suivantes :</p>
123 <dt>Un nom de domaine (partiel)</dt>
126 <highlight language="config">
127 Allow from example.org
128 Allow from .net example.edu
130 <p>Les hôtes dont les noms correspondent ou se terminent par la
131 chaîne spécifiée ont l'autorisation d'accès. Seules les
132 composantes entières du nom d'hôte doivent correspondre ; ainsi,
133 dans l'exemple ci-dessus, <code>foo.example.org</code>
134 correspondra, mais <code>fooexample.org</code> ne conviendra pas.
135 Avec cette configuration, Apache httpd va effectuer une double recherche
136 DNS sur l'adresse IP du client, sans tenir compte de la
137 définition de la directive <directive
138 module="core">HostnameLookups</directive>. Tout d'abord, une
139 recherche DNS inverse sur l'adresse IP est effectuée pour
140 déterminer le nom d'hôte associé, puis une recherche directe sur
141 le nom d'hôte est effectuée afin de s'assurer qu'il correspond
142 bien à l'adresse IP originale. L'accès ne sera accordé que si le
143 nom d'hôte correspond et si les recherches DNS inverse et directe
146 <dt>Une adresse IP complète</dt>
149 <highlight language="config">
151 Allow from 192.168.1.104 192.168.1.205
153 <p>L'adresse IP d'un hôte auquel on a accordé l'accès</p></dd>
155 <dt>Une adresse IP partielle</dt>
158 <highlight language="config">
160 Allow from 10 172.20 192.168.2
162 <p>De un à trois des premiers octets d'une adresse IP, afin de
163 restreindre l'accès à un sous-réseau.</p></dd>
165 <dt>Une paire réseau/masque de sous-réseau</dt>
168 <highlight language="config">
169 Allow from 10.1.0.0/255.255.0.0
171 <p>Un réseau a.b.c.d, et un masque de sous-réseau w.x.y.z, pour
172 une définition plus précise de la restriction d'accès imposée à un
173 sous-réseau.</p></dd>
175 <dt>Une spécification CIDR réseau/nnn</dt>
178 <highlight language="config">
179 Allow from 10.1.0.0/16
181 <p>Identique au cas précédent, mis à part que le masque est
182 constitué des nnn bits de poids fort.</p></dd>
185 <p>Notez que les trois derniers exemples désignent le même ensemble
188 <p>On peut spécifier des adresses et sous-réseaux IPv6 de la manière
191 <highlight language="config">
192 Allow from 2001:db8::a00:20ff:fea7:ccea
193 Allow from 2001:db8::a00:20ff:fea7:ccea/10
196 <p>Le troisième format d'argument de la directive
197 <directive>Allow</directive> permet de contrôler l'accès au serveur
198 en fonction de l'existence d'une <a
199 href="../env.html">variable d'environnement</a>. Lorsque <code>Allow
200 from env=<var>variable d'environnement</var></code> est spécifié, la
201 requête est autorisée si la variable d'environnement <var>variable
202 d'environnement</var> existe. En revanche, lorsque <code>Allow from
203 env=!<var>env-variable</var></code> est spécifié, la
204 requête est autorisée si la variable d'environnement <var>variable
205 d'environnement</var> n'existe pas. Le serveur permet de définir
206 avec souplesse des variables d'environnement en se basant sur les
207 caractéristiques de la requête client et en utilisant les directives
208 fournies par le module <module>mod_setenvif</module>. Ainsi, on peut
209 utiliser la directive <directive>Allow</directive> pour permettre
210 l'accès en fonction de paramètres comme le <code>User-Agent</code>
211 (type de navigateur) des clients, le <code>Referer</code>, ou
212 d'autres champs d'en-tête de la requête HTTP.</p>
214 <highlight language="config">
215 SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
216 <Directory /docroot>
219 Allow from env=let_me_in
223 <p>Dans cet exemple, les navigateurs dont la chaîne user-agent
224 commence par <code>KnockKnock/2.0</code> se verront accorder
225 l'accès, alors que tous les autres seront rejetés.</p>
227 <note><title>Fusion des sections de configuration</title>
228 <p>Lorsqu'une directive fournie par ce module est utilisée dans
229 une nouvelle section de configuration, cette dernière n'hérite
230 d'aucune directive définie dans une section précédente.</p>
237 <description>Définit quels hôtes ne sont pas autorisés à accéder au
238 serveur</description>
239 <syntax> Deny from all|<var>hôte</var>|env=[!]<var>variable
240 d'environnement</var>
241 [<var>hôte</var>|env=[!]<var>variable d'environnement</var>] ...</syntax>
242 <contextlist><context>directory</context><context>.htaccess</context>
244 <override>Limit</override>
247 <p>Cette directive permet de restreindre l'accès au serveur en
248 fonction du nom d'hôte, de l'adresse IP ou de variables
249 d'environnement. Les arguments de la directive
250 <directive>Deny</directive> sont identiques aux arguments de la
252 module="mod_access_compat">Allow</directive>.</p>
258 <description>Définit le statut d'accès par défaut et l'ordre dans lequel
259 les directives <directive>Allow</directive> et
260 <directive>Deny</directive> sont évaluées.</description>
261 <syntax> Order <var>ordre</var></syntax>
262 <default>Order Deny,Allow</default>
263 <contextlist><context>directory</context><context>.htaccess</context>
265 <override>Limit</override>
269 <p>La directive <directive>Order</directive>, associée aux
270 directives <directive module="mod_access_compat">Allow</directive>
271 et <directive module="mod_access_compat">Deny</directive>,
272 implémente un système de contrôle d'accès en trois passes. Au cours
273 de la première passe, ce sont soit toutes les directives <directive
274 module="mod_access_compat">Allow</directive>, soit toutes les
275 directives <directive
276 module="mod_access_compat">Deny</directive> qui sont traitées, selon
277 la définition de la directive <directive
278 module="mod_access_compat">Order</directive>. Le reste des
279 directives (<directive module="mod_access_compat">Deny</directive>
280 ou <directive module="mod_access_compat">Allow</directive>) est
281 traité au cours de la seconde passe. La troisième passe s'applique à
282 toutes les requêtes qui ne sont concernées par aucune des deux
283 premières passes.</p>
285 <p>Notez que toutes les directives <directive
286 module="mod_access_compat">Allow</directive> et <directive
287 module="mod_access_compat">Deny</directive> sont traitées, à la
288 différence d'un pare-feu classique où seule la première règle qui
289 correspond est utilisée. La dernière directive qui correspond
290 s'applique ( à la différence là encore d'un pare-feu classique). De
291 plus, l'ordre dans lequel les lignes apparaissent dans le fichier de
292 configuration n'a pas d'incidence -- toutes les lignes <directive
293 module="mod_access_compat">Allow</directive> sont considérées comme
294 un groupe, toutes les lignes <directive
295 module="mod_access_compat">Deny</directive> comme un autre, et le
296 statut par défaut a son existence propre.</p>
298 <p><em>Ordre</em> peut être :</p>
301 <dt><code>Allow,Deny</code></dt>
303 <dd>Dans un premier temps, toutes les directives <directive
304 module="mod_access_compat">Allow</directive> sont évaluées ; au
305 moins une d'entre elles doit correspondre, sinon la requête est
306 rejetée. Ensuite, toutes les directives <directive
307 module="mod_access_compat">Deny</directive> sont évaluées. Si au
308 moins l'une d'entre elles correspond, la requête est rejetée.
309 Enfin, toute requête qui ne correspond à aucune directive
310 <directive module="mod_access_compat">Allow</directive> ou
311 <directive module="mod_access_compat">Deny</directive> est rejetée
312 par défaut.</dd>
314 <dt><code>Deny,Allow</code></dt>
316 <dd>Dans un premier temps, toutes les directives <directive
317 module="mod_access_compat">Deny</directive> sont évaluées ; Si au
318 moins une d'entre elles correspond, la requête est rejetée,
319 <strong>à moins</strong> qu'elle corresponde aussi à une directive
320 <directive module="mod_access_compat">Allow</directive>. Toute
321 requête qui ne correspond à aucune directive <directive
322 module="mod_access_compat">Allow</directive> ou <directive
323 module="mod_access_compat">Deny</directive> est autorisée.</dd>
325 <dt><code>Mutual-failure</code></dt>
327 <dd>Cet argument a le même effet que <code>Allow,Deny</code> et
328 est devenu de ce fait obsolète.</dd>
331 <p>Les mots-clés ne peuvent être séparés que par des virgules ;
332 <em>aucun espace</em> ne doit s'intercaler entre eux.</p>
337 <th>Résultat Allow,Deny</th>
338 <th>Résultat Deny,Allow</th>
340 <th>Correspond à Allow seulement</th>
341 <td>Requête autorisée</td>
342 <td>Requête autorisée</td>
344 <th>Correspond à Deny seulement</th>
345 <td>Requête rejetée</td>
346 <td>Requête rejetée</td>
348 <th>Aucune correspondance</th>
349 <td>Par défaut la seconde directive : rejet</td>
350 <td>Par défaut la seconde directive : autorisation</td>
352 <th>Correspond à Allow & Deny</th>
353 <td>La dernière correspondance l'emporte : rejet</td>
354 <td>La dernière correspondance l'emporte : autorisation</td>
358 <p>Dans cet exemple, tous les hôtes du domaine example.org ont
359 l'autorisation d'accès ; tous les autres voient leur accès
362 <highlight language="config">
365 Allow from example.org
368 <p>Dans l'exemple suivant, tous les hôtes du domaine example.org ont
369 l'autorisation d'accès, sauf ceux du sous-domaine foo.example.org qui
370 voient leur accès refusé. Tous les hôtes qui ne sont pas dans le
371 domaine example.org sont rejetés car le statut par défaut est positionné
373 module="mod_access_compat">Deny</directive>, et consiste donc en un
374 refus d'accès.</p>
376 <highlight language="config">
378 Allow from example.org
379 Deny from foo.example.org
382 <p>Par contre, si la valeur de la directive
383 <directive>Order</directive>, dans l'exemple précédent, est
384 <code>Deny,Allow</code>, tout le monde a l'autorisation d'accès.
385 Ceci est dû au fait que <code>Allow from example.org</code> sera
386 évalué en dernier, sans tenir compte de l'ordre réel dans lequel les
387 directives apparaissent dans le fichier de configuration, et va
388 l'emporter sur <code>Deny from foo.example.org</code>. Tout hôte qui
389 n'est pas dans le domaine <code>example.org</code> aura aussi
390 l'autorisation d'accès car le statut par défaut est positionné sur
392 module="mod_access_compat">Allow</directive> et constitue donc une
393 autorisation d'accès.</p>
395 <p>La présence d'une directive <directive>Order</directive> peut
396 affecter le contrôle d'accès à une partie du serveur même en
397 l'abscence de directives <directive
398 module="mod_access_compat">Allow</directive> et <directive
399 module="mod_access_compat">Deny</directive> associées, à cause de
400 son influence sur le statut par défaut. Par exemple,</p>
402 <highlight language="config">
403 <Directory /www>
408 <p>va interdire tout accès au répertoire <code>/www</code> à cause
409 du statut d'accès par défaut qui est défini à <directive
410 module="mod_access_compat">Deny</directive>.</p>
412 <p>La directive <directive>Order</directive> ne contrôle l'ordre
413 dans lequel sont traitées les directives d'accès qu'au cours de
414 chaque phase du traitement de la configuration du serveur. Ceci
415 implique, par exemple, qu'une directive <directive
416 module="mod_access_compat">Allow</directive> ou <directive
417 module="mod_access_compat">Deny</directive> située dans une section
418 <directive module="core" type="section">Location</directive> sera
419 toujours évaluée après une directive <directive
420 module="mod_access_compat">Allow</directive> ou <directive
421 module="mod_access_compat">Deny</directive> située dans une section
422 <directive module="core" type="section">Directory</directive> ou un
423 fichier <code>.htaccess</code>, sans tenir compte de la
424 définition de la directive <directive>Order</directive>. Pour plus
425 de détails à propos de la fusion des sections de configuration, voir
427 href="../sections.html">Comment fonctionnent les sections Directory,
428 Location et Files</a>.</p>
430 <note><title>Fusion des sections de configuration</title>
431 <p>Lorsqu'une directive fournie par ce module est utilisée dans
432 une nouvelle section de configuration, cette dernière n'hérite
433 d'aucune directive définie dans une section précédente.</p>
440 <description>Interaction entre le contrôle d'accès en fonction de l'hôte
441 et l'authentification utilisateur</description>
442 <syntax>Satisfy Any|All</syntax>
443 <default>Satisfy All</default>
444 <contextlist><context>directory</context><context>.htaccess</context>
446 <override>AuthConfig</override>
447 <compatibility>Affecté par <directive module="core" type="section"
448 >Limit</directive> et <directive module="core"
449 type="section">LimitExcept</directive> à partir de la version
450 2.0.51</compatibility>
452 <p>Politique d'accès dans le cas où on utilise à la fois <directive
453 module="mod_access_compat">Allow</directive> et <directive
454 module="mod_authz_core">Require</directive>. L'argument est soit
455 <code>All</code>, soit <code>Any</code>. L'utilisation de cette
456 directive n'a de sens que si l'accès à une zone particulière du
457 serveur est restreinte par utilisateur/mot de passe et en fonction
458 de l'adresse IP de l'hôte client. Dans ce cas, par
459 défaut (<code>All</code>), le client doit satisfaire à la
460 restriction d'adresse, <em>et</em> fournir un couple
461 utilisateur/mot de passe valide. Avec l'argument <code>Any</code>,
462 le client se verra accorder l'accès s'il satisfait à la restriction
463 d'adresse ou fournit un couple utilisateur/mot de passe valide. On
464 peut utiliser cette dernière définition pour restreindre l'accès à
465 une zone par mot de passe, mais accorder l'accès aux clients
466 possédant certaines adresses IP sans qu'ils aient à fournir de mot
469 <p>Par exemple, si vous souhaitez que les utilisateurs de votre
470 réseau accèdent à une zone de votre site web sans restriction, mais
471 que l'accès à cette zone nécessite un mot de passe pour les autres
472 utilisateurs, vous pouvez utiliser une configuration du style :</p>
474 <highlight language="config">
481 Une autre utilisation fréquente de la directive
482 <directive>Satisfy</directive> est l'allègement des restrictions
483 d'accès à un sous-répertoire par rapport aux restrictions d'accès au
484 répertoire parent :
487 <highlight language="config">
488 <Directory /var/www/private>
492 <Directory /var/www/private/public>
498 <p>Dans l'exemple ci-dessus, l'accès au répertoire
499 <code>/var/www/private</code> nécessitera une authentification,
500 alors que l'accès au répertoire <code>/var/www/private/public</code>
501 sera accordé sans restriction.</p>
504 <p>Depuis la version 2.0.51, les directives
505 <directive>Satisfy</directive> peuvent être restreintes à certaines
506 méthodes particulières à l'aide des sections <directive
507 module="core" type="section">Limit</directive> et <directive
508 module="core" type="section">LimitExcept</directive>.</p>
510 <note><title>Fusion des sections de configuration</title>
511 <p>Lorsqu'une directive fournie par ce module est utilisée dans
512 une nouvelle section de configuration, cette dernière n'hérite
513 d'aucune directive définie dans une section précédente.</p>
516 <seealso><directive module="mod_access_compat">Allow</directive></seealso>
517 <seealso><directive module="mod_authz_core">Require</directive></seealso>