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" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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">
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
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="<-" alt="<-" src="../images/left.gif" /></a></div>
25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_authz_core</h1>
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_core.html" hreflang="en" rel="alternate" title="English"> en </a> |
30 <a href="../fr/mod/mod_authz_core.html" title="Français"> fr </a></p>
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>
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>
50 <div id="quickview"><h3>Sujets</h3>
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>
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"><AuthzProviderAlias></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"><RequireAll></a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#requireany"><RequireAny></a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#requirenone"><RequireNone></a></li>
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__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_authz_core">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_authz_core">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
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>
71 <h2><a name="logic" id="logic">Conteneurs d'autorisation</a></h2>
73 <p>Les directives de conteneur d'autorisation <code class="directive"><a href="#requireall"><RequireAll></a></code>,
74 <code class="directive"><a href="#requireany"><RequireAny></a></code> et <code class="directive"><a href="#requirenone"><RequireNone></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>
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>
88 <pre class="prettyprint lang-config"><Directory "/www/mydocs">
91 Require user superadmin
94 Require ldap-group "cn=Administrateurs,o=Airius"
97 Require ldap-attribute dept="ventes"
103 Require ldap-group "cn=Employés temporaires,o=Airius"
106 </Directory></pre>
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>
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>
116 <h3><a name="reqenv" id="reqenv">Require env</a></h3>
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>,
131 <pre class="prettyprint lang-config">SetEnvIf User-Agent "^KnockKnock/2\.0" let_me_in
132 <Directory "/docroot">
133 Require env let_me_in
134 </Directory></pre>
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>
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>
152 <h3><a name="reqall" id="reqall">Require all</a></h3>
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>
160 <pre class="prettyprint lang-config">Require all granted</pre>
163 <pre class="prettyprint lang-config">Require all denied</pre>
168 <h3><a name="reqmethod" id="reqmethod">Require method</a></h3>
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>
176 <p>Dans l'exemple suivant, seules les méthodes GET, HEAD, POST, et
177 OPTIONS sont autorisées :</p>
179 <pre class="prettyprint lang-config">Require method GET POST OPTIONS</pre>
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>
186 <pre class="prettyprint lang-config"><RequireAny>
187 Require method GET POST OPTIONS
189 </RequireAny></pre>
193 <h3><a name="reqexpr" id="reqexpr">Require expr</a></h3>
195 <p>Le fournisseur <code>expr</code> permet d'accorder l'autorisation
196 d'accès en fonction d'expressions arbitraires.</p>
198 <pre class="prettyprint lang-config">Require expr %{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17</pre>
201 <pre class="prettyprint lang-config"><RequireAll>
202 Require expr "!(%{QUERY_STRING} =~ /secret/)"
203 Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
204 </RequireAll></pre>
207 <pre class="prettyprint lang-config">Require expr "!(%{QUERY_STRING} =~ /secret/) && %{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"</pre>
210 <p>La syntaxe de l'expression est décrite dans la documentation de <a href="../expr.html">ap_expr</a>.</p>
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>
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>
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.
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
242 <pre class="prettyprint lang-config"><AuthzProviderAlias ldap-group ldap-group-alias1 "cn=my-group,o=ctx">
243 AuthLDAPBindDN "cn=youruser,o=ctx"
244 AuthLDAPBindPassword yourpassword
245 AuthLDAPURL "ldap://ldap.host/o=ctx"
246 </AuthzProviderAlias>
248 <AuthzProviderAlias ldap-group ldap-group-alias2 "cn=my-other-group,o=dev">
249 AuthLDAPBindDN "cn=yourotheruser,o=dev"
250 AuthLDAPBindPassword yourotherpassword
251 AuthLDAPURL "ldap://other.ldap.host/o=dev?cn"
252 </AuthzProviderAlias>
254 Alias "/secure" "/webpages/secure"
255 <Directory "/webpages/secure">
258 AuthBasicProvider file
261 AuthName LDAP_Protected_Place
263 #Opération logique implicite : OU inclusif
264 Require ldap-group-alias1
265 Require ldap-group-alias2
266 </Directory></pre>
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>
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>
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>
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"><RequireAll></a></code> ou <code class="directive"><a href="#requireany"><RequireAny></a></code>.</p>
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"><Directory></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>
321 <pre class="prettyprint lang-config"><Directory "/www/docs">
324 AuthBasicProvider file
325 AuthUserFile "/usr/local/apache/passwd/passwords"
329 <Directory "/www/docs/ab">
334 <Directory "/www/docs/ab/gamma">
336 </Directory></pre>
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"><AuthzProviderAlias></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><AuthzProviderAlias <var>fournisseur-de-base Alias
347 Paramètres-Require</var>>
348 ... </AuthzProviderAlias>
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>
354 <p>Les balises <code class="directive"><AuthzProviderAlias></code> et
355 <code></AuthzProviderAlias></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>
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.
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>
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>
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>
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>]
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>
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>
410 <dt><code>Require all granted</code></dt>
411 <dd>L'accès est autorisé sans restriction.</dd>
413 <dt><code>Require all denied</code></dt>
414 <dd>L'accès est systématiquement refusé.</dd>
416 <dt><code>Require env <var>env-var</var> [<var>env-var</var>]
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>
421 <dt><code>Require method <var>http-method</var> [<var>http-method</var>]
423 <dd>L'accès n'est autorisé que pour les méthodes HTTP spécifiées.</dd>
425 <dt><code>Require expr <var>expression</var> </code></dt>
426 <dd>L'accès est autorisé si <var>expression</var> est évalué à
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>
435 <dt><code>Require user <var>identifiant utilisateur</var>
436 [<var>identifiant utilisateur</var>]
438 <dd>Seuls les utilisateurs spécifiés auront accès à la
441 <dt><code>Require group <var>nom groupe</var> [<var>nom
444 <dd>Seuls les utilisateurs appartenant aux groupes spécifiés
445 auront accès à la ressource.</dd>
447 <dt><code>Require valid-user</code></dt>
448 <dd>Tous les utilisateurs valides auront accès à la
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>
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>
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>
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>
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"><Limit></a></code>.</p>
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"><RequireNone></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>
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>
495 <pre class="prettyprint lang-config"><Directory "/www/docs">
497 Require group alpha beta
498 Require not group reject
500 </Directory></pre>
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"><RequireAll></a></code>, elles sont implicitement
507 contenues dans une directive <code class="directive"><a href="#requireany"><RequireAny></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>
512 <div class="warning"><h3>Avertissement à propos de la sécurité</h3>
513 <p>Prettez une attention particulière aux directives d'autorisation
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>
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>
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"><RequireAll></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
540 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code><RequireAll> ... </RequireAll></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>
546 <p>Les balises <code class="directive"><RequireAll></code> et
547 <code></RequireAll></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"><RequireAll></code> retourne elle-même
551 un résultat positif.</p>
553 <p>Si aucune des directives contenues dans la directive <code class="directive"><RequireAll></code> n'échoue, et si au moins une
554 retourne un résultat positif, alors la directive <code class="directive"><RequireAll></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>
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>
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"><RequireAny></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><RequireAny> ... </RequireAny></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>
578 <p>Les balises <code class="directive"><RequireAny></code> et
579 <code></RequireAny></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"><RequireAny></code> retourne elle-même un résultat
584 <p>Si une ou plusieurs directives contenues dans la directive
585 <code class="directive"><RequireAny></code> retournent un
586 résultat positif, alors la directive <code class="directive"><RequireAny></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>
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"><RequireAny></code> (elles pourraient tout au plus
594 faire échouer la directive dans le cas où elles échoueraient
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"><RequireAny></code>.</div>
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>
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"><RequireNone></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
613 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code><RequireNone> ... </RequireNone></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>
619 <p>Les balises <code class="directive"><RequireNone></code> et
620 <code></RequireNone></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"><RequireNone></code> n'échoue pas.</p>
624 <p>Si une ou plusieurs directives contenues dans la directive
625 <code class="directive"><RequireNone></code> retournent un
626 résultat positif, la directive <code class="directive"><RequireNone></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>
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"><RequireNone></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"><RequireNone></code>.</div>
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>
648 <div class="bottomlang">
649 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_core.html" hreflang="en" rel="alternate" title="English"> en </a> |
650 <a href="../fr/mod/mod_authz_core.html" title="Français"> fr </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&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';
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';
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);
665 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
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') {