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
-
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.