Table of Contents
LDAP integratie
context
dit document beschrijft hoe je DokuWiki instelt zodat gebruikers voortaan met hun LDAP gebruiker/wachtwoord kunnen aanmelden. Biedt het grote voordeel dat je bestaande gebruikers kunt gebruiken en dus geen extra DokuWiki gebruikers moet aanmaken. Ook toegangsrechten op DokuWiki kunnen we op die manier instellen.
systeemvereisten
- verbindingsinstellingen van LDAP:
- naam van de server en poort waarop die luistert
- gebruiker die de BIND maakt (indien geen anonieme LDAP)
- plaats in LDAP waar gebruiker/groepen te vinden zijn
- een LDAP browser waarmee je je LDAP kunt bevragen. Apache Directory Studio is goed gerief.
- beheerder toegang op DokuWiki
- root toegang op de Linux waarop DokuWiki draait.
installatie
Linux server
- meld aan als root
- installeer volgende pakketten:
- php-ldap
- php-net-ldap3
- ldap-utils
- tshark
- controleer verbinding naar je LDAP server:
telnet <ip_ldapserver> 389 (of 636)
- voer een LDAP query uit (lijst van gebruiker):
ldapsearch -H “ldaps:<ip_ldapserver>” -x -b “ou=Users,o=<BASEDIR>,dc=<jouwdomein>,dc=<extentie>” -D ”<BIND gebruiker>“ -W ”(objectClass=posixGroup)“
Belangrijk is dat je vanaf je Linux LDAP queries kunt uitvoeren. Zorg dat dit probleemloos werkt voor je DokuWiki configureert. Troubleshoot voor je verdergaat!
Dokuwiki
- meld aan als admin
- ga naar Admin > Extension Manager > LDAP Auth Plugin: Enable
- ga naar Admin > Configuration Settings > Authentication > Authentication backend: authldap
- ga naar Admin > Configuration Settings > Authentication > Superuser: @<ldap_groep>
- ga naar Admin > Configuration Settings > Plugin > Authldap
- vul de gegevens van je LDAP in.
- De voorgestelde waarden zijn in grote mate bruikbaar. In mijn geval gaven de groupfilters geen resultaten weer, waardoor ik het groepsprofiel van de aangemelde gebruiker niet terug kreeg. Start in dat geval je LDAP browser en zoek daar de correct waarden op.
- zet zeker de waarde Display additional debug information on errors“ aan. Dat helpt om fouten bij de verbinding op te lossen.
- hieronder een voorbeeld van mijn LDAP configuratie voor mijn Jumpcloud LDAP. (ik weet dat ik zou moeten obfusceren, maar dat maakt je screenshot zo vies en de LDAP is toch met BINDuser beveiligt …)
- ga naar Admin > Configuration Settings > Authentication > Authentication backend: authldap
- ga naar Admin > Configuration Settings > Authentication > Password encryption method: md5
- meld af als admin
- meld nu aan met een LDAPgebruiker.
- analyseer de debug output.
- LDAP server gaat op zoek naar de gebruiker
- resultaat van de zoekactie
- LDAP server zoekt groepen van betreffende gebruiker op
- resultaat van de zoekactie
post installatie
Als alles goed blijkt te werken, zet debug dan uit:
- ga naar Admin > Configuration Settings > Plugin > Authldap
- zet de waarde Display additional debug information on errors” uit.
problemen, problemen
Niets lukt meteen. Bovenstaand voorbeeld was dan ook het resultaat van behoorlijk wat proberen. Hieronder de eerste hulp
authenticatie
als de authenticatie module volledig kapot is, kan je best je aanpassing terug draaien door onderstaande bestanden te hernoemen:
- /var/www/dokuwiki/conf/local.php.bak > /var/www/dokuwiki/conf/local.php
- /var/www/dokuwiki/conf/plugins.php.bak > /var/www/dokuwiki/conf/plugins.php
- /var/www/dokuwiki/conf/users.auth.php.bak > /var/www/dokuwiki/conf/users.auth.php
LDAP verbinding
- monitor het netwerk verkeer tussen Linux en LDAP:
tshark -f “host <ip_ldap>”
- thark toont je de hele verbinding tussen Linux server en je LDAP server. Vaak vind je daar al een eerste aanwijzing
LDAP query
- voer de query die door DokuWiki wordt uitgevoerd uit in je LDAP browser.
- controleer of de ingestelde filters/paden overeenkomen met de structuur van je LDAP tree. Zo staan in Jumpcloud LDAP groepen niet in de OU Groups, maar in de OU Users. Groeplidmaatschap wordt niet uitlezen in de objectclass PosixGroepen maar in groupOfNames. Zoek en ge zult vinden, mijn zoon.