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" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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">
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 HTTP Apache 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><a title="Lien permanent" href="#logic" class="permalink">¶</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><a title="Lien permanent" href="#requiredirectives" class="permalink">¶</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>. Avant la version 2.4.16, les doubles-quotes
211 étaient prohibées.</p>
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>
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">¶</a></h2>
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.
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
243 <pre class="prettyprint lang-config"><AuthzProviderAlias ldap-group ldap-group-alias1 "cn=my-group,o=ctx">
244 AuthLDAPBindDN "cn=youruser,o=ctx"
245 AuthLDAPBindPassword yourpassword
246 AuthLDAPUrl "ldap://ldap.host/o=ctx"
247 </AuthzProviderAlias>
249 <AuthzProviderAlias ldap-group ldap-group-alias2 "cn=my-other-group,o=dev">
250 AuthLDAPBindDN "cn=yourotheruser,o=dev"
251 AuthLDAPBindPassword yourotherpassword
252 AuthLDAPUrl "ldap://other.ldap.host/o=dev?cn"
253 </AuthzProviderAlias>
255 Alias "/secure" "/webpages/secure"
256 <Directory "/webpages/secure">
259 AuthBasicProvider file
262 AuthName LDAP_Protected_Place
264 #Opération logique implicite : OU inclusif
265 Require ldap-group-alias1
266 Require ldap-group-alias2
267 </Directory></pre>
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">¶</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>
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>
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>
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"><RequireAll></a></code> ou <code class="directive"><a href="#requireany"><RequireAny></a></code>.</p>
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"><Directory></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>
322 <pre class="prettyprint lang-config"><Directory "/www/docs">
325 AuthBasicProvider file
326 AuthUserFile "/usr/local/apache/passwd/passwords"
330 <Directory "/www/docs/ab">
335 <Directory "/www/docs/ab/gamma">
337 </Directory></pre>
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"><AuthzProviderAlias></a><a title="Lien permanent" href="#authzprovideralias" class="permalink">¶</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><AuthzProviderAlias <var>baseProvider Alias Require-Parameters</var>>
348 ... </AuthzProviderAlias>
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>
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>
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>
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 <AuthzProviderAlias ip blacklisted-ips "XXX.XXX.XXX.XXX YYY.YYY.YYY.YYY">
366 </AuthzProviderAlias>
368 <Directory "/path/to/dir">
370 Require not blacklisted-ips
373 </Directory></pre>
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">¶</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.
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>
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>
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>
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">¶</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>]
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>
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>
427 <dt><code>Require all granted</code></dt>
428 <dd>L'accès est autorisé sans restriction.</dd>
430 <dt><code>Require all denied</code></dt>
431 <dd>L'accès est systématiquement refusé.</dd>
433 <dt><code>Require env <var>env-var</var> [<var>env-var</var>]
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>
438 <dt><code>Require method <var>http-method</var> [<var>http-method</var>]
440 <dd>L'accès n'est autorisé que pour les méthodes HTTP spécifiées.</dd>
442 <dt><code>Require expr <var>expression</var> </code></dt>
443 <dd>L'accès est autorisé si <var>expression</var> est évalué à
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>
452 <dt><code>Require user <var>identifiant utilisateur</var>
453 [<var>identifiant utilisateur</var>]
455 <dd>Seuls les utilisateurs spécifiés auront accès à la
458 <dt><code>Require group <var>nom groupe</var> [<var>nom
461 <dd>Seuls les utilisateurs appartenant aux groupes spécifiés
462 auront accès à la ressource.</dd>
464 <dt><code>Require valid-user</code></dt>
465 <dd>Tous les utilisateurs valides auront accès à la
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>
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>
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>
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>
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"><Limit></a></code>.</p>
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"><RequireNone></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>
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>
512 <pre class="prettyprint lang-config"><Directory "/www/docs">
514 Require group alpha beta
515 Require not group reject
517 </Directory></pre>
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"><RequireAll></a></code>, elles sont implicitement
524 contenues dans une directive <code class="directive"><a href="#requireany"><RequireAny></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>
529 <div class="warning"><h3>Avertissement à propos de la sécurité</h3>
530 <p>Prettez une attention particulière aux directives d'autorisation
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>
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>
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"><RequireAll></a><a title="Lien permanent" href="#requireall" class="permalink">¶</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
557 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code><RequireAll> ... </RequireAll></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>
563 <p>Les balises <code class="directive"><RequireAll></code> et
564 <code></RequireAll></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"><RequireAll></code> retourne elle-même
568 un résultat positif.</p>
570 <p>Si aucune des directives contenues dans la directive <code class="directive"><RequireAll></code> n'échoue, et si au moins une
571 retourne un résultat positif, alors la directive <code class="directive"><RequireAll></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>
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>
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"><RequireAny></a><a title="Lien permanent" href="#requireany" class="permalink">¶</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><RequireAny> ... </RequireAny></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>
595 <p>Les balises <code class="directive"><RequireAny></code> et
596 <code></RequireAny></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"><RequireAny></code> retourne elle-même un résultat
601 <p>Si une ou plusieurs directives contenues dans la directive
602 <code class="directive"><RequireAny></code> retournent un
603 résultat positif, alors la directive <code class="directive"><RequireAny></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>
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"><RequireAny></code> (elles pourraient tout au plus
611 faire échouer la directive dans le cas où elles échoueraient
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"><RequireAny></code>.</div>
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>
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"><RequireNone></a><a title="Lien permanent" href="#requirenone" class="permalink">¶</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
630 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code><RequireNone> ... </RequireNone></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>
636 <p>Les balises <code class="directive"><RequireNone></code> et
637 <code></RequireNone></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"><RequireNone></code> n'échoue pas.</p>
641 <p>Si une ou plusieurs directives contenues dans la directive
642 <code class="directive"><RequireNone></code> retournent un
643 résultat positif, la directive <code class="directive"><RequireNone></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>
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"><RequireNone></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"><RequireNone></code>.</div>
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>
665 <div class="bottomlang">
666 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_authz_core.html" hreflang="en" rel="alternate" title="English"> en </a> |
667 <a href="../fr/mod/mod_authz_core.html" title="Français"> fr </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&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';
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';
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);
682 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
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') {