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