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