2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1043126 -->
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>
84 <seealso><directive module="mod_authz_core">Require</directive></seealso>
85 <seealso><module>mod_authz_host</module></seealso>
86 <seealso><module>mod_authz_core</module></seealso>
90 <description>Spécifie quels hôtes peuvent accéder à une certaine zone du
92 <syntax> Allow from all|<var>hôte</var>|env=[!]<var>variable
94 [<var>hôte</var>|env=[!]<var>variable d'environnement</var>] ...</syntax>
95 <contextlist><context>directory</context><context>.htaccess</context>
97 <override>Limit</override>
100 <p>La directive <directive>Allow</directive> permet de définir quels
101 hôtes ont le droit d'accéder à une certaine partie du serveur. On
102 peut contrôler l'accès par nom d'hôte, adresse IP, intervalle
103 d'adresses IP, ou toute autre caractéristique de la requête client
104 enregistrée dans les variables d'environnement.</p>
106 <p>Le premier argument de cette directive est toujours
107 <code>from</code>. Les arguments suivants peuvent prendre trois
108 formes différentes. Si <code>Allow from all</code> est spécifié,
109 tout hôte se voit accordé l'accès, en tenant compte des directives
110 <directive module="mod_access_compat">Deny</directive> et <directive
111 module="mod_access_compat">Order</directive> comme décrit plus loin.
112 Pour ne permettre l'accès au serveur qu'à un hôte ou un groupe
113 d'hôtes particuliers, on peut spécifier un <em>nom d'hôte</em> sous
114 une des formes suivantes :</p>
117 <dt>Un nom de domaine (partiel)</dt>
120 <example><title>Exemple :</title>
121 Allow from example.org<br />
122 Allow from .net example.edu
124 <p>Les hôtes dont les noms correspondent ou se terminent par la
125 chaîne spécifiée ont l'autorisation d'accès. Seules les
126 composantes entières du nom d'hôte doivent correspondre ; ainsi,
127 dans l'exemple ci-dessus, <code>foo.example.org</code>
128 correspondra, mais <code>fooexample.org</code> ne conviendra pas.
129 Avec cette configuration, Apache httpd va effectuer une double recherche
130 DNS sur l'adresse IP du client, sans tenir compte de la
131 définition de la directive <directive
132 module="core">HostnameLookups</directive>. Tout d'abord, une
133 recherche DNS inverse sur l'adresse IP est effectuée pour
134 déterminer le nom d'hôte associé, puis une recherche directe sur
135 le nom d'hôte est effectuée afin de s'assurer qu'il correspond
136 bien à l'adresse IP originale. L'accès ne sera accordé que si le
137 nom d'hôte correspond et si les recherches DNS inverse et directe
140 <dt>Une adresse IP complète</dt>
143 <example><title>Exemple :</title>
144 Allow from 10.1.2.3<br />
145 Allow from 192.168.1.104 192.168.1.205
147 <p>L'adresse IP d'un hôte auquel on a accordé l'accès</p></dd>
149 <dt>Une adresse IP partielle</dt>
152 <example><title>Exemple :</title>
153 Allow from 10.1<br />
154 Allow from 10 172.20 192.168.2
156 <p>De un à trois des premiers octets d'une adresse IP, afin de
157 restreindre l'accès à un sous-réseau.</p></dd>
159 <dt>Une paire réseau/masque de sous-réseau</dt>
162 <example><title>Exemple :</title>
163 Allow from 10.1.0.0/255.255.0.0
165 <p>Un réseau a.b.c.d, et un masque de sous-réseau w.x.y.z, pour
166 une définition plus précise de la restriction d'accès imposée à un
167 sous-réseau.</p></dd>
169 <dt>Une spécification CIDR réseau/nnn</dt>
172 <example><title>Exemple :</title>
173 Allow from 10.1.0.0/16
175 <p>Identique au cas précédent, mis à part que le masque est
176 constitué des nnn bits de poids fort.</p></dd>
179 <p>Notez que les trois derniers exemples désignent le même ensemble
182 <p>On peut spécifier des adresses et sous-réseaux IPv6 de la manière
186 Allow from 2001:db8::a00:20ff:fea7:ccea<br />
187 Allow from 2001:db8::a00:20ff:fea7:ccea/10
190 <p>Le troisième format d'argument de la directive
191 <directive>Allow</directive> permet de contrôler l'accès au serveur
192 en fonction de l'existence d'une <a
193 href="../env.html">variable d'environnement</a>. Lorsque <code>Allow
194 from env=<var>variable d'environnement</var></code> est spécifié, la
195 requête est autorisée si la variable d'environnement <var>variable
196 d'environnement</var> existe. En revanche, lorsque <code>Allow from
197 env=!<var>env-variable</var></code> est spécifié, la
198 requête est autorisée si la variable d'environnement <var>variable
199 d'environnement</var> n'existe pas. Le serveur permet de définir
200 avec souplesse des variables d'environnement en se basant sur les
201 caractéristiques de la requête client et en utilisant les directives
202 fournies par le module <module>mod_setenvif</module>. Ainsi, on peut
203 utiliser la directive <directive>Allow</directive> pour permettre
204 l'accès en fonction de paramètres comme le <code>User-Agent</code>
205 (type de navigateur) des clients, le <code>Referer</code>, ou
206 d'autres champs d'en-tête de la requête HTTP.</p>
208 <example><title>Exemple :</title>
209 SetEnvIf User-Agent ^KnockKnock/2\.0 laissez_moi_entrer<br />
210 <Directory /docroot><br />
212 Order Deny,Allow<br />
214 Allow from env=laissez_moi_entrer<br />
219 <p>Dans cet exemple, les navigateurs dont la chaîne user-agent
220 commence par <code>KnockKnock/2.0</code> se verront accorder
221 l'accès, alors que tous les autres seront rejetés.</p>
227 <description>Définit quels hôtes ne sont pas autorisés à accéder au
228 serveur</description>
229 <syntax> Deny from all|<var>hôte</var>|env=[!]<var>variable
230 d'environnement</var>
231 [<var>hôte</var>|env=[!]<var>variable d'environnement</var>] ...</syntax>
232 <contextlist><context>directory</context><context>.htaccess</context>
234 <override>Limit</override>
237 <p>Cette directive permet de restreindre l'accès au serveur en
238 fonction du nom d'hôte, de l'adresse IP ou de variables
239 d'environnement. Les arguments de la directive
240 <directive>Deny</directive> sont identiques aux arguments de la
242 module="mod_access_compat">Allow</directive>.</p>
248 <description>Définit le statut d'accès par défaut et l'ordre dans lequel
249 les directives <directive>Allow</directive> et
250 <directive>Deny</directive> sont évaluées.</description>
251 <syntax> Order <var>ordre</var></syntax>
252 <default>Order Deny,Allow</default>
253 <contextlist><context>directory</context><context>.htaccess</context>
255 <override>Limit</override>
259 <p>La directive <directive>Order</directive>, associée aux
260 directives <directive module="mod_access_compat">Allow</directive>
261 et <directive module="mod_access_compat">Deny</directive>,
262 implémente un système de contrôle d'accès en trois passes. Au cours
263 de la première passe, ce sont soit toutes les directives <directive
264 module="mod_access_compat">Allow</directive>, soit toutes les
265 directives <directive
266 module="mod_access_compat">Deny</directive> qui sont traitées, selon
267 la définition de la directive <directive
268 module="mod_access_compat">Order</directive>. Le reste des
269 directives (<directive module="mod_access_compat">Deny</directive>
270 ou <directive module="mod_access_compat">Allow</directive>) est
271 traité au cours de la seconde passe. La troisième passe s'applique à
272 toutes les requêtes qui ne sont concernées par aucune des deux
273 premières passes.</p>
275 <p>Notez que toutes les directives <directive
276 module="mod_access_compat">Allow</directive> et <directive
277 module="mod_access_compat">Deny</directive> sont traitées, à la
278 différence d'un pare-feu classique où seule la première règle qui
279 correspond est utilisée. La dernière directive qui correspond
280 s'applique ( à la différence là encore d'un pare-feu classique). De
281 plus, l'ordre dans lequel les lignes apparaissent dans le fichier de
282 configuration n'a pas d'incidence -- toutes les lignes <directive
283 module="mod_access_compat">Allow</directive> sont considérées comme
284 un groupe, toutes les lignes <directive
285 module="mod_access_compat">Deny</directive> comme un autre, et le
286 statut par défaut a son existence propre.</p>
288 <p><em>Ordre</em> peut être :</p>
291 <dt><code>Allow,Deny</code></dt>
293 <dd>Dans un premier temps, toutes les directives <directive
294 module="mod_access_compat">Allow</directive> sont évaluées ; au
295 moins une d'entre elles doit correspondre, sinon la requête est
296 rejetée. Ensuite, toutes les directives <directive
297 module="mod_access_compat">Deny</directive> sont évaluées. Si au
298 moins l'une d'entre elles correspond, la requête est rejetée.
299 Enfin, toute requête qui ne correspond à aucune directive
300 <directive module="mod_access_compat">Allow</directive> ou
301 <directive module="mod_access_compat">Deny</directive> est rejetée
302 par défaut.</dd>
304 <dt><code>Deny,Allow</code></dt>
306 <dd>Dans un premier temps, toutes les directives <directive
307 module="mod_access_compat">Deny</directive> sont évaluées ; Si au
308 moins une d'entre elles correspond, la requête est rejetée,
309 <strong>à moins</strong> qu'elle corresponde aussi à une directive
310 <directive module="mod_access_compat">Allow</directive>. Toute
311 requête qui ne correspond à aucune directive <directive
312 module="mod_access_compat">Allow</directive> ou <directive
313 module="mod_access_compat">Deny</directive> est autorisée.</dd>
315 <dt><code>Mutual-failure</code></dt>
317 <dd>Cet argument a le même effet que <code>Allow,Deny</code> et
318 est devenu de ce fait obsolète.</dd>
321 <p>Les mots-clés ne peuvent être séparés que par des virgules ;
322 <em>aucun espace</em> ne doit s'intercaler entre eux.</p>
327 <th>Résultat Allow,Deny</th>
328 <th>Résultat Deny,Allow</th>
330 <th>Correspond à Allow seulement</th>
331 <td>Requête autorisée</td>
332 <td>Requête autorisée</td>
334 <th>Correspond à Deny seulement</th>
335 <td>Requête rejetée</td>
336 <td>Requête rejetée</td>
338 <th>Aucune correspondance</th>
339 <td>Par défaut la seconde directive : rejet</td>
340 <td>Par défaut la seconde directive : autorisation</td>
342 <th>Correspond à Allow & Deny</th>
343 <td>La dernière correspondance l'emporte : rejet</td>
344 <td>La dernière correspondance l'emporte : autorisation</td>
348 <p>Dans cet exemple, tous les hôtes du domaine example.org ont
349 l'autorisation d'accès ; tous les autres voient leur accès
353 Order Deny,Allow<br />
355 Allow from example.org
358 <p>Dans l'exemple suivant, tous les hôtes du domaine example.org ont
359 l'autorisation d'accès, sauf ceux du sous-domaine foo.example.org qui
360 voient leur accès refusé. Tous les hôtes qui ne sont pas dans le
361 domaine example.org sont rejetés car le statut par défaut est positionné
363 module="mod_access_compat">Deny</directive>, et consiste donc en un
364 refus d'accès.</p>
367 Order Allow,Deny<br />
368 Allow from example.org<br />
369 Deny from foo.example.org
372 <p>Par contre, si la valeur de la directive
373 <directive>Order</directive>, dans l'exemple précédent, est
374 <code>Deny,Allow</code>, tout le monde a l'autorisation d'accès.
375 Ceci est dû au fait que <code>Allow from example.org</code> sera
376 évalué en dernier, sans tenir compte de l'ordre réel dans lequel les
377 directives apparaissent dans le fichier de configuration, et va
378 l'emporter sur <code>Deny from foo.example.org</code>. Tout hôte qui
379 n'est pas dans le domaine <code>example.org</code> aura aussi
380 l'autorisation d'accès car le statut par défaut est positionné sur
382 module="mod_access_compat">Allow</directive> et constitue donc une
383 autorisation d'accès.</p>
385 <p>La présence d'une directive <directive>Order</directive> peut
386 affecter le contrôle d'accès à une partie du serveur même en
387 l'abscence de directives <directive
388 module="mod_access_compat">Allow</directive> et <directive
389 module="mod_access_compat">Deny</directive> associées, à cause de
390 son influence sur le statut par défaut. Par exemple,</p>
393 <Directory /www><br />
395 Order Allow,Deny<br />
400 <p>va interdire tout accès au répertoire <code>/www</code> à cause
401 du statut d'accès par défaut qui est défini à <directive
402 module="mod_access_compat">Deny</directive>.</p>
404 <p>La directive <directive>Order</directive> ne contrôle l'ordre
405 dans lequel sont traitées les directives d'accès qu'au cours de
406 chaque phase du traitement de la configuration du serveur. Ceci
407 implique, par exemple, qu'une directive <directive
408 module="mod_access_compat">Allow</directive> ou <directive
409 module="mod_access_compat">Deny</directive> située dans une section
410 <directive module="core" type="section">Location</directive> sera
411 toujours évaluée après une directive <directive
412 module="mod_access_compat">Allow</directive> ou <directive
413 module="mod_access_compat">Deny</directive> située dans une section
414 <directive module="core" type="section">Directory</directive> ou un
415 fichier <code>.htaccess</code>, sans tenir compte de la
416 définition de la directive <directive>Order</directive>. Pour plus
417 de détails à propos de la fusion des sections de configuration, voir
419 href="../sections.html">Comment fonctionnent les sections Directory,
420 Location et Files</a>.</p>
426 <description>Interaction entre le contrôle d'accès en fonction de l'hôte
427 et l'authentification utilisateur</description>
428 <syntax>Satisfy Any|All</syntax>
429 <default>Satisfy All</default>
430 <contextlist><context>directory</context><context>.htaccess</context>
432 <override>AuthConfig</override>
433 <compatibility>Affecté par <directive module="core" type="section"
434 >Limit</directive> et <directive module="core"
435 type="section">LimitExcept</directive> à partir de la version
436 2.0.51</compatibility>
438 <p>Politique d'accès dans le cas où on utilise à la fois <directive
439 module="mod_access_compat">Allow</directive> et <directive
440 module="mod_authz_core">Require</directive>. L'argument est soit
441 <code>All</code>, soit <code>Any</code>. L'utilisation de cette
442 directive n'a de sens que si l'accès à une zone particulière du
443 serveur est restreinte par utilisateur/mot de passe et en fonction
444 de l'adresse IP de l'hôte client. Dans ce cas, par
445 défaut (<code>All</code>), le client doit satisfaire à la
446 restriction d'adresse, <em>et</em> fournir un couple
447 utilisateur/mot de passe valide. Avec l'argument <code>Any</code>,
448 le client se verra accorder l'accès s'il satisfait à la restriction
449 d'adresse ou fournit un couple utilisateur/mot de passe valide. On
450 peut utiliser cette dernière définition pour restreindre l'accès à
451 une zone par mot de passe, mais accorder l'accès aux clients
452 possédant certaines adresses IP sans qu'ils aient à fournir de mot
455 <p>Par exemple, si vous souhaitez que les utilisateurs de votre
456 réseau accèdent à une zone de votre site web sans restriction, mais
457 que l'accès à cette zone nécessite un mot de passe pour les autres
458 utilisateurs, vous pouvez utiliser une configuration du style :</p>
461 Require valid-user<br />
462 Allow from 192.168.1<br />
467 Une autre utilisation fréquente de la directive
468 <directive>Satisfy</directive> est l'allègement des restrictions
469 d'accès à un sous-répertoire par rapport aux restrictions d'accès au
470 répertoire parent :
474 <Directory /var/www/private><br />
475 Require valid-user<br />
476 </Directory><br />
478 <Directory /var/www/private/public><br />
484 <p>Dans l'exemple ci-dessus, l'accès au répertoire
485 <code>/var/www/private</code> nécessitera une authentification,
486 alors que l'accès au répertoire <code>/var/www/private/public</code>
487 sera accordé sans restriction.</p>
490 <p>Depuis la version 2.0.51, les directives
491 <directive>Satisfy</directive> peuvent être restreintes à certaines
492 méthodes particulières à l'aide des sections <directive
493 module="core" type="section">Limit</directive> et <directive
494 module="core" type="section">LimitExcept</directive>.</p>
496 <seealso><directive module="mod_access_compat">Allow</directive></seealso>
497 <seealso><directive module="mod_authz_core">Require</directive></seealso>