2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 824049 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <modulesynopsis metafile="mod_authnz_ldap.xml.meta">
27 <name>mod_authnz_ldap</name>
28 <description>Permet d'utiliser un annuaire LDAP pour l'authentification
29 HTTP de base.</description>
30 <status>Extension</status>
31 <sourcefile>mod_authnz_ldap.c</sourcefile>
32 <identifier>authnz_ldap_module</identifier>
33 <compatibility>Dosponible depuis les versions 2.1 et supérieures
34 d'Apache</compatibility>
37 <p>Ce module permet aux frontaux d'authentification comme
38 <module>mod_auth_basic</module> d'authentifier les utilisateurs via
41 <p><module>mod_authnz_ldap</module> supporte les fonctionnalités
45 <li>Support vérifié du <a
46 href="http://www.openldap.org/">OpenLDAP SDK</a> (versions 1.x et
47 2.x), du <a href="http://developer.novell.com/ndk/cldap.htm">
48 Novell LDAP SDK</a> et du SDK <a
49 href="http://www.iplanet.com/downloads/developer/">iPlanet
52 <li>Implémentation de politiques d'autorisation complexes en les
53 définissant via des filtres LDAP.</li>
55 <li>Mise en oeuvre d'une mise en cache des opérations LDAP
56 élaborée via <a href="mod_ldap.html">mod_ldap</a>.</li>
58 <li>Support de LDAP via SSL (nécessite le SDK Netscape) ou TLS
59 (nécessite le SDK OpenLDAP 2.x ou le SDK LDAP Novell).</li>
62 <p>Lorsqu'on utilise <module>mod_auth_basic</module>, ce module est
63 invoqué en affectant la valeur <code>ldap</code> à la directive
64 <directive module="mod_auth_basic">AuthBasicProvider</directive>.</p>
67 <seealso><module>mod_ldap</module></seealso>
68 <seealso><module>mod_auth_basic</module></seealso>
69 <seealso><module>mod_authz_user</module></seealso>
70 <seealso><module>mod_authz_groupfile</module></seealso>
72 <section id="contents"><title>Sommaire</title>
76 <a href="#operation">Mode opératoire</a>
79 <li><a href="#authenphase">La phase
80 d'authentification</a></li>
82 <li><a href="#authorphase">La phase d'autorisation</a></li>
87 <a href="#requiredirectives">Les directives requises</a>
90 <li><a href="#requser">Require ldap-user</a></li>
91 <li><a href="#reqgroup">Require ldap-group</a></li>
92 <li><a href="#reqdn">Require ldap-dn</a></li>
93 <li><a href="#reqattribute">Require ldap-attribute</a></li>
94 <li><a href="#reqfilter">Require ldap-filter</a></li>
98 <li><a href="#examples">Exemples</a></li>
99 <li><a href="#usingtls">Utilisation de TLS</a></li>
100 <li><a href="#usingssl">Utilisation de SSL</a></li>
101 <li><a href="#exposed">Mise à disposition des informations de
103 <li><a href="#activedirectory">Utilisation d'Active Directory</a></li>
105 <a href="#frontpage">Utilisation de Microsoft FrontPage avec
106 <module>mod_authnz_ldap</module></a>
109 <li><a href="#howitworks">Comment ça marche</a></li>
110 <li><a href="#fpcaveats">Mises en garde</a></li>
116 <section id="operation"><title>Mode opératoire</title>
118 <p>L'utilisateur se voit accorder l'accès selon un processus en deux
119 phases. La première phase est l'authentification, au cours de
120 laquelle le fournisseur d'authentification
121 <module>mod_authnz_ldap</module> vérifie que les informations de
122 connexion de l'utilisateur sont valides. Elle est aussi connue sous
123 le nom de phase de <em>recherche/connexion</em> (NdT : en anglais ou
124 dans le code source : <em>search/bind</em>). La deuxième
125 phase est l'autorisation, au cours de laquelle
126 <module>mod_authnz_ldap</module> détermine si l'utilisateur
127 authentifié a la permission d'accéder à la ressource considérée.
128 Elle est aussi connue sous le nom de phase de
129 <em>comparaison</em> (<em>compare</em>).</p>
131 <p><module>mod_authnz_ldap</module> comporte un fournisseur
132 d'authentification authn_ldap et un gestionnaire d'autorisation
133 authz_ldap. Le fournisseur d'authentification authn_ldap peut être
134 invoqué en affectant la valeur <code>ldap</code> à la directive
135 <directive module="mod_auth_basic">AuthBasicProvider</directive>. Le
136 gestionnaire d'autorisation authz_ldap enrichit la liste des types
137 d'autorisations de la directive <directive
138 module="mod_authz_core">Require</directive> en y ajoutant les
139 valeurs <code>ldap-user</code>, <code>ldap-dn</code> et
140 <code>ldap-group</code>.</p>
142 <section id="authenphase"><title>La phase d'authentification</title>
144 <p>Au cours de la phase d'authentification,
145 <module>mod_authnz_ldap</module> recherche une entrée de l'annuaire
146 LDAP qui correspond au nom d'utilisateur fourni par le client HTTP.
147 Si une correspondance unique est trouvée,
148 <module>mod_authnz_ldap</module> tente de se connecter au serveur
149 hébergeant l'annuaire LDAP en utilisant le DN de l'entrée et le mot
150 de passe fourni par le client HTTP. Comme ce processus effectue tout
151 d'abord une recherche, puis une connexion, il est aussi connu sous
152 le nom de phase de recherche/connexion. Voici le détail des étapes
153 constituant la phase de recherche/connexion :</p>
156 <li>Confection d'un filtre de recherche en combinant les attribut
157 et filtre définis par la directive <directive module="mod_authnz_ldap"
158 >AuthLDAPURL</directive> avec le nom d'utilisateur et le mot de
159 passe fournis par le client HTTP.</li>
161 <li>Recherche dans l'annuaire LDAP en utilisant le filtre
162 confectionné précédemment. Si le résultat de la recherche est
163 négatif ou comporte plusieurs entrées, refus ou restriction de
166 <li>Extraction du DN (distinguished name) de l'entrée issue du
167 résultat de la recherche, et tentative de connexion au serveur
168 LDAP en utilisant ce DN et le mot de passe fournis par le client
169 HTTP. Si la connexion échoue, refus ou restriction de
173 <p>Les directives utilisées durant la phase de recherche/connexion
174 sont les suivantes :</p>
177 <columnspec><column width=".3"/><column width=".7"/></columnspec>
180 module="mod_authnz_ldap">AuthLDAPURL</directive></td>
182 <td>Spécifie le serveur LDAP, le DN de base, l'attribut à
183 utiliser pour la recherche, ainsi que les filtres de recherche
184 supplémentaires.</td>
189 module="mod_authnz_ldap">AuthLDAPBindDN</directive></td>
191 <td>Un DN optionnel pour se connecter durant la phase de
197 module="mod_authnz_ldap">AuthLDAPBindPassword</directive></td>
199 <td>Un mot de passe optionnel pour se connecter durant la phase
205 <section id="authorphase"><title>La phase d'autorisation</title>
207 <p>Au cours de la phase d'autorisation,
208 <module>mod_authnz_ldap</module> tente de déterminer si
209 l'utilisateur est autorisé à accéder à la ressource considérée. Une
210 grande partie de cette vérification consiste pour
211 <module>mod_authnz_ldap</module> en des opérations de comparaison au
212 niveau du serveur LDAP. C'est pourquoi cette phase est aussi connue
213 sous le nom de phase de comparaison.
214 <module>mod_authnz_ldap</module> accepte les directives <directive
215 module="mod_authz_core">Require</directive> suivantes pour
216 déterminer si les informations de connexion permettent d'accorder
217 l'accès à l'utilisateur :</p>
220 <li>Avec la directive <a
221 href="#reqgroup"><code>Require ldap-user</code></a>,
222 l'autorisation d'accès est accordée si le nom d'utilisateur
223 spécifié par la directive correspond au nom d'utilisateur fourni
226 <li>Avec la directive <a href="#reqdn"><code>Require
227 ldap-dn</code></a>, l'autorisation d'accès est accordée si le DN
228 spécifié par la directive correspond au DN extrait du résultat de
229 la recherche dans l'annuaire LDAP.</li>
231 <li>Avec la directive <a
232 href="#reqgroup"><code>Require ldap-group</code></a>,
233 l'autorisation d'accès est accordée si le DN extrait du résultat de
234 la recherche dans l'annuaire LDAP (ou le nom d'utilisateur fourni
235 par le client) appartient au groupe LDAP spécifié par la
236 directive, ou éventuellement à un de ses sous-groupes.</li>
238 <li>Avec la directive <a href="#reqattribute">
239 <code>Require ldap-attribute</code></a>, l'autorisation d'accès
240 est accordée si la valeur de l'attribut extraite de la recherche
241 dans l'annuaire LDAP correspond à la valeur spécifiée par la
244 <li>Avec la directive <a href="#reqfilter">
245 <code>Require ldap-filter</code></a>, l'autorisation d'accès
246 est accordée si le filtre de recherche renvoie un objet
247 utilisateur unique qui corresponde au DN de l'utilisateur
248 authentifié.</li>
250 <li>dans tous les autres cas, refus ou restriction de
254 <p>Sous réserve du chargement de modules d'autorisation
255 supplémentaires, d'autres valeurs de la directive <directive
256 module="mod_authz_core">Require</directive> peuvent être
257 spécifiées.</p>
260 <li>L'accès est accordé à tous les utilisateurs authentifiés si
261 une directive <a href="#requser"><code>Require
262 valid-user</code></a> est présente (nécessite le module
263 <module>mod_authz_user</module>).</li>
265 <li>Avec la directive <a
266 href="#reqgroup"><code>Require group</code></a>, l'autorisation
267 d'accès est accordée si le module
268 <module>mod_authz_groupfile</module> a été chargé et si la
270 module="mod_authz_groupfile">AuthGroupFile</directive> a été
277 <p>Durant la phase de comparaison, <module>mod_authnz_ldap</module>
278 utilise les directives suivantes :</p>
281 <columnspec><column width=".4"/><column width=".6"/></columnspec>
283 <td><directive module="mod_authnz_ldap">AuthLDAPURL</directive>
286 <td>On utilise l'attribut spécifié dans l'URL pour les
287 opérations de comparaison initiées par la directive
288 <code>Require ldap-user</code>.</td>
293 module="mod_authnz_ldap">AuthLDAPCompareDNOnServer</directive></td>
295 <td>Détermine le comportement de la directive <code>Require
301 module="mod_authnz_ldap">AuthLDAPGroupAttribute</directive></td>
303 <td>Détermine l'attribut utilisé pour les opérations de
304 comparaison initiées par la directive <code>Require
305 ldap-group</code>.</td>
310 module="mod_authnz_ldap">AuthLDAPGroupAttributeIsDN</directive></td>
312 <td>Spécifie si l'on doit utiliser le DN ou le nom de
313 l'utilisateur lors des opérations de comparaison initiées par la
314 directive <code>Require ldap-group</code>.</td>
319 module="mod_authnz_ldap">AuthLDAPMaxSubGroupDepth</directive></td>
321 <td>Détermine la profondeur maximale de l'arborescence des
322 sous-groupes qui seront évalués au cours des opérations de
323 comparaisons initiées par la directive <code>Require
324 ldap-group</code>.</td>
329 module="mod_authnz_ldap">AuthLDAPSubGroupAttribute</directive></td>
331 <td>Détermine l'attribut à utiliser lors de l'extraction de
332 membres de sous-groupes du groupe courant au cours des
333 opérations de comparaison initiées par la directive
334 <code>Require ldap-group</code>.</td>
339 module="mod_authnz_ldap">AuthLDAPSubGroupClass</directive></td>
341 <td>Spécifie les valeurs de classe d'objet LDAP à utiliser pour
342 déterminer si les objets extraits de l'annuaire sont bien des
343 objets de type groupe (et non des objets de type utilisateur),
344 au cours du traitement des sous-groupes initié par la directive
345 <code>Require ldap-group</code>.</td>
351 <section id="requiredirectives"><title>Les directives requises</title>
353 <p>Les directives <directive
354 module="mod_authz_core">Require</directive> d'Apache sont utilisées
355 au cours de la phase d'autorisation afin de s'assurer que
356 l'utilisateur est autorisé à accéder à une ressource.
357 mod_authnz_ldap enrichit la liste des types d'autorisations avec les
358 valeurs <code>ldap-user</code>, <code>ldap-dn</code>,
359 <code>ldap-group</code>, <code>ldap-attribute</code> et
360 <code>ldap-filter</code>. D'autres types d'autorisations sont
361 disponibles, sous réserve du chargement de modules d'autorisation
362 supplémentaires.</p>
364 <section id="requser"><title>Require ldap-user</title>
366 <p>La directive <code>Require ldap-user</code> permet de spécifier
367 les noms des utilisateurs autorisés à accéder à la ressource.
368 Lorsque <module>mod_authnz_ldap</module> a extrait un DN unique de
369 l'annuaire LDAP, il effectue une opération de comparaison LDAP en
370 utilisant le nom d'utilisateur spécifié par la directive
371 <code>Require ldap-user</code>, pour vérifier si ce nom
372 d'utilisateur correspond à l'entrée LDAP extraite. On peut accorder
373 l'accès à plusieurs utilisateurs en plaçant plusieurs nom
374 d'utilisateurs sur la même ligne séparés par des espaces. Si un nom
375 d'utilisateur contient des espaces, il doit être entouré de
376 guillemets. On peut aussi accorder l'accès à plusieurs utilisateurs
377 en utilisant une directive <code>Require ldap-user</code> par
378 utilisateur. Par exemple, avec la directive <directive
379 module="mod_authnz_ldap">AuthLDAPURL</directive> définie à
380 <code>ldap://ldap/o=Airius?cn</code> (spécifiant donc que l'attribut
381 <code>cn</code> sera utilisé pour les recherches), on pourra
382 utiliser les directives Require suivantes pour restreindre l'accès
385 Require ldap-user "Barbara Jenson"<br />
386 Require ldap-user "Fred User"<br />
387 Require ldap-user "Joe Manager"<br />
390 <p>De par la manière dont <module>mod_authnz_ldap</module> traite
391 cette directive, Barbara Jenson peut s'authentifier comme
392 <em>Barbara Jenson</em>, <em>Babs Jenson</em> ou tout autre
393 <code>cn</code> sous lequel elle est enregistrée dans l'annuaire
394 LDAP. Une seule ligne <code>Require ldap-user</code> suffit pour
395 toutes les valeurs de l'attribut dans l'entrée LDAP de
398 <p>Si l'attribut <code>uid</code> avait été spécifié à la place de
399 l'attribut <code>cn</code> dans l'URL précédente, les trois lignes
400 ci-dessus auraient pû être condensées en une seule ligne :</p>
401 <example>Require ldap-user bjenson fuser jmanager</example>
404 <section id="reqgroup"><title>Require ldap-group</title>
406 <p>Cette directive permet de spécifier un groupe LDAP dont les
407 membres auront l'autorisation d'accès. Elle prend comme argument le
408 DN du groupe LDAP. Note : n'entourez pas le nom du groupe avec des
409 guillemets. Par exemple, supposons que l'entrée suivante existe dans
410 l'annuaire LDAP :</p>
412 dn: cn=Administrators, o=Airius<br />
413 objectClass: groupOfUniqueNames<br />
414 uniqueMember: cn=Barbara Jenson, o=Airius<br />
415 uniqueMember: cn=Fred User, o=Airius<br />
418 <p>La directive suivante autoriserait alors l'accès à Fred et
420 <example>Require ldap-group cn=Administrators, o=Airius</example>
422 <p>Les membres peuvent aussi se trouver dans les sous-groupes du
423 groupe LDAP spécifié si la directive <directive
424 module="mod_authnz_ldap">AuthLDAPMaxSubGroupDepth</directive> a été
425 définie à une valeur supérieure à 0. Par exemple, supposons que les
426 entrées suivantes existent dans l'annuaire LDAP :</p>
428 dn: cn=Employees, o=Airius<br />
429 objectClass: groupOfUniqueNames<br />
430 uniqueMember: cn=Managers, o=Airius<br />
431 uniqueMember: cn=Administrators, o=Airius<br />
432 uniqueMember: cn=Users, o=Airius<br />
434 dn: cn=Managers, o=Airius<br />
435 objectClass: groupOfUniqueNames<br />
436 uniqueMember: cn=Bob Ellis, o=Airius<br />
437 uniqueMember: cn=Tom Jackson, o=Airius<br />
439 dn: cn=Administrators, o=Airius<br />
440 objectClass: groupOfUniqueNames<br />
441 uniqueMember: cn=Barbara Jenson, o=Airius<br />
442 uniqueMember: cn=Fred User, o=Airius<br />
444 dn: cn=Users, o=Airius<br />
445 objectClass: groupOfUniqueNames<br />
446 uniqueMember: cn=Allan Jefferson, o=Airius<br />
447 uniqueMember: cn=Paul Tilley, o=Airius<br />
448 uniqueMember: cn=Temporary Employees, o=Airius<br />
450 dn: cn=Temporary Employees, o=Airius<br />
451 objectClass: groupOfUniqueNames<br />
452 uniqueMember: cn=Jim Swenson, o=Airius<br />
453 uniqueMember: cn=Elliot Rhodes, o=Airius<br />
456 <p>Les directives suivantes autoriseraient alors l'accès à Bob
457 Ellis, Tom Jackson, Barbara Jensen, Fred User, Allan Jefferson, et
458 Paul Tilley, mais l'interdiraient à Jim Swenson, ou Elliot Rhodes
459 (car ils sont situés dans un sous-groupe de niveau de profondeur 2)
462 Require ldap-group cn=Employees, o-Airius<br />
463 AuthLDAPSubGroupDepth 1<br />
466 <p>Le comportement de cette directive est modifié par les directives
468 module="mod_authnz_ldap">AuthLDAPGroupAttribute</directive>,
470 module="mod_authnz_ldap">AuthLDAPGroupAttributeIsDN</directive>,
472 module="mod_authnz_ldap">AuthLDAPMaxSubGroupDepth</directive>,
474 module="mod_authnz_ldap">AuthLDAPSubGroupAttribute</directive>, et
476 module="mod_authnz_ldap">AuthLDAPSubGroupClass</directive>.</p>
479 <section id="reqdn"><title>Require ldap-dn</title>
481 <p>La directive <code>Require ldap-dn</code> permet à
482 l'administrateur d'accorder l'utorisation d'accès en fonction du DN.
483 Elle permet de spécifier un DN pour lequel l'accès est autorisé. Si
485 l'annuaire correspond au DN spécifié par la directive <code>Require
486 ldap-dn</code>, l'autorisation d'accès est accordée. Note :
487 n'entourez pas Le DN de guillemets.</p>
489 <p>La directive suivante accorderait l'accès à un DN spécifique
491 <example>Require ldap-dn cn=Barbara Jenson, o=Airius</example>
493 <p>Le comportement ce cette directive est modifié par la directive
495 module="mod_authnz_ldap">AuthLDAPCompareDNOnServer</directive>.</p>
498 <section id="reqattribute"><title>Require ldap-attribute</title>
500 <p>La directive <code>Require ldap-attribute</code> permet à
501 l'administrateur d'accorder l'autorisation d'accès en fonction des
502 attributs de l'utilisateur authentifié dans l'annuaire LDAP. Si la
503 valeur de l'attribut dans l'annuaire correspond à la valeur
504 spécifiée par la directive, l'autorisation d'accès est accordée.</p>
506 <p>La directive suivante accorderait l'autorisation d'accès à tout
507 utilisateur dont l'attribut employeeType a pour valeur "actif" :</p>
509 <example>Require ldap-attribute employeeType=actif</example>
511 <p>Plusieurs paires attribut/valeur peuvent être spécifiées par une
512 même directive en les séparant par des espaces, ou en définissant
513 plusieurs directives <code>Require ldap-attribute</code>. La logique
514 sous-jacente à une liste de paires attribut/valeur est une opération
515 OU. L'autorisation d'accès sera accordée si au moins une paire
516 attribut/valeur de la liste spécifiée correspond à la paire
517 attribut/valeur de l'utilisateur authentifié. Si elle contient des
518 espaces, la valeur, et seulement la valeur, doit être entourée de
521 <p>La directive suivante accorderait l'autorisation d'accès à tout
522 utilisateur dont l'attribut city aurait pour valeur "San Jose", ou
523 donc l'attribut status aurait pour valeur "actif" :</p>
525 <example>Require ldap-attribute city="San Jose" status=actif</example>
529 <section id="reqfilter"><title>Require ldap-filter</title>
531 <p>La directive <code>Require ldap-filter</code> permet à
532 l'administrateur d'accorder l'autorisation d'accès en fonction d'un
533 filtre de recherche LDAP complexe. L'autorisation d'accès est
534 accordée si le DN renvoyé par le filtre de recherche correspond au
535 DN de l'utilisateur authentifié.</p>
537 <p>La directive suivante accorderait l'autorisation d'accès à tout
538 utilisateur possédant un téléphone cellulaire et faisant partie du
539 département "marketing" :</p>
541 <example>Require ldap-filter &(cell=*)(department=marketing)</example>
543 <p>Alors que la directive <code>Require ldap-attribute</code> se
544 contente d'une simple comparaison d'attributs, la directive
545 <code>Require ldap-filter</code> effectue une opération de recherche
546 dans l'annuaire LDAP en utilisant le filtre de recherche spécifié.
547 Si une simple comparaison d'attributs suffit, l'opération de
548 comparaison effectuée par <code>ldap-attribute</code> sera plus
549 rapide que l'opération de recherche effectuée par
550 <code>ldap-filter</code>, en particulier dans le cas d'un annuaire
551 LDAP de grande taille.</p>
557 <section id="examples"><title>Exemples</title>
561 Accorde l'autorisation d'accès à tout utilisateur présent dans
562 l'annuaire LDAP, en utilisant son UID pour effectuer la
565 AuthLDAPURL "ldap://ldap1.airius.com:389/ou=People, o=Airius?uid?sub?(objectClass=*)"<br />
571 L'exemple suivant est similaire au précédent, mais les champs
572 dont les valeurs par défaut conviennent sont omis. Notez aussi
573 la présence d'un annuaire LDAP redondant :
574 <example>AuthLDAPURL "ldap://ldap1.airius.com ldap2.airius.com/ou=People, o=Airius"<br />
580 Encore un exemple similaire aux précédents, mais cette fois,
581 c'est l'attribut cn qui est utilisé pour la recherche à la place
582 de l'UID. Notez que ceci peut poser problème si plusieurs
583 utilisateurs de l'annuaire partagent le même <code>cn</code>,
584 car une recherche sur le <code>cn</code> <strong>doit</strong>
585 retourner une entrée et une seule. C'est pourquoi cette
586 approche n'est pas recommandée : il est préférable de choisir un
587 attribut de votre annuaire dont l'unicité soit garantie, comme
590 AuthLDAPURL "ldap://ldap.airius.com/ou=People, o=Airius?cn"<br />
596 Accorde l'autorisation d'accès à tout utilisateur appartenant au
597 groupe Administrateurs. Les utilisateurs doivent s'authentifier
598 en utilisant leur UID :
600 AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid<br />
601 Require ldap-group cn=Administrators, o=Airius
606 Pour l'exemple suivant, on suppose que tout utilisateur de chez
607 Airius qui dispose d'un bippeur alphanumérique possèdera un
608 attribut LDAP <code>qpagePagerID</code>. Seuls ces utilisateurs
609 (authentifiés via leur UID) se verront accorder l'autorisation
612 AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(qpagePagerID=*)<br />
618 <p>L'exemple suivant illustre la puissance des filtres pour
619 effectuer des requêtes complexes. Sans les filtres, il aurait
620 été nécessaire de créer un nouveau groupe LDAP et de s'assurer
621 de la synchronisation des membres du groupe avec les
622 utilisateurs possédant un bippeur. Tout devient limpide avec les
623 filtres. Nous avons pour but d'accorder l'autorisation d'accès à
624 tout utilisateur disposant d'un bippeur ainsi qu'à Joe Manager
625 qui ne possède pas de bippeur, mais doit tout de même pouvoir
626 accéder à la ressource :</p>
628 AuthLDAPURL ldap://ldap.airius.com/o=Airius?uid??(|(qpagePagerID=*)(uid=jmanager))<br />
632 <p>Ce dernier exemple peut sembler confus au premier abord ; en
633 fait, il permet de mieux comprendre à quoi doit ressembler le
634 filtre en fonction de l'utilisateur qui se connecte. Si Fred
635 User se connecte en tant que <code>fuser</code>, le filtre devra
636 ressembler à :</p>
638 <example>(&(|(qpagePagerID=*)(uid=jmanager))(uid=fuser))</example>
640 <p>Un recherche avec le filtre ci-dessus ne retournera un
641 résultat positif que si <em>fuser</em> dispose d'un bippeur. Si
642 Joe Manager se connecte en tant que <em>jmanager</em>, le filtre
643 devra ressembler à :</p>
645 <example>(&(|(qpagePagerID=*)(uid=jmanager))(uid=jmanager))</example>
647 <p>Un recherche avec le filtre ci-dessus retournera un
648 résultat positif que <em>jmanager</em> dispose d'un
654 <section id="usingtls"><title>Utilisation de TLS</title>
656 <p>Pour l'utilisation de TLS, voir les directives du module
657 <module>mod_ldap</module> <directive
658 module="mod_ldap">LDAPTrustedClientCert</directive>, <directive
659 module="mod_ldap">LDAPTrustedGlobalCert</directive> et <directive
660 module="mod_ldap">LDAPTrustedMode</directive>.</p>
662 <p>Un second paramètre optionnel peut être ajouté à la directive
663 <directive module="mod_authnz_ldap">AuthLDAPURL</directive> pour
664 remplacer le type de connexion par défaut défini par la directive
665 <directive module="mod_ldap">LDAPTrustedMode</directive>. Ceci
666 permettra de promouvoir la connexion établie via une URL du type
667 <em>ldap://</em> au statut de connection sécurisée sur le même
671 <section id="usingssl"><title>Utilisation de SSL</title>
673 <p>Pour l'utilisation de SSL, voir les directives du module
674 <module>mod_ldap</module> <directive
675 module="mod_ldap">LDAPTrustedClientCert</directive>, <directive
676 module="mod_ldap">LDAPTrustedGlobalCert</directive> et <directive
677 module="mod_ldap">LDAPTrustedMode</directive>.</p>
679 <p>Pour spécifier un serveur LDAP sécurisé, utilisez
680 <em>ldaps://</em> au lieu de
681 <em>ldap://</em> dans la directive <directive
682 module="mod_authnz_ldap">AuthLDAPURL</directive>.</p>
685 <section id="exposed"><title>Mise à disposition des informations de
688 <p>Au cours du processus d'authentification, les attributs LDAP
689 spécifiés par la directive <directive
690 module="mod_authnz_ldap">AuthLDAPUrl</directive> sont enregistrés
691 dans des variables d'environnement préfixées par la chaîne
694 <p>Si les champs attribut contiennent le nom, le CN et le numéro de
695 téléphone d'un utilisateur, un programme CGI pourra accéder à ces
696 informations sans devoir effectuer une autre requête LDAP pour
697 les extraire de l'annuaire.</p>
699 <p>Ceci a pour effet de simplifier considérablement le code et la
700 configuration nécessaire de certaines applications web.</p>
704 <section id="activedirectory"><title>Utilisation d'Active
707 <p>Active Directory peut supporter plusieurs domaines à la fois.
708 Pour faire la distinction entre les utilisateurs de plusieurs
709 domaines, on peut ajouter à l'entrée de l'utilisateur dans
710 l'annuaire un identifiant appelé Nom
711 Principal d'Utilisateur (User Principle Name ou UPN). Cet UPN se
712 compose en général du nom de compte de l'utilisateur, suivi du nom
713 du domaine considéré, par exemple <em>untel@nz.exemple.com</em>.</p>
715 <p>Vous voudrez probablement configurer le module
716 <module>mod_authnz_ldap</module> afin de pouvoir authentifier les
717 utilisateurs de n'importe quel domaine de la forêt Active Directory.
718 Ainsi, <em>untel@nz.exemple.com</em> et
719 <em>untel@au.exemple.com</em> pourront être authentifiés en une
720 seule fois par la même requête.</p>
722 <p>Pour y parvenir, on utilise le concept de Catalogue Global
723 d'Active Directory. Ce Catalogue Global est une copie en lecture
724 seule des attributs sélectionnés de tous les serveurs de la forêt
725 Active Directory. Une requête vers le
726 Catalogue Global permet donc d'atteindre tous les domaines en une
727 seule fois, sans avoir à se connecter aux différents serveurs, via
728 des liaisons dont certaines peuvent être lentes.</p>
730 <p>Lorsqu'il est activé, la Catalogue Global est un serveur
731 d'annuaire indépendant accessible sur le port 3268 (3269 pour SSL).
732 Pour rechercher un utilisateur, effectuez une recherche sur
733 l'attribut <em>userPrincipalName</em>, avec une base de recherche
734 vide, comme suit :</p>
737 AuthLDAPBindDN apache@exemple.com<br />
738 AuthLDAPBindPassword password<br />
739 AuthLDAPURL ldap://10.0.0.1:3268/?userPrincipalName?sub
742 <p>Les utilisateurs devront s'authentifier en entrant leur UPN, de
743 la forme<em>untel@nz.exemple.com</em>.</p>
747 <section id="frontpage"><title>Utilisation de Microsoft
748 FrontPage avec mod_authnz_ldap</title>
750 <p>Normalement, FrontPage utilise des fichiers utilisateur/groupe
751 spécifiques à FrontPage-web (c'est à dire les modules
752 <module>mod_authn_file</module> et
753 <module>mod_authz_groupfile</module>) pour effectuer toute
754 l'authentification. Malheureusement, il ne suffit pas de modifier
755 l'authentification LDAP en ajoutant les directives appropriées, car
756 ceci corromprait les formulaires de <em>Permissions</em> dans le
757 client FrontPage, qui sont censés modifier les fichiers
758 d'autorisation standards au format texte.</p>
760 <p>Lorsqu'un site web FrontPage a été créé, lui adjoindre
761 l'authentification LDAP consiste à ajouter les directives suivantes
762 à <em>chaque</em> fichier <code>.htaccess</code> qui sera créé dans
766 AuthGroupFile <em>mon-fichier-de-groupes</em>
767 Require group <em>mon-fichier-de-groupes</em>
770 <section id="howitworks"><title>Comment ça marche</title>
772 <p>FrontPage restreint l'accès à un site web en ajoutant la
773 directive <code>Require valid-user</code> aux fichiers
774 <code>.htaccess</code>. La directive <code>Require valid-user</code>
775 permettra l'accès à tout utilisateur valide <em>du point de vue
776 LDAP</em>. Cela signifie que tout utilisateur possédant une entrée
777 dans l'annuaire LDAP sera considéré comme valide, alors que
778 FrontPage ne considère comme valides que les utilisateurs
779 enregistrés dans le fichier des utilisateurs local. En remplaçant
780 l'autorisation par groupe LDAP par une autorisation par fichier de
781 groupe, Apache sera en mesure de consulter le fichier des
782 utilisateurs local (géré par FrontPage) - au lieu de l'annuaire LDAP
783 - lors du processus d'autorisation des utilisateurs.</p>
785 <p>Une fois les directives ajoutées selon ce qui précède, les
786 utilisateurs FrontPage pourront effectuer toutes les opérations de
787 gestion à partir du client FrontPage.</p>
790 <section id="fpcaveats"><title>Avertissements</title>
793 <li>Lors du choix de l'URL LDAP, l'attribut à utiliser pour
794 l'authentification doit aussi être valide pour le fichier des
795 utilisateurs de <module>mod_authn_file</module>. A cette fin,
796 l'UID est idéal.</li>
798 <li>Lorsqu'ils ajoutent des utilisateurs via FrontPage, les
799 administrateurs de FrontPage doivent choisir des noms
800 d'utilisateurs qui existent déjà dans l'annuaire LDAP (pour des
801 raisons évidentes). De même, le mot de passe que l'administrateur
802 entre dans le formulaire est ignoré, car pour l'authentification,
803 Apache utilise le mot de passe de l'annuaire LDAP, et non le mot
804 de passe enregistré dans le fichier des utilisateurs, ce qui peut
805 semer la confusion parmi les administrateurs web.</li>
807 <!-- XXX is that true? was mod_auth before the aaa change -->
808 <li>Pour supporter FrontPage, Apache doit être compilé avec
809 <module>mod_auth_basic</module>, <module>mod_authn_file</module>
810 et <module>mod_authz_groupfile</module>. Ceci est dû au fait
811 qu'Apache doit utiliser le fichier de groupes de
812 <module>mod_authz_groupfile</module> pour déterminer le niveau
813 d'accès d'un utilisateur au site web FrontPage.</li>
815 <li>Les directives doivent être placées dans les fichiers
816 <code>.htaccess</code>. Elles ne fonctionneront pas si vous les
817 placez dans une section <directive module="core"
818 type="section">Location</directive> ou <directive module="core"
819 type="section">Directory</directive>. Ceci est dû au fait que pour savoir
820 où se trouve la liste des utilisateurs valides,
821 <module>mod_authnz_ldap</module> doit être en mesure d'atteindre
822 la directive <directive
823 module="mod_authn_file">AuthGroupFile</directive> qui se trouve
824 dans les fichiers <code>.htaccess</code> de FrontPage. Si les directives
825 de <module>mod_authnz_ldap</module> ne sont pas situées dans le
826 même fichier <code>.htaccess</code> que les directives FrontPage,
827 la configuration ne fonctionnera pas, car
828 <module>mod_authnz_ldap</module> ne sera jamais en mesure de
829 traiter le fichier <code>.htaccess</code>, et par conséquent ne
830 pourra jamais trouver le fichier des utilisateurs géré par
837 <name>AuthLDAPBindDN</name>
838 <description>Un DN optionnel pour se connecter au serveur
840 <syntax>AuthLDAPBindDN <em>dn</em></syntax>
841 <contextlist><context>directory</context><context>.htaccess</context>
843 <override>AuthConfig</override>
846 <p>Cette directive permet de définir un DN optionnel pour se
847 connecter au serveur afin d'y rechercher des entrées. Si aucun DN
848 n'est spécifié, <module>mod_authnz_ldap</module> tentera une
849 connexion anonyme.</p>
854 <name>AuthLDAPBindPassword</name>
855 <description>Mot de passe à utiliser en conjonction avec le DN de
856 connexion</description>
857 <syntax>AuthLDAPBindPassword <em>mot-de-passe</em></syntax>
858 <contextlist><context>directory</context><context>.htaccess</context>
860 <override>AuthConfig</override>
863 <p>Cette directive permet de spécifier un mot de passe à utiliser en
864 conjonction avec le DN de connexion. Notez que ce mot de passe
865 constitue en général une donnée sensible, et doit donc être protégé
866 de manière appropriée. Vous ne devez utiliser les directives
868 module="mod_authnz_ldap">AuthLDAPBindDN</directive> et <directive
869 module="mod_authnz_ldap">AuthLDAPBindPassword</directive> que si
870 vous en avez vraiment besoin pour effectuer une recherche dans
876 <name>AuthLDAPCharsetConfig</name>
877 <description>Chemin du fichier de configuration de la correspondance
878 langage/jeu de caractères</description>
879 <syntax>AuthLDAPCharsetConfig <em>chemin-fichier</em></syntax>
880 <contextlist><context>server config</context>
884 <p>La directive <directive>AuthLDAPCharsetConfig</directive> permet
885 de définir le chemin du fichier de configuration de la
886 correspondance langage/jeu de caractères. <var>chemin-fichier</var>
887 est un chemin relatif au répertoire défini par la directive
889 module="core">ServerRoot</directive>. Ce fichier contient une liste
890 de correspondances extension de langage/jeu de caractères. La
891 plupart des administrateurs utilisent le fichier
892 <code>charset.conv</code> fourni qui associe les extensions de
893 langage courantes à leurs jeux de caractères.</p>
895 <p>Le fichier contient des lignes au format suivant :</p>
898 <var>extension de langage</var> <var>jeu de caractères</var>
899 [<var>Nom du langage</var>] ...
902 <p>L'extension est insensible à la casse. Les lignes vides et les
903 lignes commençant par un dièse (<code>#</code>) sont ignorées.</p>
908 <name>AuthLDAPCompareDNOnServer</name>
909 <description>Utilise le serveur LDAP pour comparer les DNs</description>
910 <syntax>AuthLDAPCompareDNOnServer on|off</syntax>
911 <default>AuthLDAPCompareDNOnServer on</default>
912 <contextlist><context>directory</context><context>.htaccess</context>
914 <override>AuthConfig</override>
917 <p>Lorsque cette directive est définie à on,
918 <module>mod_authnz_ldap</module> utilise le serveur LDAP pour
919 comparer les DNs. Il s'agit de la seule méthode infaillible pour
920 comparer les DNs. <module>mod_authnz_ldap</module> va rechercher
921 dans l'annuaire le DN spécifié par la directive <a
922 href="#reqdn"><code>Require dn</code></a>, puis extraire ce DN et le
923 comparer avec le DN extrait de l'entrée de l'utilisateur. Si cette
924 directive est à off, <module>mod_authnz_ldap</module> effectue une
925 simple comparaison de chaînes. Cette dernière approche peut produire
926 des faux négatifs, mais elle est beaucoup plus rapide. Notez
927 cependant que le cache de <module>mod_ldap</module> peut accélérer
928 la comparaison de DNs dans la plupart des situations.</p>
933 <name>AuthLDAPDereferenceAliases</name>
934 <description>À quel moment le module va déréférencer les
936 <syntax>AuthLDAPDereferenceAliases never|searching|finding|always</syntax>
937 <default>AuthLDAPDereferenceAliases always</default>
938 <contextlist><context>directory</context><context>.htaccess</context>
940 <override>AuthConfig</override>
943 <p>Cette directive permet de spécifier à quel moment
944 <module>mod_authnz_ldap</module> va déréférencer les alias au cours
945 des opérations liées à LDAP. La valeur par défaut est
946 <code>always</code>.</p>
951 <name>AuthLDAPGroupAttribute</name>
952 <description>L'attribut LDAP utilisé pour vérifier l'appartenance d'un
953 utilisateur à un groupe.</description>
954 <syntax>AuthLDAPGroupAttribute <em>attribut</em></syntax>
955 <contextlist><context>directory</context><context>.htaccess</context>
957 <override>AuthConfig</override>
960 <p>Cette directive permet de spécifier quel attribut LDAP est
961 utilisé pour vérifier l'appartenance d'un utilisateur à un
962 groupe. On peut spécifier plusieurs attributs en répétant cette
963 directive plusieurs fois. Si la directive n'est pas définie,
964 <module>mod_authnz_ldap</module> utilise les attributs
965 <code>member</code> et <code>uniquemember</code>.</p>
970 <name>AuthLDAPGroupAttributeIsDN</name>
971 <description>Utilise le DN de l'utilisateur pour vérifier son
972 appartenance à un groupe</description>
973 <syntax>AuthLDAPGroupAttributeIsDN on|off</syntax>
974 <default>AuthLDAPGroupAttributeIsDN on</default>
975 <contextlist><context>directory</context><context>.htaccess</context>
977 <override>AuthConfig</override>
980 <p>Lorsqu'elle est définie à <code>on</code>, cette directive
981 indique que c'est le DN de l'utilisateur qui doit être utilisé pour
982 vérifier son appartenance à un groupe. Dans le cas contraire, c'est
983 le nom de l'utilisateur qui sera utilisé. Par exemple, supposons que
984 le client envoie le nom d'utilisateur <code>bjenson</code>, qui
985 correspond au DN LDAP <code>cn=Babs Jenson,o=Airius</code>. Si la
986 directive est à <code>on</code>, <module>mod_authnz_ldap</module> va
987 vérifier si <code>cn=Babs Jenson, o=Airius</code> est un membre du
988 groupe. Dans le cas contraire, <module>mod_authnz_ldap</module>
989 vérifiera si <code>bjenson</code> est un membre du groupe.</p>
994 <name>AuthLDAPMaxSubGroupDepth</name>
995 <description>Spécifie la profondeur d'imbrication des sous-groupes
996 maximale prise en compte avant l'abandon de la recherche de
997 l'utilisateur.</description>
998 <syntax>AuthLDAPMaxSubGroupDepth <var>Nombre</var></syntax>
999 <default>AuthLDAPMaxSubGroupDepth 10</default>
1000 <contextlist><context>directory</context><context>.htaccess</context>
1002 <override>AuthConfig</override>
1005 <p>Lorsque cette directive est définie à une valeur <code>X</code>
1006 non nulle, en combinaison avec l'utilisation de la directive
1007 <code>Require ldap-group DN-groupe</code>, les données de connexion
1008 fournies seront utilisées pour vérifier l'appartenance de
1009 l'utilisateur à l'objet de l'annuaire <code>DN-groupe</code> ou à
1010 tout sous-groupe du groupe courant en tenant compte de la profondeur
1011 d'imbrication maximale <code>X</code> spécifiée par la directive.</p>
1012 <p>Se référer à la section <a href="#reqgroup"><code>Require
1013 ldap-group</code></a> pour un exemple plus détaillé.</p>
1015 </directivesynopsis>
1018 <name>AuthLDAPRemoteUserAttribute</name>
1019 <description>Spécifie l'attribut dont la valeur renvoyée au cours de la
1020 requête de l'utilisateur sera utilisée pour définir la variable
1021 d'environnement REMOTE_USER</description>
1022 <syntax>AuthLDAPRemoteUserAttribute uid</syntax>
1023 <default>none</default>
1024 <contextlist><context>directory</context><context>.htaccess</context>
1026 <override>AuthConfig</override>
1029 <p>Lorsque cette directive est définie, la variable d'environnement
1030 <code>REMOTE_USER</code> sera définie à la valeur de l'attribut
1031 spécifié. Assurez-vous que cet attribut soit bien inclus dans la
1032 liste d'attributs spécifiés dans la définition de AuthLDAPUrl ; dans
1033 le cas contraire, cette directive n'aurait aucun effet. Si elle est
1034 présente, cette directive l'emporte sur AuthLDAPRemoteUserIsDN. Elle
1035 peut s'avérer utile par exemple, si vous souhaitez que les
1036 utilisateurs se connectent à un site web en utilisant leur adresse
1037 email, alors qu'une application sous-jacente nécessite un nom
1038 d'utilisateur comme identifiant.</p>
1040 </directivesynopsis>
1043 <name>AuthLDAPRemoteUserIsDN</name>
1044 <description>Utilise le DN de l'utilisateur pour définir la variable
1045 d'environnement REMOTE_USER</description>
1046 <syntax>AuthLDAPRemoteUserIsDN on|off</syntax>
1047 <default>AuthLDAPRemoteUserIsDN off</default>
1048 <contextlist><context>directory</context><context>.htaccess</context>
1050 <override>AuthConfig</override>
1053 <p>Lorsque cette directive est à on, la variable d'environnement
1054 <code>REMOTE_USER</code> sera définie avec la valeur du DN complet
1055 de l'utilisateur authentifié, et non plus avec simplement le nom
1056 d'utilisateur fourni par le client. Elle est définie à off par
1059 </directivesynopsis>
1062 <name>AuthLDAPSubGroupAttribute</name>
1063 <description>Spécifie les noms d'attribut, un par directive, utilisés
1064 pour différencier les membres du groupe courant qui sont eux-mêmes des
1065 groupes.</description>
1066 <syntax>AuthLDAPSubGroupAttribute <em>attribut</em></syntax>
1067 <contextlist><context>directory</context><context>.htaccess</context>
1069 <override>AuthConfig</override>
1072 <p>Un objet groupe LDAP peut contenir des membres qui sont des
1073 utilisateurs et des membres qui sont eux-mêmes des groupes (appelés
1074 sous-groupes ou groupes imbriqués). La directive
1075 <code>AuthLDAPSubGroupAttribute</code> spécifie l'attribut utilisé
1076 pour identifier les groupes, alors que la directive
1077 <code>AuthLDAPGroupAttribute</code> spécifie l'attribut utilisé
1078 pour identifier les utilisateurs. On peut spécifier plusieurs
1079 attributs en répétant la directive plusieurs fois. Si elle n'est pas
1080 définie, <module>mod_authnz_ldap</module> utilise les attributs
1081 <code>member</code> et <code>uniqueMember</code>.</p>
1083 </directivesynopsis>
1086 <name>AuthLDAPSubGroupClass</name>
1087 <description>Spécifie quelles valeurs d'objectClass LDAP identifient les
1088 objets de l'annuaire qui sont des groupes au cours du traitement des
1089 sous-groupes.</description>
1090 <syntax>AuthLDAPSubGroupClass <em>ObjectClass-LDAP</em></syntax>
1091 <contextlist><context>directory</context><context>.htaccess</context>
1093 <override>AuthConfig</override>
1096 <p>Un objet groupe LDAP peut contenir des membres qui sont des
1097 utilisateurs et des membres qui sont eux-mêmes des groupes (appelés
1098 sous-groupes ou groupes imbriqués). La directive
1099 <code>AuthLDAPSubGroupAttribute</code> permet d'identifier les
1100 membres qui sont des sous-groupes du groupe courant (à l'opposé des
1101 membres utilisateurs). La directive
1102 <code>AuthLDAPSubGroupClass</code> permet de spécifier les valeurs
1103 d'objectClass LDAP utilisées pour vérifier que certains membres sont
1104 en fait des objets groupe. Les sous-groupes ainsi identifiés peuvent
1105 alors faire l'objet d'une recherche d'autres membres utilisateurs ou
1106 sous-groupes. On peut spécifier plusieurs attributs en répétant
1107 cette directive plusieurs fois. Si cette directive n'est pas
1108 définie, <module>mod_authnz_ldap</module> utilise les attributs
1109 <code>groupOfNames</code> et <code>groupOfUniqueNames</code>.</p>
1111 </directivesynopsis>
1114 <name>AuthLDAPUrl</name>
1115 <description>L'URL permettant de spécifier les paramètres de la
1116 recherche LDAP</description>
1117 <syntax>AuthLDAPUrl <em>url [NONE|SSL|TLS|STARTTLS]</em></syntax>
1118 <contextlist><context>directory</context><context>.htaccess</context>
1120 <override>AuthConfig</override>
1123 <p>Une URL conforme à la RFC 2255 qui permet de spécifier les
1124 paramètres à utiliser pour la recherche dans l'annuaire LDAP. La
1125 syntaxe de l'URL est :</p>
1126 <example>ldap://hôte:port/DN-de-base?attribut?portée?filtre</example>
1127 <p>Si vous souhaitez mettre à la disposition d'Apache plusieurs URLs
1128 LDAP, la syntaxe sera :</p>
1129 <example>AuthLDAPUrl "ldap://ldap1.exemple.com
1130 ldap2.exemple.com/dc=..."</example>
1131 <p><em><strong>Mise en garde : </strong>Si vous spécifiez plusieurs
1132 serveurs, vous devez en entourer la liste avec des guillemets ; dans le
1133 cas contraire, vous générerez une erreur : "AuthLDAPURL takes one
1134 argument, URL to define LDAP connection..".</em> Vous pouvez bien
1135 entendu ajouter des paramètres de recherche à chacun des serveurs
1136 spécifiés.</p>
1141 <dd>Pour ldap non sécurisé, utilisez la chaîne
1142 <code>ldap</code>. Pour ldap sécurisé, utilisez à la place la
1143 chaîne <code>ldaps</code>. LDAP sécurisé n'est disponible que si
1144 Apache a été lié avec une bibliothèque LDAP supportant SSL.</dd>
1146 <dt>hôte:port</dt>
1149 <p>Il s'agit du nom/port du serveur ldap
1150 (dont la valeur par défaut est
1151 <code>localhost:389</code> pour <code>ldap</code>, et
1152 <code>localhost:636</code> pour <code>ldaps</code>). Pour
1153 spécifier plusieurs serveurs LDAP redondants, indiquez
1154 simplement leur liste en les séparant par des espaces.
1155 <module>mod_authnz_ldap</module> tentera alors de se connecter
1156 à chacun des serveurs jusqu'à ce qu'il parvienne à se
1157 connecter avec succès. Notez qu'en cas de multiples serveurs
1158 LDAP, l'ensemble de l'URL LDAP doit être entourée de
1161 <p>lorsqu'une connection a été établie avec un serveur, elle
1162 reste active pendant toute la durée de vie du processus
1163 <program>httpd</program>, ou jusqu'à ce que le serveur LDAP
1164 cesse de fonctionner.</p>
1166 <p>Si le serveur LDAP cesse de fonctionner, et ainsi
1168 connexion existante, <module>mod_authnz_ldap</module> tentera
1169 de se reconnecter en commençant par le premier serveur de la
1170 liste, et ainsi de suite avec les serveurs redondants
1171 suivants. Notez que ce processus n'a rien à voir avec une
1172 véritable recherche de type round-robin.</p>
1176 <dd>Le DN de la branche de l'annuaire à partir de laquelle
1177 toutes les recherches seront lancées. Il doit au moins
1178 correspondre à la racine de votre annuaire, mais vous pouvez
1179 aussi indiquer une branche plus spécifique.</dd>
1183 <dd>Il s'agit de l'attribut à utiliser pour la recherche.
1185 2255 autorise une liste d'attributs séparés par des virgules,
1186 seul le premier sera retenu, sans tenir compte des autres
1187 attributs fournis. Si aucun attribut n'est fourni, l'attribut
1188 par défaut est <code>uid</code>. Il est judicieux de choisir un
1189 attribut dont la valeur sera unique parmi toutes les entrées de
1190 la branche de l'annuaire que vous aurez définie. Tous les
1191 attributs spécifiés seront enregistrés dans des variables
1192 d'environnement avec le préfixe AUTHENTICATE_, afin de pouvoir
1193 être utilisés par d'autres modules.</dd>
1195 <dt>portée</dt>
1197 <dd>Il s'agit de la portée de la recherche. Elle peut prendre
1198 les valeurs <code>one</code> ou <code>sub</code>. Notez que la
1199 RFC 2255 supporte aussi une portée de valeur <code>base</code>,
1200 mais cette dernière n'est pas supportée par le module. Si la
1201 portée n'est pas définie, ou si elle est définie à
1202 <code>base</code>, c'est la valeur de portée par défaut
1203 <code>sub</code> qui sera utilisée.</dd>
1207 <dd>Il s'agit d'un filtre de recherche LDAP valide. Si aucun
1208 filtre n'est spécifié, le filtre par défaut
1209 <code>(objectClass=*)</code> sera utilisé, ce qui corrspond à
1210 une recherche de tous les types d'objets de l'arborescence. La
1211 taille des filtres est limitée à environ 8000 caractères (valeur
1212 de la macro <code>MAX_STRING_LEN</code> dans le code source
1213 d'Apache), ce qui s'avère plus que suffisant pour la plupart des
1217 <p>Pour une recherche, les attribut, filtre et nom d'utilisateur
1218 fournis par le client HTTP sont combinés pour créer un filtre de
1219 recherche du style :
1220 <code>(&(<em>filtre</em>)(<em>attribut</em>
1221 =<em>nom-utilisateur</em>))</code>.</p>
1223 <p>Par exemple, considérons l'URL
1224 <code>ldap://ldap.airius.com/o=Airius?cn?sub?(posixid=*)</code>.
1225 Lorsqu'un client tentera de se connecter en utilisant le nom
1226 d'utilisateur <code>Babs Jenson</code>, le filtre de recherche sera
1227 : <code>(&(posixid=*)(cn=Babs Jenson))</code>.</p>
1229 <p>On peut encore ajouter un paramètre optionnel pour permettre à
1230 l'URL LDAP de surcharger le type de connexion. Ce paramètre peut
1231 prendre l'une des valeurs suivantes :</p>
1235 <dd>Établit une connexion non sécurisée sur le port LDAP par
1236 défaut, ce qui est équivalent à <code>ldap://</code> sur le port
1239 <dd>Établit une connexion sécurisée sur le port LDAP sécurisé
1240 par défaut, ce qui est équivalent à <code>ldaps://</code>.</dd>
1241 <dt>TLS | STARTTLS</dt>
1242 <dd>Établit une connexion sécurisée par élévation de niveau sur
1243 le port LDAP par défaut. Cette connexion sera initialisée sur le
1244 port 389 par défaut, puis élevée à un niveau de connexion
1245 sécurisée sur le même port.</dd>
1248 <p>Voir plus haut pour des exemples d'URLs définies par la directive
1249 <directive module="mod_authnz_ldap">AuthLDAPURL</directive>.</p>
1251 </directivesynopsis>