Il y a quelques temps j’ai dû ouvrir à des personnes externes un site de gestion d’incidents ( trac). Il se trouve que nous gérons les clients comme des contacts dans notre système openldap.
En gros un client a type a comme structure dans ldap :
dn: cn=jean Filemonpul,ou=clients,ou=Users,dc=masociete,dc=com
cn: jean Filemonpul
givenname: jeanfil
mail: jean.filemonpul@parlespieds.com
mobile: +33473000011
objectclass: inetOrgPerson
objectclass: extensibleObject
objectclass: person
objectclass: mailAccount
objectclass: top
ou: client
sn: filmonpul
uid: jfil
userpassword: {MD5}9×2+54ef34zeLOL4OneqsqsrSUgXUlsdsg==se
Par opposition, un utilisateur interne a cette structure:
dn: cn=pikki@masociete.com,ou=Users,dc=masociete,dc=com
cn: pikki@masociete.com
givenname: pikki
mail: pikki@masociete.com
mailbox: /home/vmail/masociete.com/pikki
mailenable: OK
mailuserquota: 1048576
mobile: +336XXXXXXXX
objectclass: inetOrgPerson
objectclass: extensibleObject
objectclass: person
objectclass: mailAccount
objectclass: top
ou: masociete
sn: pikki
uid: pikki
userpassword: {MD5}q09j+fqgfg4645refgzereza33454==
On veut donc autoriser l’accès au gestionnaire d’incident ( trac) à ces deux profils.
Pour cela, dans le fichier de configuration dans /etc/apache2/sites-enabled on va utiliser l’instruction Require ldap-filter dont la doc est à cette adresse .
Le truc est de savoir si la requête ldap va fonctionner ou pas. pour cela j’ai testé cette requete:
ldapsearch -W -x -D « cn=moimeme,dc=masociete,dc=com »
'(|(ou=masociete)(ou=client))'
qui veut dire: << cherche toutes les entrées du ldap ayant comme "ou" soit "masociete", soit "client" >> .Nickel, il me renvoie bien des entrées. Du coup, je me dis, je vais mettre ça dans mon fichier de config apache :
Require ldap-filter (|(ou=client) (ou=masociete))
katastrof, en rechargeant apache( service apache2 reload) , impossible de se connecter ni en tant que client , ni en tant qu’utilisateur.
Voici mon fichier de configuration:
ServerAdmin admin-system@masociete.com
ServerName tickets.masociete.com
DocumentRoot /var/www/tickets
Options FollowSymLinks MultiViews
AllowOverride AuthConfig
Options +SymLinksIfOwnerMatch
AllowOverride All
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/trac/error.log
LogLevel warn
CustomLog /var/log/apache2/trac/access.log combined
ServerSignature On
#set up Trac handling
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/tickets
PythonOption TracUriRoot /
PythonPath « sys.path + [‘/var/www/tickets’] »
AuthType Basic
AuthName « LDAP auth »
AuthBasicProvider ldap
AuthLDAPUrl ldap://127.0.0.1/ou=Users,dc=masociete,dc=com?uid?sub
AuthLDAPBindDN « cn=rechercheuser,dc=masociete,dc=com »
AuthLDAPBindPassword XXXXXXX
Require ldap-filter |(ou=client) (ou=masociete)