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