]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_authz_core.xml.fr
e120e5f7a15512f3bfa2a95db774283248562959
[apache] / docs / manual / mod / mod_authz_core.xml.fr
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1642590:1673582 (outdated) -->
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_core.xml.meta">
26
27 <name>mod_authz_core</name>
28 <description>Socle d'autorisation</description>
29 <status>Base</status>
30 <sourcefile>mod_authz_core.c</sourcefile>
31 <identifier>authz_core_module</identifier>
32 <compatibility>Disponible depuis la version 2.3
33 d'Apache HTTPD</compatibility>
34
35 <summary>
36     <p>Ce module fournit un socle de fonctionnalit&eacute;s d'autorisation
37     permettant d'accorder ou refuser l'acc&egrave;s &agrave; certaines zones du site
38     web aux utilisateurs authentifi&eacute;s. <module>mod_authz_core</module>
39     donne la possibilit&eacute; d'enregistrer divers fournisseurs
40     d'autorisation. Il est en g&eacute;n&eacute;ral utilis&eacute; avec un module fournisseur
41     d'authentification comme <module>mod_authn_file</module>, et un
42     module d'autorisation comme <module>mod_authz_user</module>. Il
43     permet aussi l'application d'une logique &eacute;labor&eacute;e au d&eacute;roulement du
44     processus d'autorisation.</p>
45 </summary>
46
47 <section id="logic"><title>Conteneurs d'autorisation</title>
48
49     <p>Les directives de conteneur d'autorisation <directive
50     module="mod_authz_core" type="section">RequireAll</directive>,
51     <directive module="mod_authz_core"
52     type="section">RequireAny</directive> et <directive
53     module="mod_authz_core" type="section">RequireNone</directive>
54     peuvent &ecirc;tre combin&eacute;es entre elles et avec la directive <directive
55     module="mod_authz_core">Require</directive> pour construire une
56     logique d'autorisation complexe.</p>
57
58     <p>L'exemple ci-dessous illustre la logique d'autorisation suivante.
59     Pour pouvoir acc&eacute;der &agrave; la ressource, l'utilisateur doit &ecirc;tre
60     l'utilisateur <code>superadmin</code>, ou appartenir aux deux
61     groupes LDAP <code>admins</code> et <code>Administrateurs</code> et
62     soit appartenir au groupe <code>ventes</code>, soit avoir
63     <code>ventes</code> comme valeur de l'attribut LDAP
64     <code>dept</code>. De plus, pour pouvoir acc&eacute;der &agrave; la ressource,
65     l'utilisateur ne doit appartenir ni au groupe <code>temps</code>, ni
66     au groupe LDAP <code>Employ&eacute;s temporaires</code>.</p>
67
68     <highlight language="config">
69 &lt;Directory /www/mydocs&gt;
70     &lt;RequireAll&gt;
71         &lt;RequireAny&gt;
72             Require user superadmin
73             &lt;RequireAll&gt;
74             Require group admins
75             Require ldap-group cn=Administrateurs,o=Airius
76                 &lt;RequireAny&gt;
77                 Require group ventes
78                 Require ldap-attribute dept="ventes"
79                 &lt;/RequireAny&gt;
80             &lt;/RequireAll&gt;
81         &lt;/RequireAny&gt;
82         &lt;RequireNone&gt;
83             Require group temps
84             Require ldap-group cn=Employ&eacute;s temporaires,o=Airius
85         &lt;/RequireNone&gt;
86     &lt;/RequireAll&gt;
87 &lt;/Directory&gt;
88     </highlight>
89 </section>
90
91 <section id="requiredirectives"><title>Les directives Require</title>
92
93   <p>Le module <module>mod_authz_core</module> met &agrave; disposition des
94   fournisseurs d'autorisation g&eacute;n&eacute;riques utilisables avec la directive
95   <directive module="mod_authz_core">Require</directive>.</p>
96
97   <section id="reqenv"><title>Require env</title>
98
99     <p>Le fournisseur <code>env</code> permet de contr&ocirc;ler l'acc&egrave;s au
100     serveur en fonction de l'existence d'une <a
101     href="../env.html">variable d'environnement</a>. Lorsque <code>Require
102     env <var>env-variable</var></code> est sp&eacute;cifi&eacute;, la requ&ecirc;te se voit
103     autoriser l'acc&egrave;s si la variable d'environnement
104     <var>env-variable</var> existe. Le serveur permet de d&eacute;finir
105     facilement des variables d'environnement en fonction des
106     caract&eacute;ristiques de la requ&ecirc;te du client via les directives fournies
107     par le module <module>mod_setenvif</module>. Cette directive Require
108     env permet donc de contr&ocirc;ler l'acc&egrave;s en fonction des
109     valeurs des en-t&ecirc;tes de la requ&ecirc;te HTTP tels que
110     <code>User-Agent</code> (type de navigateur), <code>Referer</code>,
111     entre autres.</p>
112
113     <highlight language="config">
114 SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
115 &lt;Directory /docroot&gt;
116     Require env let_me_in
117 &lt;/Directory&gt;
118     </highlight>
119
120     <p>Avec cet exemple, les navigateurs dont la cha&icirc;ne user-agent
121     commence par <code>KnockKnock/2.0</code> se verront autoriser
122     l'acc&egrave;s, alors que tous les autres seront rejet&eacute;s.</p>
123
124     <p>Lorsque le serveur cherche un chemin via une <glossary
125    ref="subrequest">sous-requ&ecirc;te</glossary> interne (par exemple la
126    recherche d'un <directive
127    module="mod_dir">DirectoryIndex</directive>), ou lorsqu'il g&eacute;n&egrave;re un
128    listing du contenu d'un r&eacute;pertoire via le module
129    <module>mod_autoindex</module>, la sous-requ&ecirc;te n'h&eacute;rite pas des
130    variables d'environnement sp&eacute;cifiques &agrave; la requ&ecirc;te. En outre, &agrave; cause
131    des phases de l'API auxquelles <module>mod_setenvif</module> prend
132    part, les directives <directive
133    module="mod_setenvif">SetEnvIf</directive> ne sont pas &eacute;valu&eacute;es
134    s&eacute;par&eacute;ment dans la sous-requ&ecirc;te.</p>
135
136   </section>
137
138   <section id="reqall"><title>Require all</title>
139
140     <p>Le fournisseur <code>all</code> reproduit la fonctionnalit&eacute;
141     pr&eacute;c&eacute;demment fournie par les directives 'Allow from all' et 'Deny
142     from all'. Il accepte un argument dont les deux valeurs possibles
143     sont : 'granted' ou 'denied'. Les exemples suivants autorisent ou
144     interdisent l'acc&egrave;s &agrave; toutes les requ&ecirc;tes.</p>
145
146     <highlight language="config">
147     Require all granted
148     </highlight>
149
150     <highlight language="config">
151     Require all denied
152     </highlight>
153
154   </section>
155
156   <section id="reqmethod"><title>Require method</title>
157
158     <p>Le fournisseur <code>method</code> permet d'utiliser la m&eacute;thode
159     HTTP dans le processus d'autorisation. Les m&eacute;thodes GET et HEAD sont
160     ici consid&eacute;r&eacute;es comme &eacute;quivalentes. La m&eacute;thode TRACE n'est pas
161     support&eacute;e par ce fournisseur ; utilisez &agrave; la place la directive
162     <directive module="core">TraceEnable</directive>.</p>
163
164     <p>Dans l'exemple suivant, seules les m&eacute;thodes GET, HEAD, POST, et
165     OPTIONS sont autoris&eacute;es :</p>
166
167     <highlight language="config">
168         Require method GET POST OPTIONS
169     </highlight>
170
171     <p>Dans l'exemple suivant, les m&eacute;thodes GET, HEAD, POST, et OPTIONS
172     sont autoris&eacute;es sans authentification, alors que toutes les autres
173     m&eacute;thodes n&eacute;cessitent un utilisateur valide :</p>
174
175     <highlight language="config">
176 &lt;RequireAny&gt;
177     &nbsp;Require method GET POST OPTIONS
178     &nbsp;Require valid-user
179 &lt;/RequireAny&gt;
180     </highlight>
181
182   </section>
183   <section id="reqexpr"><title>Require expr</title>
184
185   <p>Le fournisseur <code>expr</code> permet d'accorder l'autorisation
186   d'acc&egrave;s en fonction d'expressions arbitraires.</p>
187
188     <highlight language="config">
189          Require expr %{TIME_HOUR} -ge 9 &amp;&amp; %{TIME_HOUR} -le 17
190     </highlight>
191
192     <highlight language="config">
193 &lt;RequireAll&gt;
194     Require expr "!(%{QUERY_STRING} =~ /secret/)"
195     Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }" 
196 &lt;/RequireAll&gt;
197     </highlight>
198
199     <highlight language="config">
200         Require expr "!(%{QUERY_STRING} =~ /secret/) &amp;&amp; %{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
201     </highlight>
202
203     <p>La syntaxe de l'expression est d&eacute;crite dans la documentation de <a
204     href="../expr.html">ap_expr</a>.</p>
205
206     <p>Normalement, l'expression est &eacute;valu&eacute;e avant l'authentification.
207     Cependant, si l'expression renvoie false et se r&eacute;f&egrave;re &agrave; la variable
208     <code>%{REMOTE_USER}</code>, le processus d'authentification sera
209     engag&eacute; et l'expression r&eacute;&eacute;valu&eacute;e.</p>
210
211   </section>
212
213 </section>
214
215 <section id="authzalias"><title>Cr&eacute;ation des alias du fournisseur
216 d'autorisation</title>
217
218     <p>Il est possible de cr&eacute;er des fournisseurs d'autorisation &eacute;tendus
219     dans le fichier de configuration et de leur assigner un nom d'alias.
220     On peut ensuite utiliser ces fournisseurs alias&eacute;s dans une
221     directive <directive module="mod_authz_core">Require</directive> de
222     la m&ecirc;me mani&egrave;re qu'on le ferait pour des fournisseurs d'autorisation
223     de base. En plus de la possibilit&eacute; de cr&eacute;er et d'aliaser un
224     fournisseur &eacute;tendu, le m&ecirc;me fournisseur d'autorisation &eacute;tendu peut
225     &ecirc;tre r&eacute;f&eacute;renc&eacute; par diverses localisations.
226     </p>
227
228     <section id="example"><title>Exemple</title>
229         <p>Dans l'exemple suivant, on cr&eacute;e deux alias de fournisseur
230         d'autorisation ldap diff&eacute;rents bas&eacute;s sur le fournisseur
231         d'autorisation ldap-group. Il est ainsi possible pour un seul
232         r&eacute;pertoire de v&eacute;rifier l'appartenance &agrave; un groupe dans plusieurs
233         serveurs ldap :
234         </p>
235
236         <highlight language="config">
237 &lt;AuthzProviderAlias ldap-group ldap-group-alias1 cn=my-group,o=ctx&gt;
238     AuthLDAPBindDN cn=youruser,o=ctx
239     AuthLDAPBindPassword yourpassword
240     AuthLDAPURL ldap://ldap.host/o=ctx
241 &lt;/AuthzProviderAlias&gt;
242
243 &lt;AuthzProviderAlias ldap-group ldap-group-alias2 cn=my-other-group,o=dev&gt;
244     AuthLDAPBindDN cn=yourotheruser,o=dev
245     AuthLDAPBindPassword yourotherpassword
246     AuthLDAPURL ldap://other.ldap.host/o=dev?cn
247 &lt;/AuthzProviderAlias&gt;
248
249 Alias /secure /webpages/secure
250 &lt;Directory /webpages/secure&gt;
251     Require all granted
252
253     AuthBasicProvider file
254
255     AuthType Basic
256     AuthName LDAP_Protected_Place
257
258     #Op&eacute;ration logique implicite : OU inclusif
259     Require ldap-group-alias1
260     Require ldap-group-alias2
261 &lt;/Directory&gt;
262         </highlight>
263     </section>
264
265 </section>
266
267
268 <directivesynopsis>
269 <name>Require</name>
270 <description>V&eacute;rifie si un utilisateur authentifi&eacute; a une
271 autorisation d'acc&egrave;s accord&eacute;e par un fournisseur
272 d'autorisation.</description>
273 <syntax>Require [not] <var>nom-entit&eacute;</var> [<var>nom-entit&eacute;</var>]
274 ...</syntax>
275 <contextlist><context>directory</context><context>.htaccess</context>
276 </contextlist>
277 <override>AuthConfig</override>
278
279 <usage>
280     <p>Cette directive permet de v&eacute;rifier si un utilisateur authentifi&eacute;
281     a l'autorisation d'acc&egrave;s accord&eacute;e pour un certain fournisseur
282     d'autorisation et en tenant compte de certaines restrictions.
283     <module>mod_authz_core</module> met &agrave; disposition les fournisseurs
284     d'autorisation g&eacute;n&eacute;riques suivants :</p>
285
286     <dl>
287       <dt><code>Require all granted</code></dt>
288       <dd>L'acc&egrave;s est autoris&eacute; sans restriction.</dd>
289
290       <dt><code>Require all denied</code></dt>
291       <dd>L'acc&egrave;s est syst&eacute;matiquement refus&eacute;.</dd>
292
293       <dt><code>Require env <var>env-var</var> [<var>env-var</var>]
294       ...</code></dt>
295       <dd>L'acc&egrave;s n'est autoris&eacute; que si l'une au moins des variables
296       d'environnement sp&eacute;cifi&eacute;es est d&eacute;finie.</dd>
297
298       <dt><code>Require method <var>http-method</var> [<var>http-method</var>]
299       ...</code></dt>
300       <dd>L'acc&egrave;s n'est autoris&eacute; que pour les m&eacute;thodes HTTP sp&eacute;cifi&eacute;es.</dd>
301
302       <dt><code>Require expr <var>expression</var> </code></dt>
303       <dd>L'acc&egrave;s est autoris&eacute; si <var>expression</var> est &eacute;valu&eacute; &agrave;
304       vrai.</dd>
305     </dl>
306
307     <p>Voici quelques exemples de syntaxes autoris&eacute;es par
308     <module>mod_authz_user</module>, <module>mod_authz_host</module> et
309     <module>mod_authz_groupfile</module> :</p>
310
311     <dl>
312       <dt><code>Require user <var>identifiant utilisateur</var>
313       [<var>identifiant utilisateur</var>]
314       ...</code></dt>
315       <dd>Seuls les utilisateurs sp&eacute;cifi&eacute;s auront acc&egrave;s &agrave; la
316       ressource.</dd>
317
318       <dt><code>Require group <var>nom groupe</var> [<var>nom
319       groupe</var>]
320       ...</code></dt>
321       <dd>Seuls les utilisateurs appartenant aux groupes sp&eacute;cifi&eacute;s
322       auront acc&egrave;s &agrave; la ressource.</dd>
323
324       <dt><code>Require valid-user</code></dt>
325       <dd>Tous les utilisateurs valides auront acc&egrave;s &agrave; la
326       ressource.</dd>
327
328       <dt><code>Require ip 10 172.20 192.168.2</code></dt>
329       <dd>Les clients dont les adresses IP font partie des tranches
330       sp&eacute;cifi&eacute;es auront acc&egrave;s &agrave; la ressource.</dd>
331     </dl>
332
333     <p>D'autres modules d'autorisation comme
334     <module>mod_authnz_ldap</module>, <module>mod_authz_dbm</module>,
335     <module>mod_authz_dbd</module>,
336     <module>mod_authz_owner</module> et <module>mod_ssl</module>
337     impl&eacute;mentent des options de la directive Require.</p>
338
339     <p>Pour qu'une configuration d'authentification et d'autorisation
340     fonctionne correctement, la directive <directive>Require</directive>
341     doit &ecirc;tre accompagn&eacute;e dans la plupart des cas de directives <directive
342     module="mod_authn_core">AuthName</directive>, <directive
343     module="mod_authn_core">AuthType</directive> et <directive
344     module="mod_auth_basic">AuthBasicProvider</directive> ou <directive
345     module="mod_auth_digest">AuthDigestProvider</directive>, ainsi que
346     de directives telles que <directive
347     module="mod_authn_file">AuthUserFile</directive> et <directive
348     module="mod_authz_groupfile">AuthGroupFile</directive> (pour la
349     d&eacute;finition des utilisateurs et des groupes). Exemple :</p>
350
351     <highlight language="config">
352 AuthType Basic
353 AuthName "Restricted Resource"
354 AuthBasicProvider file
355 AuthUserFile /web/users
356 AuthGroupFile /web/groups
357 Require group admin
358     </highlight>
359
360     <p>Les contr&ocirc;les d'acc&egrave;s appliqu&eacute;s de cette mani&egrave;re sont effectifs
361     pour <strong>toutes</strong> les m&eacute;thodes. <strong>C'est d'ailleurs
362     ce que l'on souhaite en g&eacute;n&eacute;ral.</strong> Si vous voulez n'appliquer
363     les contr&ocirc;les d'acc&egrave;s qu'&agrave; certaines m&eacute;thodes, tout en laissant les
364     autres m&eacute;thodes sans protection, placez la directive
365     <directive>Require</directive> dans une section <directive
366     module="core" type="section">Limit</directive>.</p>
367
368     <p>Le r&eacute;sultat de la directive <directive>Require</directive> peut
369     &ecirc;tre invers&eacute; en utilisant l'option <code>not</code>. Comme dans le
370     cas de l'autre directive d'autorisation invers&eacute;e <directive
371     type="section">RequireNone</directive>, si la directive
372     <directive>Require</directive> est invers&eacute;e, elle ne peut qu'&eacute;chouer
373     ou produire un r&eacute;sultat neutre ; elle ne peut donc alors pas
374     en soi autoriser une requ&ecirc;te.</p>
375
376     <p>Dans l'exemple suivant, tous les utilisateurs appartenant aux
377     groupes <code>alpha</code> et <code>beta</code> ont l'autorisation
378     d'acc&egrave;s, &agrave; l'exception de ceux appartenant au groupe
379     <code>reject</code>.</p>
380
381     <highlight language="config">
382 &lt;Directory /www/docs&gt;
383     &lt;RequireAll&gt;
384         Require group alpha beta
385         Require not group reject
386     &lt;/RequireAll&gt;
387 &lt;/Directory&gt;
388     </highlight>
389
390     <p>Lorsque plusieurs directives <directive>Require</directive> sont
391     plac&eacute;es dans une m&ecirc;me <a href="../sections.html#merging">section de
392     configuration</a>, et ne se trouvent pas dans une autre directive
393     d'autorisation comme <directive module="mod_authz_core"
394     type="section">RequireAll</directive>, elles sont implicitement
395     contenues dans une directive <directive module="mod_authz_core"
396     type="section">RequireAny</directive>. Ainsi, la premi&egrave;re directive
397     <directive>Require</directive> qui autorise l'acc&egrave;s &agrave; un utilisateur
398     autorise l'acc&egrave;s pour l'ensemble de la requ&ecirc;te, et les directives
399     <directive>Require</directive> suivantes sont ignor&eacute;es.</p>
400
401     <note type="warning"><title>Avertissement &agrave; propos de la s&eacute;curit&eacute;</title>
402     <p>Prettez une attention particuli&egrave;re aux directives d'autorisation
403     d&eacute;finies
404     au sein des sections <directive module="core">Location</directive>
405     qui se chevauchent avec des contenus servis depuis le syst&egrave;me de
406     fichiers. Par d&eacute;faut, les configurations d&eacute;finies dans ces <a
407     href="../sections.html#merging">sections</a> l'emportent sur les
408     configurations d'autorisations d&eacute;finies au sein des sections
409     <directive module="core">Directory</directive> et <directive
410     module="core">Files</directive> sections.</p>
411     <p>La directive <directive
412     module="mod_authz_core">AuthMerging</directive> permet de contr&ocirc;ler
413     la mani&egrave;re selon laquelle les configurations d'autorisations sont
414     fusionn&eacute;es au sein des sections pr&eacute;cit&eacute;es.</p>
415     </note>
416 </usage>
417
418
419 <seealso><a href="../howto/access.html">Tutoriel du contr&ocirc;le d'acc&egrave;s</a></seealso>
420 <seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
421 <seealso><module>mod_authn_core</module></seealso>
422 <seealso><module>mod_authz_host</module></seealso>
423 </directivesynopsis>
424
425 <directivesynopsis type="section">
426 <name>RequireAll</name>
427 <description>Regroupe plusieurs directives d'autorisation dont aucune ne
428 doit &eacute;chouer et dont au moins une doit retourner un r&eacute;sultat positif
429 pour que la directive globale retourne elle-m&ecirc;me un r&eacute;sultat
430 positif.</description>
431 <syntax>&lt;RequireAll&gt; ... &lt;/RequireAll&gt;</syntax>
432 <contextlist><context>directory</context><context>.htaccess</context>
433 </contextlist>
434 <override>AuthConfig</override>
435
436 <usage>
437     <p>Les balises <directive type="section">RequireAll</directive> et
438     <code>&lt;/RequireAll&gt;</code> permettent de regrouper des
439     directives d'autorisation dont aucune ne doit &eacute;chouer, et dont au
440     moins une doit retourner un r&eacute;sultat positif pour que la directive
441     <directive type="section">RequireAll</directive> retourne elle-m&ecirc;me
442     un r&eacute;sultat positif.</p>
443
444     <p>Si aucune des directives contenues dans la directive <directive
445     type="section">RequireAll</directive> n'&eacute;choue, et si au moins une
446     retourne un r&eacute;sultat positif, alors la directive <directive
447     type="section">RequireAll</directive> retourne elle-m&ecirc;me un r&eacute;sultat
448     positif. Si aucune ne retourne un r&eacute;sultat positif, et si aucune
449     n'&eacute;choue, la directive globale retourne un r&eacute;sultat neutre. Dans
450     tous les autres cas, elle &eacute;choue.</p>
451 </usage>
452
453 <seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
454 <seealso><a href="../howto/auth.html">Authentification, autorisation et
455 contr&ocirc;le d'acc&egrave;s</a></seealso>
456
457 </directivesynopsis>
458
459 <directivesynopsis type="section">
460 <name>RequireAny</name>
461 <description>Regroupe des directives d'autorisation dont au moins une
462 doit retourner un r&eacute;sultat positif pour que la directive globale
463 retourne elle-m&ecirc;me un r&eacute;sultat positif.</description>
464 <syntax>&lt;RequireAny&gt; ... &lt;/RequireAny&gt;</syntax>
465 <contextlist><context>directory</context><context>.htaccess</context>
466 </contextlist>
467 <override>AuthConfig</override>
468
469 <usage>
470     <p>Les balises <directive type="section">RequireAny</directive> et
471     <code>&lt;/RequireAny&gt;</code> permettent de regrouper des
472     directives d'autorisation dont au moins une doit retourner un
473     r&eacute;sultat positif pour que la directive <directive
474     type="section">RequireAny</directive> retourne elle-m&ecirc;me un r&eacute;sultat
475     positif.</p>
476
477     <p>Si une ou plusieurs directives contenues dans la directive
478     <directive type="section">RequireAny</directive> retournent un
479     r&eacute;sultat positif, alors la directive <directive
480     type="section">RequireAny</directive> retourne elle-m&ecirc;me un r&eacute;sultat
481     positif. Si aucune ne retourne un r&eacute;sultat positif et aucune
482     n'&eacute;choue, la directive globale retourne un r&eacute;sultat neutre. Dans
483     tous les autres cas, elle &eacute;choue.</p>
484
485     <note>Comme les directives d'autorisation invers&eacute;es sont incapables
486     de retourner un r&eacute;sultat positif, elles ne peuvent pas impacter de
487     mani&egrave;re significative le r&eacute;sultat d'une directive <directive
488     type="section">RequireAny</directive> (elles pourraient tout au plus
489     faire &eacute;chouer la directive dans le cas o&ugrave; elles &eacute;choueraient
490     elles-m&ecirc;mes, et o&ugrave;
491     toutes les autres directives retourneraient un r&eacute;sultat neutre).
492     C'est pourquoi il n'est pas permis d'utiliser les directives
493     d'autorisation invers&eacute;es dans une directive <directive
494     type="section">RequireAny</directive>.</note>
495 </usage>
496
497 <seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
498 <seealso><a href="../howto/auth.html">Authentification, autorisation et
499 contr&ocirc;le d'acc&egrave;s</a></seealso>
500
501 </directivesynopsis>
502
503 <directivesynopsis type="section">
504 <name>RequireNone</name>
505 <description>Regroupe des directives d'autorisation dont aucune ne doit
506 retourner un r&eacute;sultat positif pour que la directive globale n'&eacute;choue
507 pas.</description>
508 <syntax>&lt;RequireNone&gt; ... &lt;/RequireNone&gt;</syntax>
509 <contextlist><context>directory</context><context>.htaccess</context>
510 </contextlist>
511 <override>AuthConfig</override>
512
513 <usage>
514     <p>Les balises <directive type="section">RequireNone</directive> et
515     <code>&lt;/RequireNone&gt;</code> permettent de regrouper des
516     directives d'autorisation dont aucune ne doit retourner un r&eacute;sultat
517     positif pour que la directive <directive
518     type="section">RequireNone</directive> n'&eacute;choue pas.</p>
519
520     <p>Si une ou plusieurs directives contenues dans la directive
521     <directive type="section">RequireNone</directive> retournent un
522     r&eacute;sultat positif, la directive <directive
523     type="section">RequireNone</directive> &eacute;chouera. Dans tous les
524     autres cas, cette derni&egrave;re retournera un r&eacute;sultat neutre. Ainsi,
525     comme pour la directive d'autorisation invers&eacute;e <code>Require
526     not</code>, elle ne peut jamais en soi autoriser une requ&ecirc;te
527     car elle ne pourra jamais retourner un r&eacute;sultat
528     positif. Par contre, on peut l'utiliser pour restreindre l'ensemble
529     des utilisateurs autoris&eacute;s &agrave; acc&eacute;der &agrave; une ressource.</p>
530
531     <note>Comme les directives d'autorisation invers&eacute;es sont incapables
532     de retourner un r&eacute;sultat positif, elles ne peuvent pas impacter de
533     mani&egrave;re significative le r&eacute;sultat d'une directive <directive
534     type="section">RequireNone</directive>.
535     C'est pourquoi il n'est pas permis d'utiliser les directives
536     d'autorisation invers&eacute;es dans une directive <directive
537     type="section">RequireNone</directive>.</note>
538 </usage>
539
540 <seealso><a href="#logic">Conteneurs d'autorisation</a></seealso>
541 <seealso><a href="../howto/auth.html">Authentification, autorisation et
542 contr&ocirc;le d'acc&egrave;s</a></seealso>
543
544 </directivesynopsis>
545
546 <directivesynopsis>
547 <name>AuthMerging</name>
548 <description>D&eacute;finit la mani&egrave;re dont chaque logique d'autorisation des
549 sections de configuration se combine avec celles des sections de
550 configuration pr&eacute;c&eacute;dentes.</description>
551 <syntax>AuthMerging Off | And | Or</syntax>
552 <default>AuthMerging Off</default>
553 <contextlist><context>directory</context><context>.htaccess</context>
554 </contextlist>
555 <override>AuthConfig</override>
556
557 <usage>
558     <p>Lorsque l'autorisation est activ&eacute;e, elle est normalement h&eacute;rit&eacute;e
559     par chaque <a href="../sections.html#merging">section de
560     configuration</a> suivante, &agrave; moins qu'un jeu de directives
561     d'autorisations diff&eacute;rent ne soit sp&eacute;cifi&eacute;. Il s'agit du
562     comportement par d&eacute;faut, qui correspond &agrave; la d&eacute;finition explicite
563     <code>AuthMerging Off</code>.</p>
564
565     <p>Dans certaines situations cependant, il peut &ecirc;tre souhaitable de
566     combiner la logique d'autorisation d'une section de configuration
567     avec celle de la section pr&eacute;c&eacute;dente lorsque les sections de
568     configuration se combinent entre elles. Dans ce cas, deux options
569     sont disponibles, <code>And</code> et <code>Or</code>.</p>
570
571     <p>Lorsqu'une section de configuration contient <code>AuthMerging
572     And</code> ou <code>AuthMerging Or</code>, sa logique d'autorisation
573     se combine avec celle de la section de configuration qui la pr&eacute;c&egrave;de
574     (selon l'ordre g&eacute;n&eacute;ral des sections de configuration), et qui
575     contient aussi une logique d'autorisation, comme si les deux
576     sections &eacute;taient concat&eacute;n&eacute;es, respectivement, dans une directive
577     <directive module="mod_authz_core"
578     type="section">RequireAll</directive> ou <directive
579     module="mod_authz_core" type="section">RequireAny</directive>.</p>
580
581     <note>La d&eacute;finition de la directive
582     <directive>AuthMerging</directive> ne concerne que la section de
583     configuration dans laquelle elle appara&icirc;t. Dans l'exemple suivant,
584     seuls les utilisateurs appartenant au groupe <code>alpha</code> sont
585     autoris&eacute;s &agrave; acc&eacute;der &agrave; <code>/www/docs</code>. Les utilisateurs
586     appartenant au groupe <code>alpha</code> ou au groupe
587     <code>beta</code> sont autoris&eacute;s &agrave; acc&eacute;der &agrave;
588     <code>/www/docs/ab</code>. Cependant, la d&eacute;finition implicite &agrave;
589     <code>Off</code> de la directive <directive>AuthMerging</directive>
590     s'applique &agrave; la section de configuration <directive type="section"
591     module="core">Directory</directive> concernant le r&eacute;pertoire
592     <code>/www/docs/ab/gamma</code>, ce qui implique que les directives
593     d'autorisation de cette section l'emportent sur celles des sections
594     pr&eacute;c&eacute;dentes. Par voie de cons&eacute;quence, seuls les utilisateurs
595     appartenant au groupe <code>gamma</code> sont autoris&eacute;s &agrave; acc&eacute;der &agrave;
596     <code>/www/docs/ab/gamma</code>.</note>
597
598     <highlight language="config">
599 &lt;Directory /www/docs&gt;
600     AuthType Basic
601     AuthName Documents
602     AuthBasicProvider file
603     AuthUserFile /usr/local/apache/passwd/passwords
604     Require group alpha
605 &lt;/Directory&gt;
606
607 &lt;Directory /www/docs/ab&gt;
608     AuthMerging Or
609     Require group beta
610 &lt;/Directory&gt;
611
612 &lt;Directory /www/docs/ab/gamma&gt;
613     Require group gamma
614 &lt;/Directory&gt;
615     </highlight>
616 </usage>
617
618 </directivesynopsis>
619
620 <directivesynopsis type="section">
621 <name>AuthzProviderAlias</name>
622 <description>Regroupe des directives repr&eacute;sentant une extension d'un
623 fournisseur d'autorisation de base qui pourra &ecirc;tre r&eacute;f&eacute;renc&eacute;e &agrave; l'aide
624 de l'alias sp&eacute;cifi&eacute;</description>
625 <syntax>&lt;AuthzProviderAlias <var>fournisseur-de-base Alias
626 Param&egrave;tres-Require</var>&gt;
627 ... &lt;/AuthzProviderAlias&gt;
628 </syntax>
629 <contextlist><context>server config</context>
630 </contextlist>
631
632 <usage>
633     <p>Les balises <directive
634     type="section">AuthzProviderAlias</directive> et
635     <code>&lt;/AuthzProviderAlias&gt;</code> permettent de regrouper des
636     directives d'autorisation auxquelles on pourra faire r&eacute;f&eacute;rence &agrave;
637     l'aide de l'alias sp&eacute;cifi&eacute; dans une directive <directive
638     module="mod_authz_core">Require</directive>.</p>
639
640 </usage>
641 </directivesynopsis>
642
643 <directivesynopsis>
644 <name>AuthzSendForbiddenOnFailure</name>
645 <description>Envoie '403 FORBIDDEN' au lieu de '401 UNAUTHORIZED' si
646 l'authentification r&eacute;ussit et si l'autorisation a &eacute;t&eacute; refus&eacute;e.
647 </description>
648 <syntax>AuthzSendForbiddenOnFailure On|Off</syntax>
649 <default>AuthzSendForbiddenOnFailure Off</default>
650 <contextlist><context>directory</context><context>.htaccess</context>
651 </contextlist>
652 <compatibility>Disponible depuis la version 2.3.11 d'Apache HTTPD</compatibility>
653
654 <usage>
655     <p>Par d&eacute;faut, si l'authentification r&eacute;ussit, alors que
656     l'autorisation est refus&eacute;e, Apache HTTPD renvoie un code de r&eacute;ponse
657     HTTP '401 UNAUTHORIZED'. En g&eacute;n&eacute;ral, les navigateurs proposent alors
658     une nouvelle fois &agrave; l'utilisateur la bo&icirc;te de dialogue de saisie du
659     mot de passe, ce qui n'est pas toujours souhaitable. La directive
660     <directive>AuthzSendForbiddenOnFailure</directive> permet de changer
661     le code de r&eacute;ponse en '403 FORBIDDEN'.</p>
662
663     <note type="warning"><title>Avertissement de s&eacute;curit&eacute;</title>
664     <p>La modification de la r&eacute;ponse en cas de refus d'autorisation
665     diminue la s&eacute;curit&eacute; du mot de passe, car elle indique &agrave; un &eacute;ventuel
666     attaquant que le mot de passe qu'il a saisi &eacute;tait correct.</p>
667     </note>
668 </usage>
669 </directivesynopsis>
670
671 </modulesynopsis>