]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_authz_core.html.fr.utf8
Fix xml validation error
[apache] / docs / manual / mod / mod_authz_core.html.fr.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
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=UTF-8" 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 HTTP Apache 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 HTTP Apache 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><a title="Lien permanent" href="#logic" class="permalink">&para;</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><a title="Lien permanent" href="#requiredirectives" class="permalink">&para;</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>. Avant la version 2.4.16, les doubles-quotes
211     étaient prohibées.</p>
212
213     <p>Normalement, l'expression est évaluée avant l'authentification.
214     Cependant, si l'expression renvoie false et se réfère à la variable
215     <code>%{REMOTE_USER}</code>, le processus d'authentification sera
216     engagé et l'expression réévaluée.</p>
217
218   
219
220 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
221 <div class="section">
222 <h2><a name="authzalias" id="authzalias">Création des alias du fournisseur
223 d'autorisation</a><a title="Lien permanent" href="#authzalias" class="permalink">&para;</a></h2>
224
225     <p>Il est possible de créer des fournisseurs d'autorisation étendus
226     dans le fichier de configuration et de leur assigner un nom d'alias.
227     On peut ensuite utiliser ces fournisseurs aliasés dans une
228     directive <code class="directive"><a href="#require">Require</a></code> de
229     la même manière qu'on le ferait pour des fournisseurs d'autorisation
230     de base. En plus de la possibilité de créer et d'aliaser un
231     fournisseur étendu, le même fournisseur d'autorisation étendu peut
232     être référencé par diverses localisations.
233     </p>
234
235     <h3><a name="example" id="example">Exemple</a></h3>
236         <p>Dans l'exemple suivant, on crée deux alias de fournisseur
237         d'autorisation ldap différents basés sur le fournisseur
238         d'autorisation ldap-group. Il est ainsi possible pour un seul
239         répertoire de vérifier l'appartenance à un groupe dans plusieurs
240         serveurs ldap :
241         </p>
242
243         <pre class="prettyprint lang-config">&lt;AuthzProviderAlias ldap-group ldap-group-alias1 "cn=my-group,o=ctx"&gt;
244     AuthLDAPBindDN "cn=youruser,o=ctx"
245     AuthLDAPBindPassword yourpassword
246     AuthLDAPUrl "ldap://ldap.host/o=ctx"
247 &lt;/AuthzProviderAlias&gt;
248
249 &lt;AuthzProviderAlias ldap-group ldap-group-alias2 "cn=my-other-group,o=dev"&gt;
250     AuthLDAPBindDN "cn=yourotheruser,o=dev"
251     AuthLDAPBindPassword yourotherpassword
252     AuthLDAPUrl "ldap://other.ldap.host/o=dev?cn"
253 &lt;/AuthzProviderAlias&gt;
254
255 Alias "/secure" "/webpages/secure"
256 &lt;Directory "/webpages/secure"&gt;
257     Require all granted
258
259     AuthBasicProvider file
260
261     AuthType Basic
262     AuthName LDAP_Protected_Place
263
264     #Opération logique implicite : OU inclusif
265     Require ldap-group-alias1
266     Require ldap-group-alias2
267 &lt;/Directory&gt;</pre>
268
269     
270
271 </div>
272 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
273 <div class="directive-section"><h2><a name="authmerging" id="authmerging">Directive</a> <a name="AuthMerging" id="AuthMerging">AuthMerging</a><a title="Lien permanent" href="#authmerging" class="permalink">&para;</a></h2>
274 <table class="directive">
275 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit la manière dont chaque logique d'autorisation des
276 sections de configuration se combine avec celles des sections de
277 configuration précédentes.</td></tr>
278 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>AuthMerging Off | And | Or</code></td></tr>
279 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>AuthMerging Off</code></td></tr>
280 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
281 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
282 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
283 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
284 </table>
285     <p>Lorsque l'autorisation est activée, elle est normalement héritée
286     par chaque <a href="../sections.html#merging">section de
287     configuration</a> suivante, à moins qu'un jeu de directives
288     d'autorisations différent ne soit spécifié. Il s'agit du
289     comportement par défaut, qui correspond à la définition explicite
290     <code>AuthMerging Off</code>.</p>
291
292     <p>Dans certaines situations cependant, il peut être souhaitable de
293     combiner la logique d'autorisation d'une section de configuration
294     avec celle de la section précédente lorsque les sections de
295     configuration se combinent entre elles. Dans ce cas, deux options
296     sont disponibles, <code>And</code> et <code>Or</code>.</p>
297
298     <p>Lorsqu'une section de configuration contient <code>AuthMerging
299     And</code> ou <code>AuthMerging Or</code>, sa logique d'autorisation
300     se combine avec celle de la section de configuration qui la précède
301     (selon l'ordre général des sections de configuration), et qui
302     contient aussi une logique d'autorisation, comme si les deux
303     sections étaient concaténées, respectivement, dans une directive
304     <code class="directive"><a href="#requireall">&lt;RequireAll&gt;</a></code> ou <code class="directive"><a href="#requireany">&lt;RequireAny&gt;</a></code>.</p>
305
306     <div class="note">La définition de la directive
307     <code class="directive">AuthMerging</code> ne concerne que la section de
308     configuration dans laquelle elle apparaît. Dans l'exemple suivant,
309     seuls les utilisateurs appartenant au groupe <code>alpha</code> sont
310     autorisés à accéder à <code>/www/docs</code>. Les utilisateurs
311     appartenant au groupe <code>alpha</code> ou au groupe
312     <code>beta</code> sont autorisés à accéder à
313     <code>/www/docs/ab</code>. Cependant, la définition implicite à
314     <code>Off</code> de la directive <code class="directive">AuthMerging</code>
315     s'applique à la section de configuration <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> concernant le répertoire
316     <code>/www/docs/ab/gamma</code>, ce qui implique que les directives
317     d'autorisation de cette section l'emportent sur celles des sections
318     précédentes. Par voie de conséquence, seuls les utilisateurs
319     appartenant au groupe <code>gamma</code> sont autorisés à accéder à
320     <code>/www/docs/ab/gamma</code>.</div>
321
322     <pre class="prettyprint lang-config">&lt;Directory "/www/docs"&gt;
323     AuthType Basic
324     AuthName Documents
325     AuthBasicProvider file
326     AuthUserFile "/usr/local/apache/passwd/passwords"
327     Require group alpha
328 &lt;/Directory&gt;
329
330 &lt;Directory "/www/docs/ab"&gt;
331     AuthMerging Or
332     Require group beta
333 &lt;/Directory&gt;
334
335 &lt;Directory "/www/docs/ab/gamma"&gt;
336     Require group gamma
337 &lt;/Directory&gt;</pre>
338
339
340 </div>
341 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
342 <div class="directive-section"><h2><a name="authzprovideralias" id="authzprovideralias">Directive</a> <a name="AuthzProviderAlias" id="AuthzProviderAlias">&lt;AuthzProviderAlias&gt;</a><a title="Lien permanent" href="#authzprovideralias" class="permalink">&para;</a></h2>
343 <table class="directive">
344 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Regroupe des directives représentant une extension d'un
345 fournisseur d'autorisation de base qui pourra être référencée à l'aide
346 de l'alias spécifié</td></tr>
347 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;AuthzProviderAlias <var>baseProvider Alias Require-Parameters</var>&gt;
348 ... &lt;/AuthzProviderAlias&gt;
349 </code></td></tr>
350 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</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     <p>Si <var>Require-Parameters</var> comporte plusieurs paramètres, la liste
360     de ces derniers doit être entourée de guillemets. Dans le cas contraire,
361     seul le premier paramètre de la liste sera pris en compte.</p>
362     
363     <pre class="prettyprint lang-config"># Dans cet exemple, pour que les deux adresses IP soient prises en compte, elles
364 # DOIVENT être entourées de guillemets
365 &lt;AuthzProviderAlias ip blacklisted-ips "XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY"&gt;
366 &lt;/AuthzProviderAlias&gt;
367
368 &lt;Directory "/path/to/dir"&gt;
369     &lt;RequireAll&gt;
370         Require not blacklisted-ips
371         Require all granted
372     &lt;/RequireAll&gt;
373 &lt;/Directory&gt;</pre>
374
375
376
377 </div>
378 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
379 <div class="directive-section"><h2><a name="authzsendforbiddenonfailure" id="authzsendforbiddenonfailure">Directive</a> <a name="AuthzSendForbiddenOnFailure" id="AuthzSendForbiddenOnFailure">AuthzSendForbiddenOnFailure</a><a title="Lien permanent" href="#authzsendforbiddenonfailure" class="permalink">&para;</a></h2>
380 <table class="directive">
381 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Envoie '403 FORBIDDEN' au lieu de '401 UNAUTHORIZED' si
382 l'authentification réussit et si l'autorisation a été refusée.
383 </td></tr>
384 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>AuthzSendForbiddenOnFailure On|Off</code></td></tr>
385 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>AuthzSendForbiddenOnFailure Off</code></td></tr>
386 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
387 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
388 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
389 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
390 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.3.11 d'Apache HTTPD</td></tr>
391 </table>
392     <p>Par défaut, si l'authentification réussit, alors que
393     l'autorisation est refusée, Apache HTTPD renvoie un code de réponse
394     HTTP '401 UNAUTHORIZED'. En général, les navigateurs proposent alors
395     une nouvelle fois à l'utilisateur la boîte de dialogue de saisie du
396     mot de passe, ce qui n'est pas toujours souhaitable. La directive
397     <code class="directive">AuthzSendForbiddenOnFailure</code> permet de changer
398     le code de réponse en '403 FORBIDDEN'.</p>
399
400     <div class="warning"><h3>Avertissement de sécurité</h3>
401     <p>La modification de la réponse en cas de refus d'autorisation
402     diminue la sécurité du mot de passe, car elle indique à un éventuel
403     attaquant que le mot de passe qu'il a saisi était correct.</p>
404     </div>
405
406 </div>
407 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
408 <div class="directive-section"><h2><a name="require" id="require">Directive</a> <a name="Require" id="Require">Require</a><a title="Lien permanent" href="#require" class="permalink">&para;</a></h2>
409 <table class="directive">
410 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Vérifie si un utilisateur authentifié a une
411 autorisation d'accès accordée par un fournisseur
412 d'autorisation.</td></tr>
413 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>Require [not] <var>nom-entité</var> [<var>nom-entité</var>]
414 ...</code></td></tr>
415 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
416 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
417 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
418 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
419 </table>
420     <p>Cette directive permet de vérifier si un utilisateur authentifié
421     a l'autorisation d'accès accordée pour un certain fournisseur
422     d'autorisation et en tenant compte de certaines restrictions.
423     <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code> met à disposition les fournisseurs
424     d'autorisation génériques suivants :</p>
425
426     <dl>
427       <dt><code>Require all granted</code></dt>
428       <dd>L'accès est autorisé sans restriction.</dd>
429
430       <dt><code>Require all denied</code></dt>
431       <dd>L'accès est systématiquement refusé.</dd>
432
433       <dt><code>Require env <var>env-var</var> [<var>env-var</var>]
434       ...</code></dt>
435       <dd>L'accès n'est autorisé que si l'une au moins des variables
436       d'environnement spécifiées est définie.</dd>
437
438       <dt><code>Require method <var>http-method</var> [<var>http-method</var>]
439       ...</code></dt>
440       <dd>L'accès n'est autorisé que pour les méthodes HTTP spécifiées.</dd>
441
442       <dt><code>Require expr <var>expression</var> </code></dt>
443       <dd>L'accès est autorisé si <var>expression</var> est évalué à
444       vrai.</dd>
445     </dl>
446
447     <p>Voici quelques exemples de syntaxes autorisées par
448     <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
449     <code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code> :</p>
450
451     <dl>
452       <dt><code>Require user <var>identifiant utilisateur</var>
453       [<var>identifiant utilisateur</var>]
454       ...</code></dt>
455       <dd>Seuls les utilisateurs spécifiés auront accès à la
456       ressource.</dd>
457
458       <dt><code>Require group <var>nom groupe</var> [<var>nom
459       groupe</var>]
460       ...</code></dt>
461       <dd>Seuls les utilisateurs appartenant aux groupes spécifiés
462       auront accès à la ressource.</dd>
463
464       <dt><code>Require valid-user</code></dt>
465       <dd>Tous les utilisateurs valides auront accès à la
466       ressource.</dd>
467
468       <dt><code>Require ip 10 172.20 192.168.2</code></dt>
469       <dd>Les clients dont les adresses IP font partie des tranches
470       spécifiées auront accès à la ressource.</dd>
471     </dl>
472
473     <p>D'autres modules d'autorisation comme
474     <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>,
475     <code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code>,
476     <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>
477     implémentent des options de la directive Require.</p>
478
479     <p>Pour qu'une configuration d'authentification et d'autorisation
480     fonctionne correctement, la directive <code class="directive">Require</code>
481     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
482     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
483     définition des utilisateurs et des groupes). Exemple :</p>
484
485     <pre class="prettyprint lang-config">AuthType Basic
486 AuthName "Restricted Resource"
487 AuthBasicProvider file
488 AuthUserFile "/web/users"
489 AuthGroupFile "/web/groups"
490 Require group admin</pre>
491
492
493     <p>Les contrôles d'accès appliqués de cette manière sont effectifs
494     pour <strong>toutes</strong> les méthodes. <strong>C'est d'ailleurs
495     ce que l'on souhaite en général.</strong> Si vous voulez n'appliquer
496     les contrôles d'accès qu'à certaines méthodes, tout en laissant les
497     autres méthodes sans protection, placez la directive
498     <code class="directive">Require</code> dans une section <code class="directive"><a href="../mod/core.html#limit">&lt;Limit&gt;</a></code>.</p>
499
500     <p>Le résultat de la directive <code class="directive">Require</code> peut
501     être inversé en utilisant l'option <code>not</code>. Comme dans le
502     cas de l'autre directive d'autorisation inversée <code class="directive">&lt;RequireNone&gt;</code>, si la directive
503     <code class="directive">Require</code> est inversée, elle ne peut qu'échouer
504     ou produire un résultat neutre ; elle ne peut donc alors pas
505     en soi autoriser une requête.</p>
506
507     <p>Dans l'exemple suivant, tous les utilisateurs appartenant aux
508     groupes <code>alpha</code> et <code>beta</code> ont l'autorisation
509     d'accès, à l'exception de ceux appartenant au groupe
510     <code>reject</code>.</p>
511
512     <pre class="prettyprint lang-config">&lt;Directory "/www/docs"&gt;
513     &lt;RequireAll&gt;
514         Require group alpha beta
515         Require not group reject
516     &lt;/RequireAll&gt;
517 &lt;/Directory&gt;</pre>
518
519
520     <p>Lorsque plusieurs directives <code class="directive">Require</code> sont
521     placées dans une même <a href="../sections.html#merging">section de
522     configuration</a>, et ne se trouvent pas dans une autre directive
523     d'autorisation comme <code class="directive"><a href="#requireall">&lt;RequireAll&gt;</a></code>, elles sont implicitement
524     contenues dans une directive <code class="directive"><a href="#requireany">&lt;RequireAny&gt;</a></code>. Ainsi, la première directive
525     <code class="directive">Require</code> qui autorise l'accès à un utilisateur
526     autorise l'accès pour l'ensemble de la requête, et les directives
527     <code class="directive">Require</code> suivantes sont ignorées.</p>
528
529     <div class="warning"><h3>Avertissement à propos de la sécurité</h3>
530     <p>Prettez une attention particulière aux directives d'autorisation
531     définies
532     au sein des sections <code class="directive"><a href="../mod/core.html#location">Location</a></code>
533     qui se chevauchent avec des contenus servis depuis le système de
534     fichiers. Par défaut, les configurations définies dans ces <a href="../sections.html#merging">sections</a> l'emportent sur les
535     configurations d'autorisations définies au sein des sections
536     <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>
537     <p>La directive <code class="directive"><a href="#authmerging">AuthMerging</a></code> permet de contrôler
538     la manière selon laquelle les configurations d'autorisations sont
539     fusionnées au sein des sections précitées.</p>
540     </div>
541
542 <h3>Voir aussi</h3>
543 <ul>
544 <li><a href="../howto/access.html">Tutoriel du contrôle d'accès</a></li>
545 <li><a href="#logic">Conteneurs d'autorisation</a></li>
546 <li><code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code></li>
547 <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
548 </ul>
549 </div>
550 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
551 <div class="directive-section"><h2><a name="requireall" id="requireall">Directive</a> <a name="RequireAll" id="RequireAll">&lt;RequireAll&gt;</a><a title="Lien permanent" href="#requireall" class="permalink">&para;</a></h2>
552 <table class="directive">
553 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Regroupe plusieurs directives d'autorisation dont aucune ne
554 doit échouer et dont au moins une doit retourner un résultat positif
555 pour que la directive globale retourne elle-même un résultat
556 positif.</td></tr>
557 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;RequireAll&gt; ... &lt;/RequireAll&gt;</code></td></tr>
558 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
559 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
560 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
561 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
562 </table>
563     <p>Les balises <code class="directive">&lt;RequireAll&gt;</code> et
564     <code>&lt;/RequireAll&gt;</code> permettent de regrouper des
565     directives d'autorisation dont aucune ne doit échouer, et dont au
566     moins une doit retourner un résultat positif pour que la directive
567     <code class="directive">&lt;RequireAll&gt;</code> retourne elle-même
568     un résultat positif.</p>
569
570     <p>Si aucune des directives contenues dans la directive <code class="directive">&lt;RequireAll&gt;</code> n'échoue, et si au moins une
571     retourne un résultat positif, alors la directive <code class="directive">&lt;RequireAll&gt;</code> retourne elle-même un résultat
572     positif. Si aucune ne retourne un résultat positif, et si aucune
573     n'échoue, la directive globale retourne un résultat neutre. Dans
574     tous les autres cas, elle échoue.</p>
575
576 <h3>Voir aussi</h3>
577 <ul>
578 <li><a href="#logic">Conteneurs d'autorisation</a></li>
579 <li><a href="../howto/auth.html">Authentification, autorisation et
580 contrôle d'accès</a></li>
581 </ul>
582 </div>
583 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
584 <div class="directive-section"><h2><a name="requireany" id="requireany">Directive</a> <a name="RequireAny" id="RequireAny">&lt;RequireAny&gt;</a><a title="Lien permanent" href="#requireany" class="permalink">&para;</a></h2>
585 <table class="directive">
586 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Regroupe des directives d'autorisation dont au moins une
587 doit retourner un résultat positif pour que la directive globale
588 retourne elle-même un résultat positif.</td></tr>
589 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;RequireAny&gt; ... &lt;/RequireAny&gt;</code></td></tr>
590 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
591 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
592 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
593 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
594 </table>
595     <p>Les balises <code class="directive">&lt;RequireAny&gt;</code> et
596     <code>&lt;/RequireAny&gt;</code> permettent de regrouper des
597     directives d'autorisation dont au moins une doit retourner un
598     résultat positif pour que la directive <code class="directive">&lt;RequireAny&gt;</code> retourne elle-même un résultat
599     positif.</p>
600
601     <p>Si une ou plusieurs directives contenues dans la directive
602     <code class="directive">&lt;RequireAny&gt;</code> retournent un
603     résultat positif, alors la directive <code class="directive">&lt;RequireAny&gt;</code> retourne elle-même un résultat
604     positif. Si aucune ne retourne un résultat positif et aucune
605     n'échoue, la directive globale retourne un résultat neutre. Dans
606     tous les autres cas, elle échoue.</p>
607
608     <div class="note">Comme les directives d'autorisation inversées sont incapables
609     de retourner un résultat positif, elles ne peuvent pas impacter de
610     manière significative le résultat d'une directive <code class="directive">&lt;RequireAny&gt;</code> (elles pourraient tout au plus
611     faire échouer la directive dans le cas où elles échoueraient
612     elles-mêmes, et où
613     toutes les autres directives retourneraient un résultat neutre).
614     C'est pourquoi il n'est pas permis d'utiliser les directives
615     d'autorisation inversées dans une directive <code class="directive">&lt;RequireAny&gt;</code>.</div>
616
617 <h3>Voir aussi</h3>
618 <ul>
619 <li><a href="#logic">Conteneurs d'autorisation</a></li>
620 <li><a href="../howto/auth.html">Authentification, autorisation et
621 contrôle d'accès</a></li>
622 </ul>
623 </div>
624 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
625 <div class="directive-section"><h2><a name="requirenone" id="requirenone">Directive</a> <a name="RequireNone" id="RequireNone">&lt;RequireNone&gt;</a><a title="Lien permanent" href="#requirenone" class="permalink">&para;</a></h2>
626 <table class="directive">
627 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Regroupe des directives d'autorisation dont aucune ne doit
628 retourner un résultat positif pour que la directive globale n'échoue
629 pas.</td></tr>
630 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>&lt;RequireNone&gt; ... &lt;/RequireNone&gt;</code></td></tr>
631 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire, .htaccess</td></tr>
632 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>AuthConfig</td></tr>
633 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Base</td></tr>
634 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_authz_core</td></tr>
635 </table>
636     <p>Les balises <code class="directive">&lt;RequireNone&gt;</code> et
637     <code>&lt;/RequireNone&gt;</code> permettent de regrouper des
638     directives d'autorisation dont aucune ne doit retourner un résultat
639     positif pour que la directive <code class="directive">&lt;RequireNone&gt;</code> n'échoue pas.</p>
640
641     <p>Si une ou plusieurs directives contenues dans la directive
642     <code class="directive">&lt;RequireNone&gt;</code> retournent un
643     résultat positif, la directive <code class="directive">&lt;RequireNone&gt;</code> échouera. Dans tous les
644     autres cas, cette dernière retournera un résultat neutre. Ainsi,
645     comme pour la directive d'autorisation inversée <code>Require
646     not</code>, elle ne peut jamais en soi autoriser une requête
647     car elle ne pourra jamais retourner un résultat
648     positif. Par contre, on peut l'utiliser pour restreindre l'ensemble
649     des utilisateurs autorisés à accéder à une ressource.</p>
650
651     <div class="note">Comme les directives d'autorisation inversées sont incapables
652     de retourner un résultat positif, elles ne peuvent pas impacter de
653     manière significative le résultat d'une directive <code class="directive">&lt;RequireNone&gt;</code>.
654     C'est pourquoi il n'est pas permis d'utiliser les directives
655     d'autorisation inversées dans une directive <code class="directive">&lt;RequireNone&gt;</code>.</div>
656
657 <h3>Voir aussi</h3>
658 <ul>
659 <li><a href="#logic">Conteneurs d'autorisation</a></li>
660 <li><a href="../howto/auth.html">Authentification, autorisation et
661 contrôle d'accès</a></li>
662 </ul>
663 </div>
664 </div>
665 <div class="bottomlang">
666 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_core.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
667 <a href="../fr/mod/mod_authz_core.html" title="Français">&nbsp;fr&nbsp;</a></p>
668 </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>
669 <script type="text/javascript"><!--//--><![CDATA[//><!--
670 var comments_shortname = 'httpd';
671 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_authz_core.html';
672 (function(w, d) {
673     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
674         d.write('<div id="comments_thread"><\/div>');
675         var s = d.createElement('script');
676         s.type = 'text/javascript';
677         s.async = true;
678         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
679         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
680     }
681     else {
682         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
683     }
684 })(window, document);
685 //--><!]]></script></div><div id="footer">
686 <p class="apache">Copyright 2018 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
687 <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[//><!--
688 if (typeof(prettyPrint) !== 'undefined') {
689     prettyPrint();
690 }
691 //--><!]]></script>
692 </body></html>