]> granicus.if.org Git - apache/blob - docs/manual/howto/auth.html.fr
Seems folks have forgotten to set eol-style, perhaps some modifications
[apache] / docs / manual / howto / auth.html.fr
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
7       -->
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="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
18 <div id="path">
19 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Authentification, autorisation et contrôle d'accès</h1>
20 <div class="toplang">
21 <p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |
23 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
24 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
25 </div>
26
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>
31 </div>
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
40 passe</a></li>
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
44 autorisation</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Pour aller plus loin . . .</a></li>
46 </ul></div>
47 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
48 <div class="section">
49 <h2><a name="related" id="related">Modules et directives concernés</a></h2>
50
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>
54
55 <ul>
56   <li>Type d'authentification (voir la directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>)
57     <ul>
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>
60     </ul>
61   </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>)
63
64     <ul>
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>
70     </ul>
71   </li>
72   <li>Autorisation (voir la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
73     <ul>
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>
81     </ul>
82   </li>
83 </ul>
84
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>
89
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>
98
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>
101
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>
110
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 à
113     utiliser.</p>
114
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>
119     </div>
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">&lt;Directory&gt;</a></code>), soit au niveau de la
126     configuration des répertoires (fichiers <code>.htaccess</code>)</p>
127
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>
134
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>
137     du style :</p>
138
139     <div class="example"><p><code>
140       AllowOverride AuthConfig
141     </code></p></div>
142
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>
146
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>
152
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>
165
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>
171
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>
178
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>
184
185     <p>Pour créer le fichier, tapez :</p>
186
187     <div class="example"><p><code>
188       htpasswd -c /usr/local/apache/passwd/passwords rbowen
189     </code></p></div>
190
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>
193
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
199     </code></p></div>
200
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>
205
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 &lt;Directory
215     /usr/local/apache/htdocs/secret&gt; :</p>
216
217     <div class="example"><p><code>
218       AuthType Basic<br />
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 />
223       Require user rbowen
224     </code></p></div>
225
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>
237
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>
245
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>
255
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>
262
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
274     d'Apache</a>.</p>
275
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>
290
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>
296
297    <div class="example"><p><code>
298      Nom-de-groupe: rbowen dpitts sungo rshersey
299    </code></p></div>
300
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>
303
304     <p>Pour ajouter un utilisateur à votre fichier de mots de passe
305     préexistant, entrez :</p>
306
307     <div class="example"><p><code>
308       htpasswd /usr/local/apache/passwd/passwords dpitts
309     </code></p></div>
310
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
314     mots de passe)..</p>
315
316     <p>Maintenant, vous devez modifier votre fichier
317     <code>.htaccess</code> comme suit :</p>
318
319     <div class="example"><p><code>
320       AuthType Basic<br />
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
327     </code></p></div>
328
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
332     mot de passe.</p>
333
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>
337
338     <div class="example"><p><code>
339       Require valid-user
340     </code></p></div>
341
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>
365
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
376 passe</a></h2>
377
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
381     base de données.</p>
382
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>
388
389     <p>Par exemple, pour sélectionner un fichier dbm à la place d'un
390     fichier texte :</p>
391
392     <div class="example"><p><code>
393     &lt;Directory /www/docs/private&gt;<br />
394     AuthName "Private"<br />
395     AuthType Basic<br />
396     AuthBasicProvider dbm<br />
397     AuthDBMUserFile /www/passwords/passwd.dbm<br />
398     Require valid-user<br />
399     &lt;/Directory&gt;
400     </code></p></div>
401
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>
408
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
416     file et LDAP :</p>
417
418     <div class="example"><p><code>
419     &lt;Directory /www/docs/private&gt;<br />
420     AuthName "Private"<br />
421     AuthType Basic<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 />
426     &lt;/Directory&gt;
427     </code></p></div>
428
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>
438
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
443     de groupes LDAP.</p>
444
445     <div class="example"><p><code>
446     &lt;Directory /www/docs/private&gt;<br />
447     AuthName "Private"<br />
448     AuthType Basic<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 />
455     &lt;/Directory&gt;
456     </code></p></div>
457
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">&lt;RequireAll&gt;</a></code> et
460     <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</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>
465
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>
470
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
475     accordée.</p>
476
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
496         configuration.</p>
497
498         <p>Avec l'introduction des directives de conteneur
499         d'autorisations <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
500         et <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</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
506         complexes.</p>
507
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">&lt;RequireAny&gt;</a></code>. En d'autres termes, il
511         suffit
512         qu'une méthode d'autorisation s'applique avec succès pour que
513         l'autorisation soit accordée.</p>
514
515     
516
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
523         provenance.</p>
524
525         <p>Les fournisseurs d'autorisation <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        all">
526         all</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        env">
527         env</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        host">
528         host</a></code> et <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        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>
532
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>
538
539         <div class="example"><p><code>
540           Require ip <var>adresse</var>
541         </code></p></div>
542
543         <p>où <var>adresse</var> est une adresse IP (ou une adresse IP
544         partielle) ou :</p>
545
546         <div class="example"><p><code>
547           Require host <var>nom_domaine</var>
548         </code></p></div>
549
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>
553
554         <p>Par exemple, si vous voulez rejeter les spams dont une
555         machine vous inonde, vous pouvez utiliser ceci :</p>
556
557         <div class="example"><p><code>
558           &lt;RequireAll&gt;
559           <span class="indent">
560             Require all granted<br />
561             Require not ip 10.252.46.165
562           </span>
563           &lt;/RequireAll&gt;
564         </code></p></div>
565
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
569         utiliser ceci :</p>
570
571         <div class="example"><p><code>
572            &lt;RequireAll&gt;
573           <span class="indent">
574             Require all granted<br />
575             Require not host <var>serveur.exemple.com</var>
576           </span>
577           &lt;/RequireAll&gt;
578         </code></p></div>
579
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>
583
584         <div class="example"><p><code>
585          &lt;RequireAll&gt;
586           <span class="indent">
587              Require all granted<br />
588             &lt;RequireNone&gt;
589             <span class="indent">
590               Require ip 192.168.205<br />
591               Require host phishers.exemple.com autres-idiots.exemple<br />
592               Require host ke
593             </span>
594             &lt;/RequireNone&gt;
595           </span>
596           &lt;/RequireAll&gt;
597         </code></p></div>
598
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">&lt;RequireNone&gt;</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
603         l'autorisation.</p>
604
605     
606
607     <h3><a name="filesystem" id="filesystem">Compatibilité ascendante du contrôle
608     d'accès</a></h3>
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>
615
616     
617
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#&lt;authnprovideralias&gt;">&lt;AuthnProviderAlias&gt;</a></code>.</p>
627
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>
630
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
633     avec le sujet.</p>
634
635 </div></div>
636 <div class="bottomlang">
637 <p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
638 <a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |
639 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
640 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</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>
644 </body></html>