07. [15p] Configurare suport de LDAP în DokuWiki

Folosind conturile de mai sus putem realiza autentificarea în diverse servicii care folosesc ca backend de autentificare LDAP. Un astfel de serviciu este wiki-ul de tipul DokuWiki.

Pe stația client este instalat și configurat serverul web Apache cu suport PHP și pachetul php5-ldap care oferă implementarea clientului de LDAP în PHP. Alte module (userdir, ssl) sunt configurate și activate.

Vom configura o instanță de DokuWiki în contul utilizatorului student de pe stația client. În directorul home al utilizatorului student găsiți creat directorul public_html/dokuwiki/ unde vom instala instanța de DokuWiki. Pentru instalarea instanței intrăm în directorul admin-public.git/dokuwiki/ din directorul home al utilizatorului student și rulăm scriptul de instalare dw-install. Întâi rulăm scriptul fără argumente ca să vedem ce opțiuni sunt disponibile:

student@ldap-client:~/admin-public.git/dokuwiki$ ./dw-install
DokuWiki basic installation script
  Usage:
    ./dw-install installation-directory download-url wiki-url
  Sample usage:
    ./dw-install ~/public_html/dw-test/ http://www.splitbrain.org/_media/projects/dokuwiki/dokuwiki-2011-05-25a.tgz http://swarm.cs.pub.ro/~razvan/dw-test

Apoi rulăm scriptul pentru realizarea instalării efective:

student@ldap-client:~/admin-public.git/dokuwiki$ ./dw-install ~/public_html/dokuwiki/ http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz http://192.168.0.3/~student/dokuwiki
 
* Logging information to /tmp/tmp.anntIlR19E.
* Using download link http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
  * Downloading DokuWiki ... done.
* Preparing installation folder /home/student/public_html/dokuwiki/ ... done.
* Installing plugins
  * Installing plugin: Creole ... done.
  * Installing plugin: Google Analytics ... done.
  * Installing plugin: Include ... done.
  * Installing plugin: Index-Menu ... done.
  * Installing plugin: Display-Wiki-Page ...done.
  * Installing plugin: authsplit ...done.
  * Installing plugin: authchained ...done.
 
Installation complete.
1. Open in web browser: http://192.168.0.3/~student/dokuwiki/install.php
2. Fill required information to complete the basic installation.
3. Remove /home/student/public_html/dokuwiki//install.php.bak file.
4. Run:
   ./dw-post-install /home/student/public_html/dokuwiki/ /~student/dokuwiki/

Apoi parcurgem pașii de mai sus (1, 2, 3, 4) ca să definitivăm instalarea. În acest moment, la adresa http://192.168.0.3/~student/dokuwiki/ poate fi accesat wiki-ul. Se poate face autentificarea cu utilizatorul indicat la pasul 1, în interfața web de instalare/configurare a DokuWiki.

Pentru a realiza suport de autentificare prin LDAP folosim indicațiile de pe site-ul DokuWiki.

Pentru început, adăugăm în fișierul de configurare /home/student/public_html/dokuwiki/conf/local.php suportul pentru autentificarea LDAP, prin adăugarea liniilor:

$conf['authtype']       = 'authldap';
$conf['plugin']['authldap']['server']      = 'ldaps://192.168.0.2';
$conf['plugin']['authldap']['version']     = 3;
$conf['plugin']['authldap']['usertree']    = 'dc=labs,dc=cs,dc=pub,dc=ro';
$conf['plugin']['authldap']['grouptree']   = 'dc=labs,dc=cs,dc=pub,dc=ro';
$conf['plugin']['authldap']['userfilter']  = '(&(uid=%{user})(objectClass=posixAccount))';
$conf['plugin']['authldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))';

Dacă reaccesăm acum pagina instanței de wiki (http://192.168.0.3/~student/dokuwiki/), vom primi mesajul “User authentication is temporarily unavailable. If this situation persists, please inform your Wiki Admin.” Pentru a rezolva această problemă activăm suportul pentru LDAP în fișierul /home/student/public_html/dokuwiki/conf/plugins.local.php și activăm linia corespunzătoare modulului LDAP:

$plugins['authldap']  = 1;

Întrucât fișierul /home/student/public_html/dokuwiki/conf/plugins.local.php este posibil deținut de utilizatorul www-data, nu-l veți putea modifica. Îl puteți în schimb șterge. Pentru a-l putea edita urmați pașii

  1. Creați o copie a fișierului.
  2. Ștergeți fișierul.
  3. Redenumiți copia în numele fișierului.
  4. Editați fișierul.

Comenzile sunt următoarele:

student@ldap-client:~/public_html/dokuwiki/conf$ cp plugins.local.php tmp.plugins.php
student@ldap-client:~/public_html/dokuwiki/conf$ rm plugins.local.php 
rm: remove write-protected regular file ‘plugins.local.php’? y
student@ldap-client:~/public_html/dokuwiki/conf$ mv tmp.plugins.php plugins.local.php
student@ldap-client:~/public_html/dokuwiki/conf$ vi plugins.local.php

În acest moment configurația este finalizată, iar autentificarea pe instanța de wiki (accesibilă la http://192.168.0.3/~student/dokuwiki/) va putea fi realizată folosind conturile de utilizatori LDAP adăugate atnterior.