]> granicus.if.org Git - apache/blob - docs/manual/howto/auth.xml.fr
Updates.
[apache] / docs / manual / howto / auth.xml.fr
1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 816418 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviwed by : Vincent Deffontaines -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="auth.xml.meta">
26 <parentdocument href="./">Recettes / Tutoriels</parentdocument>
27
28 <title>Authentification, autorisation et contr&ocirc;le d'acc&egrave;s</title>
29
30 <summary>
31     <p>L'authentification est un processus qui vous permet de v&eacute;rifier
32     qu'une personne est bien celle qu'elle pr&eacute;tend &ecirc;tre. L'autorisation
33     est un processus qui permet &agrave; une personne d'aller l&agrave; o&ugrave; elle veut
34     aller, ou d'obtenir les informations qu'elle d&eacute;sire.</p>
35 </summary>
36
37 <section id="related"><title>Modules et directives concern&eacute;s</title>
38
39 <p>Trois groupes de modules sont concern&eacute;s par le processus
40 d'authentification et d'autorisation. Vous devrez utiliser au moins un
41 module de chaque groupe.</p>
42
43 <ul>
44   <li>Type d'authentification (voir la directive <directive
45   module="mod_authn_core">AuthType</directive>)
46     <ul>
47       <li><module>mod_auth_basic</module></li>
48       <li><module>mod_auth_digest</module></li>
49     </ul>
50   </li>
51   <li>Fournisseur d'authentification (voir les directives <directive
52   module="mod_auth_basic">AuthBasicProvider</directive> et <directive
53   module="mod_auth_digest">AuthDigestProvider</directive>)
54
55     <ul>
56       <li><module>mod_authn_anon</module></li>
57       <li><module>mod_authn_dbd</module></li>
58       <li><module>mod_authn_dbm</module></li>
59       <li><module>mod_authn_file</module></li>
60       <li><module>mod_authnz_ldap</module></li>
61     </ul>
62   </li>
63   <li>Autorisation (voir la directive <directive
64   module="mod_authz_core">Require</directive>)
65     <ul>
66       <li><module>mod_authnz_ldap</module></li>
67       <li><module>mod_authz_dbd</module></li>
68       <li><module>mod_authz_dbm</module></li>
69      <li><module>mod_authz_groupfile</module></li>
70       <li><module>mod_authz_host</module></li>
71       <li><module>mod_authz_owner</module></li>
72       <li><module>mod_authz_user</module></li>
73     </ul>
74   </li>
75 </ul>
76
77   <p>On peut aussi ajouter <module>mod_authn_core</module> et
78   <module>mod_authz_core</module>. Ces modules impl&eacute;mentent des
79   directives g&eacute;n&eacute;rales qui op&egrave;rent au dessus de tous les modules
80   d'authentification.</p>
81
82   <p>Le module <module>mod_authnz_ldap</module> est un fournisseur
83   d'authentification et d'autorisation. Le module
84   <module>mod_authz_host</module> fournit une autorisation et un
85   contr&ocirc;le d'acc&egrave;s bas&eacute;s sur le nom du serveur, l'adresse IP ou
86   certaines caract&eacute;ristiques de la requ&ecirc;te, mais ne fait pas partie du
87   syst&egrave;me fournisseur d'authentification. Le module
88   <module>mod_access_compat</module> a &eacute;t&eacute; cr&eacute;&eacute; &agrave; des fins de
89   compatibilit&eacute; ascendante avec mod_access.</p>
90
91   <p>Vous devriez aussi jeter un coup d'oeil au manuel de recettes de <a
92   href="access.html">Contr&ocirc;le d'acc&egrave;s</a>, qui d&eacute;crit les diff&eacute;rentes
93   m&eacute;thodes de contr&ocirc;le d'acc&egrave;s &agrave; votre serveur.</p>
94
95 </section>
96
97 <section id="introduction"><title>Introduction</title>
98     <p>Si votre site web contient des informations sensibles ou
99     destin&eacute;es seulement &agrave; un groupe de personnes restreint, les
100     techniques expos&eacute;es dans cet article vont vous aider &agrave; vous assurer
101     que les personnes qui ont acc&egrave;s &agrave; ces pages sont bien celles
102     auxquelles vous avez donn&eacute; l'autorisation d'acc&egrave;s.</p>
103
104     <p>Cet article d&eacute;crit les m&eacute;thodes "standards" de protection de
105     parties de votre site web que la plupart d'entre vous sont appel&eacute;s &agrave;
106     utiliser.</p>
107
108     <note><title>Note :</title>
109     <p>Si vos donn&eacute;es ont un r&eacute;el besoin de s&eacute;curisation, pr&eacute;voyez
110     l'utilisation de <module>mod_ssl</module> en plus de toute m&eacute;thode
111     d'authentification.</p>
112     </note>
113 </section>
114
115 <section id="theprerequisites"><title>Les pr&eacute;requis</title>
116     <p>Les directives d&eacute;crites dans cet article devront &ecirc;tre ins&eacute;r&eacute;es
117     soit au niveau de la configuration de votre serveur principal (en
118     g&eacute;n&eacute;ral dans une section <directive module="core"
119     type="section">Directory</directive>), soit au niveau de la
120     configuration des r&eacute;pertoires (fichiers <code>.htaccess</code>)</p>
121
122     <p>Si vous envisagez l'utilisation de fichiers
123     <code>.htaccess</code>, la configuration de votre serveur devra
124     permettre l'ajout de directives d'authentification dans ces
125     fichiers. Pour ce faire, on utilise la directive <directive
126     module="core">AllowOverride</directive>, qui sp&eacute;cifie quelles
127     directives pourront &eacute;ventuellement contenir les fichiers de
128     configuration de niveau r&eacute;pertoire.</p>
129
130     <p>Comme il est ici question d'authentification, vous aurez besoin
131     d'une directive <directive module="core">AllowOverride</directive>
132     du style :</p>
133
134     <example>
135       AllowOverride AuthConfig
136     </example>
137
138     <p>Si vous avez l'intention d'ajouter les directives directement
139     dans le fichier de configuration principal, vous devrez bien entendu
140     poss&eacute;der les droits en &eacute;criture sur ce fichier.</p>
141
142     <p>Vous devrez aussi conna&icirc;tre un tant soit peu la structure des
143     r&eacute;pertoires de votre serveur, ne serait-ce que pour savoir o&ugrave; se
144     trouvent certains fichiers. Cela ne devrait pas pr&eacute;senter de grandes
145     difficult&eacute;s, et nous essaierons de clarifier tout &ccedil;a lorsque le besoin
146     s'en fera sentir.</p>
147
148     <p>Enfin, vous devrez vous assurer que les modules
149     <module>mod_authn_core</module> et <module>mod_authz_core</module>
150     ont &eacute;t&eacute; soit compil&eacute;s avec le binaire httpd, soit charg&eacute;s par le
151     fichier de configuration httpd.conf. Ces deux modules fournissent
152     des directives g&eacute;n&eacute;rales et des fonctionnalit&eacute;s qui sont critiques
153     quant &agrave; la configuration et l'utilisation de l'authentification et
154     de l'autorisation au sein du serveur web.</p>
155 </section>
156
157 <section id="gettingitworking"><title>Mise en oeuvre</title>
158     <p>Nous d&eacute;crivons ici les bases de la protection par mot de passe
159     d'un r&eacute;pertoire de votre serveur.</p>
160
161     <p>Vous devez en premier lieu cr&eacute;er un fichier de mots de passe. La
162     m&eacute;thode exacte selon laquelle vous allez cr&eacute;er ce fichier va varier
163     en fonction du fournisseur d'authentification choisi. Mais nous
164     entrerons dans les d&eacute;tails plus loin, et pour le moment, nous nous
165     contenterons d'un fichier de mots de passe en mode texte.</p>
166
167     <p>Ce fichier doit &ecirc;tre enregistr&eacute; &agrave; un endroit non accessible
168     depuis le web, de fa&ccedil;on &agrave; ce que les clients ne puissent pas le
169     t&eacute;l&eacute;charger. Par exemple, si vos documents sont servis &agrave; partir de
170     <code>/usr/local/apache/htdocs</code>, vous pouvez enregistrer le
171     fichier des mots de passe dans
172     <code>/usr/local/apache/passwd</code>.</p>
173
174     <p>L'utilitaire <program>htpasswd</program> fourni avec Apache
175     permet de cr&eacute;er ce fichier. Vous le trouverez dans le r&eacute;pertoire
176     <code>bin</code> de votre installation d'Apache. Si vous avez
177     install&eacute; Apache &agrave; partir d'un paquetage tiers, il sera probablement
178     dans le chemin par d&eacute;faut de vos ex&eacute;cutables.</p>
179
180     <p>Pour cr&eacute;er le fichier, tapez :</p>
181
182     <example>
183       htpasswd -c /usr/local/apache/passwd/passwords rbowen
184     </example>
185
186     <p><program>htpasswd</program> vous demandera d'entrer le mot de
187     passe, et de le retaper pour confirmation :</p>
188
189     <example>
190       # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
191       New password: mot-de-passe<br />
192       Re-type new password: mot-de-passe<br />
193       Adding password for user rbowen
194     </example>
195
196     <p>Si <program>htpasswd</program> n'est pas dans le chemin par
197     d&eacute;faut de vos ex&eacute;cutables, vous devrez bien entendu entrer le chemin
198     complet du fichier. Dans le cas d'une installation par d&eacute;faut, il se
199     trouve &agrave; <code>/usr/local/apache2/bin/htpasswd</code>.</p>
200
201     <p>Ensuite, vous allez devoir configurer le serveur de fa&ccedil;on &agrave; ce
202     qu'il demande un mot de passe et lui pr&eacute;ciser quels utilisateurs ont
203     l'autorisation d'acc&egrave;s. Pour ce faire, vous pouvez soit &eacute;diter le
204     fichier <code>httpd.conf</code>, soit utiliser un fichier
205     <code>.htaccess</code>. Par exemple, si vous voulez prot&eacute;ger le
206     r&eacute;pertoire <code>/usr/local/apache/htdocs/secret</code>, vous pouvez
207     utiliser les directives suivantes, soit dans le fichier
208     <code>/usr/local/apache/htdocs/secret/.htaccess</code>, soit dans le
209     fichier <code>httpd.conf</code> &agrave; l'int&eacute;rieur d'une section &lt;Directory
210     /usr/local/apache/htdocs/secret&gt; :</p>
211
212     <example>
213       AuthType Basic<br />
214       AuthName "Fichiers r&eacute;serv&eacute;s"<br />
215       # (La ligne suivante est facultative)<br />
216       AuthBasicProvider file<br />
217       AuthUserFile /usr/local/apache/passwd/passwords<br />
218       Require user rbowen
219     </example>
220
221     <p>Examinons ces directives une &agrave; une. La directive <directive
222     module="mod_authn_core">AuthType</directive> d&eacute;finit la m&eacute;thode
223     utilis&eacute;e pour authentifier l'utilisateur. La m&eacute;thode la plus
224     courante est <code>Basic</code>, et elle est impl&eacute;ment&eacute;e par
225     <module>mod_auth_basic</module>. Il faut cependant garder &agrave; l'esprit
226     que l'authentification Basic transmet le mot de passe depuis le
227     client vers le serveur en clair. Cette m&eacute;thode ne devra donc pas
228     &ecirc;tre utilis&eacute;e pour la transmission de donn&eacute;es hautement sensibles si
229     elle n'est pas associ&eacute;e au module <module>mod_ssl</module>. Apache
230     supporte une autre m&eacute;thode d'authentification : <code>AuthType
231     Digest</code>. Cette m&eacute;thode est impl&eacute;ment&eacute;e par le module <module
232     >mod_auth_digest</module> et est beaucoup plus s&eacute;curis&eacute;e. La plupart
233     des navigateurs r&eacute;cents supportent l'authentification Digest.</p>
234
235     <p>La directive <directive
236     module="mod_authn_core">AuthName</directive> d&eacute;finit
237     l'<dfn>Identificateur</dfn> (Realm) &agrave; utiliser avec
238     l'authentification. L'identificateur poss&egrave;de deux fonctions. Tout
239     d'abord, le client pr&eacute;sente en g&eacute;n&eacute;ral cette information &agrave;
240     l'utilisateur dans le cadre de la bo&icirc;te de dialogue de mot de passe.
241     Ensuite, le client l'utilise pour d&eacute;terminer quel mot de passe
242     envoyer pour une zone authentifi&eacute;e donn&eacute;e.</p>
243
244     <p>Ainsi par exemple, une fois un client authentifi&eacute; dans la zone
245     <code>"Fichiers r&eacute;serv&eacute;s"</code>, il soumettra &agrave; nouveau
246     automatiquement le m&ecirc;me mot de passe pour toute zone du m&ecirc;me serveur
247     marqu&eacute;e de l'identificateur <code>"Fichiers r&eacute;serv&eacute;s"</code>. De
248     cette fa&ccedil;on, vous pouvez &eacute;viter &agrave; un utilisateur d'avoir &agrave; saisir
249     plusieurs fois le m&ecirc;me mot de passe en faisant partager le m&ecirc;me
250     identificateur entre plusieurs zones r&eacute;serv&eacute;es. Bien entendu et pour
251     des raisons de s&eacute;curit&eacute;, le client devra redemander le mot
252     de passe chaque fois que le nom d'h&ocirc;te du serveur sera modifi&eacute;.</p>
253
254     <p>La directive <directive
255     module="mod_auth_basic">AuthBasicProvider</directive> est, dans ce
256     cas, facultative, car <code>file</code> est la valeur par d&eacute;faut
257     pour cette directive. Par contre, cette directive sera obligatoire
258     si vous utilisez une autre source d'authentification comme
259     <module>mod_authn_dbm</module> ou
260     <module>mod_authn_dbd</module>.</p>
261
262     <p>La directive <directive
263     module="mod_authn_file">AuthUserFile</directive> d&eacute;finit le chemin
264     du fichier de mots de passe que nous venons de cr&eacute;er avec
265     <program>htpasswd</program>. Si vous poss&eacute;dez un grand nombre
266     d'utilisateurs, la dur&eacute;e de la recherche dans un fichier texte pour
267     authentifier un utilisateur &agrave; chaque requ&ecirc;te va augmenter
268     rapidement, et pour pallier cet inconv&eacute;nient, Apache peut aussi
269     stocker les donn&eacute;es relatives aux
270     utilisateurs dans des bases de donn&eacute;es rapides. Le module
271     <module>mod_authn_dbm</module> fournit la directive <directive
272     module="mod_authn_dbm">AuthDBMUserFile</directive>. Le programme <program>
273     dbmmanage</program> permet de cr&eacute;er et manipuler ces fichiers. Vous
274     trouverez de nombreuses options d'autres types d'authentification
275     fournies par des modules tiers dans la <a
276     href="http://modules.apache.org/">Base de donn&eacute;es des modules
277     d'Apache</a>.</p>
278
279     <p>Enfin, la directive <directive
280     module="mod_authz_core">Require</directive> impl&eacute;mente la partie
281     autorisation du processus en d&eacute;finissant l'utilisateur autoris&eacute; &agrave;
282     acc&eacute;der &agrave; cette zone du serveur. Dans la section suivante, nous
283     d&eacute;crirons les diff&eacute;rentes m&eacute;thodes d'utilisation de la directive
284     <directive module="mod_authz_core">Require</directive>.</p>
285 </section>
286
287 <section id="lettingmorethanonepersonin"><title>Autorisation d'acc&egrave;s &agrave;
288 plusieurs personnes</title>
289     <p>Les directives ci-dessus n'autorisent qu'une personne (quelqu'un
290     poss&eacute;dant le nom d'utilisateur <code>rbowen</code>) &agrave; acc&eacute;der au
291     r&eacute;pertoire. Dans la plupart des cas, vous devrez autoriser
292     l'acc&egrave;s &agrave; plusieurs personnes. C'est ici
293     qu'intervient la directive <directive module="mod_authz_groupfile"
294     >AuthGroupFile</directive>.</p>
295
296     <p>Si vous voulez autoriser l'acc&egrave;s &agrave; plusieurs personnes, vous
297     devez cr&eacute;er un fichier de groupes qui associe des noms de groupes
298     avec une liste d'utilisateurs de ce groupe. Le format de ce fichier
299     est tr&egrave;s simple, et vous pouvez le cr&eacute;er avec votre &eacute;diteur favori.
300     Son contenu se pr&eacute;sente comme suit :</p>
301
302    <example>
303      Nom-de-groupe: rbowen dpitts sungo rshersey
304    </example>
305
306     <p>Il s'agit simplement une liste des membres du groupe sous la
307     forme d'une ligne s&eacute;par&eacute;e par des espaces.</p>
308
309     <p>Pour ajouter un utilisateur &agrave; votre fichier de mots de passe
310     pr&eacute;existant, entrez :</p>
311
312     <example>
313       htpasswd /usr/local/apache/passwd/passwords dpitts
314     </example>
315
316     <p>Vous obtiendrez le m&ecirc;me effet qu'auparavant, mais le mot de passe
317     sera ajout&eacute; au fichier, plut&ocirc;t que d'en cr&eacute;er un nouveau (C'est le
318     drapeau <code>-c</code> qui permet de cr&eacute;er un nouveau fichier de
319     mots de passe)..</p>
320
321     <p>Maintenant, vous devez modifier votre fichier
322     <code>.htaccess</code> comme suit :</p>
323
324     <example>
325       AuthType Basic<br />
326       AuthName "By Invitation Only"<br />
327       # Ligne facultative :<br />
328       AuthBasicProvider file<br />
329       AuthUserFile /usr/local/apache/passwd/passwords<br />
330       AuthGroupFile /usr/local/apache/passwd/groups<br />
331       Require group Nom-de-groupe
332     </example>
333
334     <p>Maintenant, quiconque appartient au groupe
335     <code>Nom-de-groupe</code>, et poss&egrave;de une entr&eacute;e dans le fichier
336     <code>password</code> pourra acc&eacute;der au r&eacute;pertoire s'il tape le bon
337     mot de passe.</p>
338
339     <p>Il existe une autre m&eacute;thode moins contraignante pour autoriser
340     l'acc&egrave;s &agrave; plusieurs personnes. Plut&ocirc;t que de cr&eacute;er un fichier de
341     groupes, il vous suffit d'ajouter la directive suivante :</p>
342
343     <example>
344       Require valid-user
345     </example>
346
347     <p>Le remplacement de la ligne <code>Require user rbowen</code> par
348     la ligne <code>Require valid-user</code> autorisera l'acc&egrave;s &agrave;
349     quiconque poss&eacute;dant une entr&eacute;e dans le fichier password, et ayant
350     tap&eacute; le bon mot de passe. Vous pouvez m&ecirc;me simuler le comportement
351     des groupes en associant un fichier de mots de passe diff&eacute;rent pour
352     chaque groupe. L'avantage de cette approche r&eacute;side dans le fait
353     qu'Apache ne doit consulter qu'un fichier au lieu de deux. Par
354     contre, vous devez maintenir un nombre plus ou moins important de
355     fichiers de mots de passe, et vous assurer de faire r&eacute;f&eacute;rence au bon
356     fichier dans la directive <directive
357     module="mod_authn_file">AuthUserFile</directive>.</p>
358 </section>
359
360 <section id="possibleproblems"><title>Probl&egrave;mes possibles</title>
361     <p>L'authentification Basic est sp&eacute;cifi&eacute;e d'une telle mani&egrave;re que
362     vos nom d'utilisateur et mot de passe doivent &ecirc;tre v&eacute;rifi&eacute;s chaque
363     fois que vous demandez un document au serveur, et ceci m&ecirc;me si vous
364     rechargez la m&ecirc;me page, et pour chaque image contenue dans la page
365     (si elles sont situ&eacute;es dans un r&eacute;pertoire prot&eacute;g&eacute;). Comme vous
366     pouvez l'imaginer, ceci ralentit un peu le fonctionnement. La mesure
367     dans laquelle le fonctionnement est ralenti est proportionnelle &agrave; la
368     taille du fichier des mots de passe, car ce dernier doit &ecirc;tre ouvert
369     et la liste des utilisateurs parcourue jusqu'&agrave; ce que votre nom soit
370     trouv&eacute;, et ceci chaque fois qu'une page est charg&eacute;e.</p>
371
372     <p>En cons&eacute;quence, ce ralentissement impose une limite pratique au
373     nombre d'utilisateurs que vous pouvez enregistrer dans un fichier de
374     mots de passe. Cette limite va varier en fonction des performances
375     de votre serveur, mais vous commencerez &agrave; remarquer un
376     ralentissement lorsque vous atteindrez quelques centaines
377     d'utilisateurs, et serez alors appel&eacute;s &agrave; utiliser une m&eacute;thode
378     d'authentification diff&eacute;rente.</p>
379 </section>
380
381 <section id="dbmdbd"><title>Autre m&eacute;thode de stockage des mots de
382 passe</title>
383
384     <p>Suite au probl&egrave;me &eacute;voqu&eacute; pr&eacute;c&eacute;demment et induit par le stockage
385     des mots de passe dans un fichier texte, vous pouvez &ecirc;tre appel&eacute; &agrave;
386     stocker vos mots de passe d'une autre mani&egrave;re, par exemple dans une
387     base de donn&eacute;es.</p>
388
389     <p>Pour y parvenir, on peut utiliser les modules
390     <module>mod_authn_dbm</module> ou <module>mod_authn_dbd</module>.
391     Vous pouvez choisir comme format de stockage <code>dbm</code> ou
392     <code>dbd</code> &agrave; la place de <code>file</code> pour la directive
393     <directive module="mod_auth_basic">AuthBasicProvider</directive>.</p>
394
395     <p>Par exemple, pour s&eacute;lectionner un fichier dbm &agrave; la place d'un
396     fichier texte :</p>
397
398     <example>
399     &lt;Directory /www/docs/private&gt;<br />
400     AuthName "Private"<br />
401     AuthType Basic<br />
402     AuthBasicProvider dbm<br />
403     AuthDBMUserFile /www/passwords/passwd.dbm<br />
404     Require valid-user<br />
405     &lt;/Directory&gt;
406     </example>
407
408     <p>D'autres options sont disponibles. Consultez la documentation de
409     <module>mod_authn_dbm</module> pour plus de d&eacute;tails.</p>
410 </section>
411
412 <section id="multprovider"><title>Utilisation de plusieurs fournisseurs
413 d'authentification</title>
414
415     <p>Depuis l'arriv&eacute;e des nouvelles architecture d'autorisation et
416     d'authentification bas&eacute;es sur les fournisseurs, vous n'&ecirc;tes plus
417     limit&eacute; &agrave; une m&eacute;thode d'authentification et d'autorisation
418     unique. En fait, on peut panacher autant de fournisseurs que l'on
419     veut, ce qui vous permet d'&eacute;laborer l'architecture qui correspond
420     exactement &agrave; vos besoins. Dans l'exemple suivant, on utilise
421     conjointement les fournisseurs d'authentification
422     file et LDAP :</p>
423
424     <example>
425     &lt;Directory /www/docs/private&gt;<br />
426     AuthName "Private"<br />
427     AuthType Basic<br />
428     AuthBasicProvider file ldap<br />
429     AuthUserFile /usr/local/apache/passwd/passwords<br />
430     AuthLDAPURL ldap://ldaphost/o=yourorg<br />
431     Require valid-user<br />
432     &lt;/Directory&gt;
433     </example>
434
435     <p>Dans cet exemple, le fournisseur file va tenter d'authentifier
436     l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP
437     sera sollicit&eacute;. Ceci permet l'&eacute;largissement des possibilit&eacute;s
438     d'authentification si votre organisation impl&eacute;mente plusieurs types
439     de bases d'authentification. D'autres sc&eacute;narios d'authentification
440     et d'autorisation peuvent associer un type d'authentification avec
441     un autre type d'autorisation. Par exemple, une authentification
442     bas&eacute;e sur un fichier de mots de passe peut permettre l'attribution
443     d'autorisations bas&eacute;e sur un annuaire LDAP.</p>
444
445     <p>Tout comme plusieurs fournisseurs d'authentification peuvent &ecirc;tre
446     impl&eacute;ment&eacute;s, on peut aussi utiliser plusieurs m&eacute;thodes
447     d'autorisation. Dans l'exemple suivant, on utilise &agrave; la fois une
448     autorisation &agrave; base de fichier de groupes et une autorisation &agrave; base
449     de groupes LDAP.</p>
450
451     <example>
452     &lt;Directory /www/docs/private&gt;<br />
453     AuthName "Private"<br />
454     AuthType Basic<br />
455     AuthBasicProvider file<br />
456     AuthUserFile /usr/local/apache/passwd/passwords<br />
457     AuthLDAPURL ldap://ldaphost/o=yourorg
458     AuthGroupFile /usr/local/apache/passwd/groups<br />
459     Require group GroupName<br />
460     Require ldap-group cn=mygroup,o=yourorg<br />
461     &lt;/Directory&gt;
462     </example>
463
464     <p>Pour un sc&eacute;nario d'autorisation un peu plus avanc&eacute;, des
465     directives de conteneur d'autorisation comme <directive
466     module="mod_authz_core" type="section">RequireAll</directive> et
467     <directive module="mod_authz_core"
468     type="section">RequireAny</directive> permettent d'appliquer une
469     logique telle que l'ordre dans lequel les autorisations sont
470     appliqu&eacute;es peut &ecirc;tre enti&egrave;rement contr&ocirc;l&eacute; au niveau de la
471     configuration. Voir <a
472     href="../mod/mod_authz_core.html#logic">Conteneurs
473     d'autorisations</a> pour un exemple de ce contr&ocirc;le.</p>
474
475 </section>
476
477 <section id="beyond"><title>Pour aller plus loin qu'une simple
478 autorisation</title>
479
480     <p>La mani&egrave;re dont les autorisations sont accord&eacute;es est d&eacute;sormais
481     beaucoup plus souple qu'une simple v&eacute;rification aupr&egrave;s d'une seule
482     base de donn&eacute;es. Il est maintenant possible de choisir l'ordre, la
483     logique et la mani&egrave;re selon lesquels une autorisation est
484     accord&eacute;e.</p>
485
486     <section id="authandororder"><title>Appliquer logique et
487     ordonnancement</title>
488         <p>Le contr&ocirc;le de la mani&egrave;re et de l'ordre selon lesquels le
489         processus d'autorisation &eacute;tait appliqu&eacute;
490         constituait une sorte de myst&egrave;re par
491         le pass&eacute;. Dans Apache 2.2, un m&eacute;canisme d'authentification bas&eacute;
492         sur les fournisseurs a &eacute;t&eacute; d&eacute;velopp&eacute; afin de s&eacute;parer le
493         v&eacute;ritable processus d'authentification de l'autorisation et ses
494         diff&eacute;rentes fonctionnalit&eacute;s. Un des avantages colat&eacute;raux
495         r&eacute;sidait dans le fait que les fournisseurs d'authentification
496         pouvaient &ecirc;tre configur&eacute;s et appel&eacute;s selon un ordre particulier
497         ind&eacute;pendant de l'ordre de chargement du module auth proprement
498         dit. Ce m&eacute;canisme bas&eacute; sur les fournisseurs a &eacute;t&eacute; &eacute;tendu au
499         processus d'autorisation. Ceci signifie que la directive
500         <directive module="mod_authz_core">Require</directive> d&eacute;finit
501         non seulement quelles m&eacute;thodes d'autorisation doivent &ecirc;tre
502         utilis&eacute;es, mais aussi l'ordre dans lequel elles sont appel&eacute;es.
503         Les m&eacute;thodes d'autorisation sont appel&eacute;es selon l'ordre dans
504         lequel les directives <directive
505         module="mod_authz_core">Require</directive> apparaissent dans la
506         configuration.</p>
507
508         <p>Avec l'introduction des directives de conteneur
509         d'autorisations <directive module="mod_authz_core"
510         type="section">RequireAll</directive>
511         et <directive module="mod_authz_core"
512         type="section">RequireAny</directive>, la
513         configuration contr&ocirc;le aussi le moment o&ugrave; les m&eacute;thodes
514         d'autorisation sont appel&eacute;es, et quels crit&egrave;res d&eacute;terminent
515         l'autorisation d'acc&egrave;s. Voir <a
516         href="../mod/mod_authz_core.html#logic">Conteneurs
517         d'autorisations</a> pour un exemple de la mani&egrave;re de les
518         utiliser pour exprimer des logiques d'autorisation
519         complexes.</p>
520
521         <p>Par d&eacute;faut, toutes les directives <directive
522         module="mod_authz_core">Require</directive> sont
523         trait&eacute;es comme si elles &eacute;taient contenues dans une directive
524         <directive module="mod_authz_core"
525         type="section">RequireAny</directive>. En d'autres termes, il
526         suffit
527         qu'une m&eacute;thode d'autorisation s'applique avec succ&egrave;s pour que
528         l'autorisation soit accord&eacute;e.</p>
529
530     </section>
531
532     <section id="reqaccessctrl"><title>Utilisation de fournisseurs
533     d'autorisation pour le contr&ocirc;le d'acc&egrave;s</title>
534         <p>La v&eacute;rification du nom d'utilisateur et du mot de passe ne
535         constituent qu'un aspect des m&eacute;thodes d'authentification.
536         Souvent, le contr&ocirc;le d'acc&egrave;s &agrave; certaines personnes n'est pas
537         bas&eacute; sur leur identit&eacute; ; il peut d&eacute;pendre, par exemple de leur
538         provenance.</p>
539
540         <p>Les fournisseurs d'autorisation <directive module="mod_authz_host">
541         all</directive>, <directive module="mod_authz_host">
542         env</directive>, <directive module="mod_authz_host">
543         host</directive> et <directive module="mod_authz_host">
544         ip</directive> vous permettent d'accorder ou refuser l'acc&egrave;s en
545         fonction de crit&egrave;res tels que le nom d'h&ocirc;te ou l'adresse
546         IP de la machine qui effectue la requ&ecirc;te.</p>
547
548         <p>L'utilisation de ces fournisseurs est sp&eacute;cifi&eacute;e &agrave; l'aide de
549         la directive <directive
550         module="mod_authz_core">Require</directive>. Cette directive
551         permet d'enregistrer quels fournisseurs d'autorisation
552         seront appel&eacute;s dans le processus d'autorisation au cours du
553         traitement de la requ&ecirc;te. Par exemple :</p>
554
555         <example>
556           Require ip <var>adresse</var>
557         </example>
558
559         <p>o&ugrave; <var>adresse</var> est une adresse IP (ou une adresse IP
560         partielle) ou :</p>
561
562         <example>
563           Require host <var>nom_domaine</var>
564         </example>
565
566         <p>o&ugrave; <var>nom_domaine</var> est un nom de domaine enti&egrave;rement
567         qualif&eacute; (ou un nom de domaine partiel) ; vous pouvez indiquer
568         plusieurs adresses ou noms de domaines, si vous le d&eacute;sirez.</p>
569
570         <p>Par exemple, si vous voulez rejeter les spams dont une
571         machine vous inonde, vous pouvez utiliser ceci :</p>
572
573         <example>
574           &lt;RequireAll&gt;
575           <indent>
576             Require all granted<br/>
577             Require not ip 10.252.46.165
578           </indent>
579           &lt;/RequireAll&gt;
580         </example>
581
582         <p>Ainsi, les visiteurs en provenance de cette adresse ne
583         pourront pas voir le contenu concern&eacute; par cette directive. Si,
584         par contre, vous connaissez le nom de la machine, vous pouvez
585         utiliser ceci :</p>
586
587         <example>
588            &lt;RequireAll&gt;
589           <indent>
590             Require all granted<br/>
591             Require not host <var>serveur.exemple.com</var>
592           </indent>
593           &lt;/RequireAll&gt;
594         </example>
595
596         <p>Et si vous voulez interdire l'acc&egrave;s &agrave; toutes les machines
597         d'un domaine, vous pouvez sp&eacute;cifier une partie seulement de
598         l'adresse ou du nom de domaine :</p>
599
600         <example>
601          &lt;RequireAll&gt;
602           <indent>
603              Require all granted<br/>
604             &lt;RequireNone&gt;
605             <indent>
606               Require ip 192.168.205<br />
607               Require host phishers.exemple.com autres-idiots.exemple<br />
608               Require host ke
609             </indent>
610             &lt;/RequireNone&gt;
611           </indent>
612           &lt;/RequireAll&gt;
613         </example>
614
615         <p>Dans l'exemple ci-dessus, on utilise la directive du
616         conteneur <directive module="mod_authz_core"
617         type="section">RequireNone</directive> afin de s'assurer
618         qu'aucune des directives <directive
619         module="mod_authz_core">Require</directive> qu'il contient ne
620         fasse correspondre ses param&egrave;tres avant d'accorder
621         l'autorisation.</p>
622
623     </section>
624
625     <section id="filesystem"><title>Compatibilit&eacute; ascendante du contr&ocirc;le
626     d'acc&egrave;s</title>
627         <p>L'adoption d'un m&eacute;canisme &agrave; base de fournisseurs pour
628         l'authentification, a pour effet colat&eacute;ral de rendre inutiles
629         les directives <directive
630         module="mod_access_compat">Order</directive>, <directive
631         module="mod_access_compat">Allow</directive>, <directive
632         module="mod_access_compat">Deny</directive> et <directive
633         module="mod_access_compat">Satisfy</directive>. Cependant, et &agrave;
634         des fins de compatibilit&eacute; ascendante vers les anciennes
635         configurations, ces directives ont &eacute;t&eacute; d&eacute;plac&eacute;es vers le module
636         <module>mod_access_compat</module>.</p>
637
638     </section>
639
640 </section>
641
642 <section id="moreinformation"><title>Pour aller plus loin . . .</title>
643     <p>Vous pouvez aussi lire la documentation de
644     <module>mod_auth_basic</module> et <module>mod_authz_host</module>
645     qui contient des informations suppl&eacute;mentaires &agrave; propos du
646     fonctionnement de tout ceci.
647     Certaines configurations d'authentification peuvent aussi &ecirc;tre
648     simplifi&eacute;es &agrave; l'aide de la directive <directive
649     module="mod_authn_core">&lt;AuthnProviderAlias&gt;</directive>.</p>
650
651     <p>Les diff&eacute;rents algorithmes de chiffrement support&eacute;s par Apache
652     pour authentifier les donn&eacute;es sont expliqu&eacute;s dans <a
653     href="../misc/password_encryptions.html">PasswordEncryptions</a>.</p>
654
655     <p>Enfin vous pouvez consulter la recette <a href="access.html">Contr&ocirc;le
656     d'acc&egrave;s</a>, qui d&eacute;crit un certain nombre de situations en relation
657     avec le sujet.</p>
658
659 </section>
660
661 </manualpage>
662