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>Authentification, autorisation et contrôle d'accès - Serveur Apache HTTP</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" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
15 <p class="apache">Serveur Apache HTTP Version 2.3</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
19 <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.3</a> > <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Authentification, autorisation et contrôle d'accès</h1>
21 <p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
22 <a href="../fr/howto/auth.html" title="Français"> fr </a> |
23 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
27 <p>L'authentification est un processus qui vous permet de vérifier
28 qu'une personne est bien celle qu'elle prétend être. L'autorisation
29 est un processus qui permet à une personne d'aller là où elle veut
30 aller, ou d'obtenir les informations qu'elle désire.</p>
32 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Modules et directives concernés</a></li>
33 <li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
34 <li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Les prérequis</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Mise en oeuvre</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Autorisation d'accès à
37 plusieurs personnes</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Problèmes possibles</a></li>
39 <li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Autre méthode de stockage des mots de
41 <li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Utilisation de plusieurs fournisseurs
42 d'authentification</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#beyond">Pour aller plus loin qu'une simple
45 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Pour aller plus loin . . .</a></li>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
49 <h2><a name="related" id="related">Modules et directives concernés</a></h2>
51 <p>Trois groupes de modules sont concernés par le processus
52 d'authentification et d'autorisation. Vous devrez utiliser au moins un
53 module de chaque groupe.</p>
56 <li>Type d'authentification (voir la directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>)
58 <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
59 <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
62 <li>Fournisseur d'authentification (voir les directives <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> et <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>)
65 <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
66 <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
67 <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
68 <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
69 <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
72 <li>Autorisation (voir la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
74 <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
75 <li><code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code></li>
76 <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
77 <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
78 <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
79 <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
80 <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
85 <p>On peut aussi ajouter <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et
86 <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. Ces modules implémentent des
87 directives générales qui opèrent au dessus de tous les modules
88 d'authentification.</p>
90 <p>Le module <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> est un fournisseur
91 d'authentification et d'autorisation. Le module
92 <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> fournit une autorisation et un
93 contrôle d'accès basés sur le nom du serveur, l'adresse IP ou
94 certaines caractéristiques de la requête, mais ne fait pas partie du
95 système fournisseur d'authentification. Le module
96 <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> a été créé à des fins de
97 compatibilité ascendante avec mod_access.</p>
99 <p>Vous devriez aussi jeter un coup d'oeil au manuel de recettes de <a href="access.html">Contrôle d'accès</a>, qui décrit les différentes
100 méthodes de contrôle d'accès à votre serveur.</p>
102 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
103 <div class="section">
104 <h2><a name="introduction" id="introduction">Introduction</a></h2>
105 <p>Si votre site web contient des informations sensibles ou
106 destinées seulement à un groupe de personnes restreint, les
107 techniques exposées dans cet article vont vous aider à vous assurer
108 que les personnes qui ont accès à ces pages sont bien celles
109 auxquelles vous avez donné l'autorisation d'accès.</p>
111 <p>Cet article décrit les méthodes "standards" de protection de
112 parties de votre site web que la plupart d'entre vous sont appelés à
115 <div class="note"><h3>Note :</h3>
116 <p>Si vos données ont un réel besoin de sécurisation, prévoyez
117 l'utilisation de <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en plus de toute méthode
118 d'authentification.</p>
120 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
121 <div class="section">
122 <h2><a name="theprerequisites" id="theprerequisites">Les prérequis</a></h2>
123 <p>Les directives décrites dans cet article devront être insérées
124 soit au niveau de la configuration de votre serveur principal (en
125 général dans une section <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code>), soit au niveau de la
126 configuration des répertoires (fichiers <code>.htaccess</code>)</p>
128 <p>Si vous envisagez l'utilisation de fichiers
129 <code>.htaccess</code>, la configuration de votre serveur devra
130 permettre l'ajout de directives d'authentification dans ces
131 fichiers. Pour ce faire, on utilise la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, qui spécifie quelles
132 directives pourront éventuellement contenir les fichiers de
133 configuration de niveau répertoire.</p>
135 <p>Comme il est ici question d'authentification, vous aurez besoin
136 d'une directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
139 <div class="example"><p><code>
140 AllowOverride AuthConfig
143 <p>Si vous avez l'intention d'ajouter les directives directement
144 dans le fichier de configuration principal, vous devrez bien entendu
145 posséder les droits en écriture sur ce fichier.</p>
147 <p>Vous devrez aussi connaître un tant soit peu la structure des
148 répertoires de votre serveur, ne serait-ce que pour savoir où se
149 trouvent certains fichiers. Cela ne devrait pas présenter de grandes
150 difficultés, et nous essaierons de clarifier tout ça lorsque le besoin
151 s'en fera sentir.</p>
153 <p>Enfin, vous devrez vous assurer que les modules
154 <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
155 ont été soit compilés avec le binaire httpd, soit chargés par le
156 fichier de configuration httpd.conf. Ces deux modules fournissent
157 des directives générales et des fonctionnalités qui sont critiques
158 quant à la configuration et l'utilisation de l'authentification et
159 de l'autorisation au sein du serveur web.</p>
160 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
161 <div class="section">
162 <h2><a name="gettingitworking" id="gettingitworking">Mise en oeuvre</a></h2>
163 <p>Nous décrivons ici les bases de la protection par mot de passe
164 d'un répertoire de votre serveur.</p>
166 <p>Vous devez en premier lieu créer un fichier de mots de passe. La
167 méthode exacte selon laquelle vous allez créer ce fichier va varier
168 en fonction du fournisseur d'authentification choisi. Mais nous
169 entrerons dans les détails plus loin, et pour le moment, nous nous
170 contenterons d'un fichier de mots de passe en mode texte.</p>
172 <p>Ce fichier doit être enregistré à un endroit non accessible
173 depuis le web, de façon à ce que les clients ne puissent pas le
174 télécharger. Par exemple, si vos documents sont servis à partir de
175 <code>/usr/local/apache/htdocs</code>, vous pouvez enregistrer le
176 fichier des mots de passe dans
177 <code>/usr/local/apache/passwd</code>.</p>
179 <p>L'utilitaire <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> fourni avec Apache
180 permet de créer ce fichier. Vous le trouverez dans le répertoire
181 <code>bin</code> de votre installation d'Apache. Si vous avez
182 installé Apache à partir d'un paquetage tiers, il sera probablement
183 dans le chemin par défaut de vos exécutables.</p>
185 <p>Pour créer le fichier, tapez :</p>
187 <div class="example"><p><code>
188 htpasswd -c /usr/local/apache/passwd/passwords rbowen
191 <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> vous demandera d'entrer le mot de
192 passe, et de le retaper pour confirmation :</p>
194 <div class="example"><p><code>
195 # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
196 New password: mot-de-passe<br />
197 Re-type new password: mot-de-passe<br />
198 Adding password for user rbowen
201 <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> n'est pas dans le chemin par
202 défaut de vos exécutables, vous devrez bien entendu entrer le chemin
203 complet du fichier. Dans le cas d'une installation par défaut, il se
204 trouve à <code>/usr/local/apache2/bin/htpasswd</code>.</p>
206 <p>Ensuite, vous allez devoir configurer le serveur de façon à ce
207 qu'il demande un mot de passe et lui préciser quels utilisateurs ont
208 l'autorisation d'accès. Pour ce faire, vous pouvez soit éditer le
209 fichier <code>httpd.conf</code>, soit utiliser un fichier
210 <code>.htaccess</code>. Par exemple, si vous voulez protéger le
211 répertoire <code>/usr/local/apache/htdocs/secret</code>, vous pouvez
212 utiliser les directives suivantes, soit dans le fichier
213 <code>/usr/local/apache/htdocs/secret/.htaccess</code>, soit dans le
214 fichier <code>httpd.conf</code> à l'intérieur d'une section <Directory
215 /usr/local/apache/htdocs/secret> :</p>
217 <div class="example"><p><code>
219 AuthName "Fichiers réservés"<br />
220 # (La ligne suivante est facultative)<br />
221 AuthBasicProvider file<br />
222 AuthUserFile /usr/local/apache/passwd/passwords<br />
226 <p>Examinons ces directives une à une. La directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> définit la méthode
227 utilisée pour authentifier l'utilisateur. La méthode la plus
228 courante est <code>Basic</code>, et elle est implémentée par
229 <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Il faut cependant garder à l'esprit
230 que l'authentification Basic transmet le mot de passe depuis le
231 client vers le serveur en clair. Cette méthode ne devra donc pas
232 être utilisée pour la transmission de données hautement sensibles si
233 elle n'est pas associée au module <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. Apache
234 supporte une autre méthode d'authentification : <code>AuthType
235 Digest</code>. Cette méthode est implémentée par le module <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> et est beaucoup plus sécurisée. La plupart
236 des navigateurs récents supportent l'authentification Digest.</p>
238 <p>La directive <code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code> définit
239 l'<dfn>Identificateur</dfn> (Realm) à utiliser avec
240 l'authentification. L'identificateur possède deux fonctions. Tout
241 d'abord, le client présente en général cette information à
242 l'utilisateur dans le cadre de la boîte de dialogue de mot de passe.
243 Ensuite, le client l'utilise pour déterminer quel mot de passe
244 envoyer pour une zone authentifiée donnée.</p>
246 <p>Ainsi par exemple, une fois un client authentifié dans la zone
247 <code>"Fichiers réservés"</code>, il soumettra à nouveau
248 automatiquement le même mot de passe pour toute zone du même serveur
249 marquée de l'identificateur <code>"Fichiers réservés"</code>. De
250 cette façon, vous pouvez éviter à un utilisateur d'avoir à saisir
251 plusieurs fois le même mot de passe en faisant partager le même
252 identificateur entre plusieurs zones réservées. Bien entendu et pour
253 des raisons de sécurité, le client devra redemander le mot
254 de passe chaque fois que le nom d'hôte du serveur sera modifié.</p>
256 <p>La directive <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> est, dans ce
257 cas, facultative, car <code>file</code> est la valeur par défaut
258 pour cette directive. Par contre, cette directive sera obligatoire
259 si vous utilisez une autre source d'authentification comme
260 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou
261 <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
263 <p>La directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> définit le chemin
264 du fichier de mots de passe que nous venons de créer avec
265 <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si vous possédez un grand nombre
266 d'utilisateurs, la durée de la recherche dans un fichier texte pour
267 authentifier un utilisateur à chaque requête va augmenter
268 rapidement, et pour pallier cet inconvénient, Apache peut aussi
269 stocker les données relatives aux
270 utilisateurs dans des bases de données rapides. Le module
271 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> fournit la directive <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Le programme <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> permet de créer et manipuler ces fichiers. Vous
272 trouverez de nombreuses options d'autres types d'authentification
273 fournies par des modules tiers dans la <a href="http://modules.apache.org/">Base de données des modules
276 <p>Enfin, la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> implémente la partie
277 autorisation du processus en définissant l'utilisateur autorisé à
278 accéder à cette zone du serveur. Dans la section suivante, nous
279 décrirons les différentes méthodes d'utilisation de la directive
280 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</p>
281 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
282 <div class="section">
283 <h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Autorisation d'accès à
284 plusieurs personnes</a></h2>
285 <p>Les directives ci-dessus n'autorisent qu'une personne (quelqu'un
286 possédant le nom d'utilisateur <code>rbowen</code>) à accéder au
287 répertoire. Dans la plupart des cas, vous devrez autoriser
288 l'accès à plusieurs personnes. C'est ici
289 qu'intervient la directive <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>.</p>
291 <p>Si vous voulez autoriser l'accès à plusieurs personnes, vous
292 devez créer un fichier de groupes qui associe des noms de groupes
293 avec une liste d'utilisateurs de ce groupe. Le format de ce fichier
294 est très simple, et vous pouvez le créer avec votre éditeur favori.
295 Son contenu se présente comme suit :</p>
297 <div class="example"><p><code>
298 Nom-de-groupe: rbowen dpitts sungo rshersey
301 <p>Il s'agit simplement une liste des membres du groupe sous la
302 forme d'une ligne séparée par des espaces.</p>
304 <p>Pour ajouter un utilisateur à votre fichier de mots de passe
305 préexistant, entrez :</p>
307 <div class="example"><p><code>
308 htpasswd /usr/local/apache/passwd/passwords dpitts
311 <p>Vous obtiendrez le même effet qu'auparavant, mais le mot de passe
312 sera ajouté au fichier, plutôt que d'en créer un nouveau (C'est le
313 drapeau <code>-c</code> qui permet de créer un nouveau fichier de
316 <p>Maintenant, vous devez modifier votre fichier
317 <code>.htaccess</code> comme suit :</p>
319 <div class="example"><p><code>
321 AuthName "By Invitation Only"<br />
322 # Ligne facultative :<br />
323 AuthBasicProvider file<br />
324 AuthUserFile /usr/local/apache/passwd/passwords<br />
325 AuthGroupFile /usr/local/apache/passwd/groups<br />
326 Require group Nom-de-groupe
329 <p>Maintenant, quiconque appartient au groupe
330 <code>Nom-de-groupe</code>, et possède une entrée dans le fichier
331 <code>password</code> pourra accéder au répertoire s'il tape le bon
334 <p>Il existe une autre méthode moins contraignante pour autoriser
335 l'accès à plusieurs personnes. Plutôt que de créer un fichier de
336 groupes, il vous suffit d'ajouter la directive suivante :</p>
338 <div class="example"><p><code>
342 <p>Le remplacement de la ligne <code>Require user rbowen</code> par
343 la ligne <code>Require valid-user</code> autorisera l'accès à
344 quiconque possédant une entrée dans le fichier password, et ayant
345 tapé le bon mot de passe. Vous pouvez même simuler le comportement
346 des groupes en associant un fichier de mots de passe différent pour
347 chaque groupe. L'avantage de cette approche réside dans le fait
348 qu'Apache ne doit consulter qu'un fichier au lieu de deux. Par
349 contre, vous devez maintenir un nombre plus ou moins important de
350 fichiers de mots de passe, et vous assurer de faire référence au bon
351 fichier dans la directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>.</p>
352 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
353 <div class="section">
354 <h2><a name="possibleproblems" id="possibleproblems">Problèmes possibles</a></h2>
355 <p>L'authentification Basic est spécifiée d'une telle manière que
356 vos nom d'utilisateur et mot de passe doivent être vérifiés chaque
357 fois que vous demandez un document au serveur, et ceci même si vous
358 rechargez la même page, et pour chaque image contenue dans la page
359 (si elles sont situées dans un répertoire protégé). Comme vous
360 pouvez l'imaginer, ceci ralentit un peu le fonctionnement. La mesure
361 dans laquelle le fonctionnement est ralenti est proportionnelle à la
362 taille du fichier des mots de passe, car ce dernier doit être ouvert
363 et la liste des utilisateurs parcourue jusqu'à ce que votre nom soit
364 trouvé, et ceci chaque fois qu'une page est chargée.</p>
366 <p>En conséquence, ce ralentissement impose une limite pratique au
367 nombre d'utilisateurs que vous pouvez enregistrer dans un fichier de
368 mots de passe. Cette limite va varier en fonction des performances
369 de votre serveur, mais vous commencerez à remarquer un
370 ralentissement lorsque vous atteindrez quelques centaines
371 d'utilisateurs, et serez alors appelés à utiliser une méthode
372 d'authentification différente.</p>
373 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
374 <div class="section">
375 <h2><a name="dbmdbd" id="dbmdbd">Autre méthode de stockage des mots de
378 <p>Suite au problème évoqué précédemment et induit par le stockage
379 des mots de passe dans un fichier texte, vous pouvez être appelé à
380 stocker vos mots de passe d'une autre manière, par exemple dans une
383 <p>Pour y parvenir, on peut utiliser les modules
384 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.
385 Vous pouvez choisir comme format de stockage <code>dbm</code> ou
386 <code>dbd</code> à la place de <code>file</code> pour la directive
387 <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>.</p>
389 <p>Par exemple, pour sélectionner un fichier dbm à la place d'un
392 <div class="example"><p><code>
393 <Directory /www/docs/private><br />
394 AuthName "Private"<br />
396 AuthBasicProvider dbm<br />
397 AuthDBMUserFile /www/passwords/passwd.dbm<br />
398 Require valid-user<br />
402 <p>D'autres options sont disponibles. Consultez la documentation de
403 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> pour plus de détails.</p>
404 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
405 <div class="section">
406 <h2><a name="multprovider" id="multprovider">Utilisation de plusieurs fournisseurs
407 d'authentification</a></h2>
409 <p>Depuis l'arrivée des nouvelles architecture d'autorisation et
410 d'authentification basées sur les fournisseurs, vous n'êtes plus
411 limité à une méthode d'authentification et d'autorisation
412 unique. En fait, on peut panacher autant de fournisseurs que l'on
413 veut, ce qui vous permet d'élaborer l'architecture qui correspond
414 exactement à vos besoins. Dans l'exemple suivant, on utilise
415 conjointement les fournisseurs d'authentification
418 <div class="example"><p><code>
419 <Directory /www/docs/private><br />
420 AuthName "Private"<br />
422 AuthBasicProvider file ldap<br />
423 AuthUserFile /usr/local/apache/passwd/passwords<br />
424 AuthLDAPURL ldap://ldaphost/o=yourorg<br />
425 Require valid-user<br />
429 <p>Dans cet exemple, le fournisseur file va tenter d'authentifier
430 l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP
431 sera sollicité. Ceci permet l'élargissement des possibilités
432 d'authentification si votre organisation implémente plusieurs types
433 de bases d'authentification. D'autres scénarios d'authentification
434 et d'autorisation peuvent associer un type d'authentification avec
435 un autre type d'autorisation. Par exemple, une authentification
436 basée sur un fichier de mots de passe peut permettre l'attribution
437 d'autorisations basée sur un annuaire LDAP.</p>
439 <p>Tout comme plusieurs fournisseurs d'authentification peuvent être
440 implémentés, on peut aussi utiliser plusieurs méthodes
441 d'autorisation. Dans l'exemple suivant, on utilise à la fois une
442 autorisation à base de fichier de groupes et une autorisation à base
445 <div class="example"><p><code>
446 <Directory /www/docs/private><br />
447 AuthName "Private"<br />
449 AuthBasicProvider file<br />
450 AuthUserFile /usr/local/apache/passwd/passwords<br />
451 AuthLDAPURL ldap://ldaphost/o=yourorg
452 AuthGroupFile /usr/local/apache/passwd/groups<br />
453 Require group GroupName<br />
454 Require ldap-group cn=mygroup,o=yourorg<br />
458 <p>Pour un scénario d'autorisation un peu plus avancé, des
459 directives de conteneur d'autorisation comme <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code> et
460 <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code> permettent d'appliquer une
461 logique telle que l'ordre dans lequel les autorisations sont
462 appliquées peut être entièrement contrôlé au niveau de la
463 configuration. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs
464 d'autorisations</a> pour un exemple de ce contrôle.</p>
466 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
467 <div class="section">
468 <h2><a name="beyond" id="beyond">Pour aller plus loin qu'une simple
469 autorisation</a></h2>
471 <p>La manière dont les autorisations sont accordées est désormais
472 beaucoup plus souple qu'une simple vérification auprès d'une seule
473 base de données. Il est maintenant possible de choisir l'ordre, la
474 logique et la manière selon lesquels une autorisation est
477 <h3><a name="authandororder" id="authandororder">Appliquer logique et
478 ordonnancement</a></h3>
479 <p>Le contrôle de la manière et de l'ordre selon lesquels le
480 processus d'autorisation était appliqué
481 constituait une sorte de mystère par
482 le passé. Dans Apache 2.2, un mécanisme d'authentification basé
483 sur les fournisseurs a été développé afin de séparer le
484 véritable processus d'authentification de l'autorisation et ses
485 différentes fonctionnalités. Un des avantages colatéraux
486 résidait dans le fait que les fournisseurs d'authentification
487 pouvaient être configurés et appelés selon un ordre particulier
488 indépendant de l'ordre de chargement du module auth proprement
489 dit. Ce mécanisme basé sur les fournisseurs a été étendu au
490 processus d'autorisation. Ceci signifie que la directive
491 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> définit
492 non seulement quelles méthodes d'autorisation doivent être
493 utilisées, mais aussi l'ordre dans lequel elles sont appelées.
494 Les méthodes d'autorisation sont appelées selon l'ordre dans
495 lequel les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> apparaissent dans la
498 <p>Avec l'introduction des directives de conteneur
499 d'autorisations <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
500 et <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>, la
501 configuration contrôle aussi le moment où les méthodes
502 d'autorisation sont appelées, et quels critères déterminent
503 l'autorisation d'accès. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs
504 d'autorisations</a> pour un exemple de la manière de les
505 utiliser pour exprimer des logiques d'autorisation
508 <p>Par défaut, toutes les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> sont
509 traitées comme si elles étaient contenues dans une directive
510 <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>. En d'autres termes, il
512 qu'une méthode d'autorisation s'applique avec succès pour que
513 l'autorisation soit accordée.</p>
517 <h3><a name="reqaccessctrl" id="reqaccessctrl">Utilisation de fournisseurs
518 d'autorisation pour le contrôle d'accès</a></h3>
519 <p>La vérification du nom d'utilisateur et du mot de passe ne
520 constituent qu'un aspect des méthodes d'authentification.
521 Souvent, le contrôle d'accès à certaines personnes n'est pas
522 basé sur leur identité ; il peut dépendre, par exemple de leur
525 <p>Les fournisseurs d'autorisation <code class="directive"><a href="../mod/mod_authz_host.html# all">
526 all</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html# env">
527 env</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html# host">
528 host</a></code> et <code class="directive"><a href="../mod/mod_authz_host.html# ip">
529 ip</a></code> vous permettent d'accorder ou refuser l'accès en
530 fonction de critères tels que le nom d'hôte ou l'adresse
531 IP de la machine qui effectue la requête.</p>
533 <p>L'utilisation de ces fournisseurs est spécifiée à l'aide de
534 la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>. Cette directive
535 permet d'enregistrer quels fournisseurs d'autorisation
536 seront appelés dans le processus d'autorisation au cours du
537 traitement de la requête. Par exemple :</p>
539 <div class="example"><p><code>
540 Require ip <var>adresse</var>
543 <p>où <var>adresse</var> est une adresse IP (ou une adresse IP
546 <div class="example"><p><code>
547 Require host <var>nom_domaine</var>
550 <p>où <var>nom_domaine</var> est un nom de domaine entièrement
551 qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer
552 plusieurs adresses ou noms de domaines, si vous le désirez.</p>
554 <p>Par exemple, si vous voulez rejeter les spams dont une
555 machine vous inonde, vous pouvez utiliser ceci :</p>
557 <div class="example"><p><code>
559 <span class="indent">
560 Require all granted<br />
561 Require not ip 10.252.46.165
566 <p>Ainsi, les visiteurs en provenance de cette adresse ne
567 pourront pas voir le contenu concerné par cette directive. Si,
568 par contre, vous connaissez le nom de la machine, vous pouvez
571 <div class="example"><p><code>
573 <span class="indent">
574 Require all granted<br />
575 Require not host <var>serveur.exemple.com</var>
580 <p>Et si vous voulez interdire l'accès à toutes les machines
581 d'un domaine, vous pouvez spécifier une partie seulement de
582 l'adresse ou du nom de domaine :</p>
584 <div class="example"><p><code>
586 <span class="indent">
587 Require all granted<br />
589 <span class="indent">
590 Require ip 192.168.205<br />
591 Require host phishers.exemple.com autres-idiots.exemple<br />
599 <p>Dans l'exemple ci-dessus, on utilise la directive du
600 conteneur <code class="directive"><a href="../mod/mod_authz_core.html#requirenone"><RequireNone></a></code> afin de s'assurer
601 qu'aucune des directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> qu'il contient ne
602 fasse correspondre ses paramètres avant d'accorder
607 <h3><a name="filesystem" id="filesystem">Compatibilité ascendante du contrôle
609 <p>L'adoption d'un mécanisme à base de fournisseurs pour
610 l'authentification, a pour effet colatéral de rendre inutiles
611 les directives <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> et <code class="directive"><a href="../mod/mod_access_compat.html#satisfy">Satisfy</a></code>. Cependant, et à
612 des fins de compatibilité ascendante vers les anciennes
613 configurations, ces directives ont été déplacées vers le module
614 <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</p>
618 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
619 <div class="section">
620 <h2><a name="moreinformation" id="moreinformation">Pour aller plus loin . . .</a></h2>
621 <p>Vous pouvez aussi lire la documentation de
622 <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> et <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>
623 qui contient des informations supplémentaires à propos du
624 fonctionnement de tout ceci.
625 Certaines configurations d'authentification peuvent aussi être
626 simplifiées à l'aide de la directive <code class="directive"><a href="../mod/mod_authn_core.html#<authnprovideralias>"><AuthnProviderAlias></a></code>.</p>
628 <p>Les différents algorithmes de chiffrement supportés par Apache
629 pour authentifier les données sont expliqués dans <a href="../misc/password_encryptions.html">PasswordEncryptions</a>.</p>
631 <p>Enfin vous pouvez consulter la recette <a href="access.html">Contrôle
632 d'accès</a>, qui décrit un certain nombre de situations en relation
636 <div class="bottomlang">
637 <p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
638 <a href="../fr/howto/auth.html" title="Français"> fr </a> |
639 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
640 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
641 </div><div id="footer">
642 <p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
643 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>